feat(webmail): pastas próprias na barra lateral e regras em linguagem comum

Regras. A tela pedia um tipo de correspondência do Sieve pelo nome -
:contains, :is, :matches (regex) - e colava o valor escrito
diretamente num script. Punha uma linguagem de padrões à frente de
quem só queria dizer "o que vem do banco vai para Faturas", e bastava
uma aspa no valor para o script deixar de fazer parse, desativando
silenciosamente todas as regras de uma vez.

O vocabulário passa a ser o de quem escreve: um campo, uma condição em
português, um valor e uma ação. Os curingas são gerados a partir de
"começa com" e "termina com" - ninguém os escreve, e um asterisco
escrito por acaso continua a ser um asterisco. A pasta de destino é
escolhida de uma lista das pastas que existem mesmo, em vez de ser
escrita à mão: antes uma regra podia nomear uma pasta inexistente e
nunca disparar, sem dizer porquê.

A ordem passa a ser visível e alterável, porque a primeira regra que
arquiva uma mensagem decide para onde ela vai.

Um script que esta tela não consegue exprimir - escrito à mão, ou por
um cliente de secretária sobre ManageSieve - é mostrado tal como está,
em vez de ser reescrito na coisa mais parecida que este formulário sabe
dizer, o que mudaria em silêncio o que o correio de alguém faz.

Pastas próprias. Existiam na base de dados e as regras podiam arquivar
nelas, mas a barra lateral listava só as seis fixas, portanto não havia
como ver uma - nem como criar. Criar fica onde a vontade aparece, na
própria barra; apagar avisa que leva as mensagens junto, porque leva.

Encontrado a escrever isto: o motor tratava "\\*" como barra seguida de
curinga em vez de um asterisco literal. Como é esta tela que gera os
curingas, uma regra sobre um assunto com "50% *" teria correspondido a
todos os assuntos começados por "50% ". Corrigido no motor, com testes
dos dois lados.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Lucas RayanandClaude Opus 5 committed 2026-08-22 13:48:10 -03:00
1 parent 42420a7de2
commit d403c47a71
12 files changed
+828 -80

No files matched your search

+24 -1
View File
@@ -257,7 +257,24 @@
"vacationIntro": "Reply automatically to incoming mail while you are away.",
"vacationSubjectLabel": "Reply subject",
"vacationTitle": "Out-of-office auto-reply",
"valuePlaceholder": "Value to match..."
"valuePlaceholder": "Value to match...",
"ruleField": "Field",
"ruleCondition": "Condition",
"ruleValue": "Value",
"ruleValuePlaceholder": "e.g. invoice",
"fieldTo": "To",
"fieldCc": "Cc",
"condContains": "Contains",
"condIs": "Is exactly",
"condStartsWith": "Starts with",
"condEndsWith": "Ends with",
"condNotContains": "Does not contain",
"actionMarkRead": "Mark as read",
"ruleMoveUp": "Move up",
"ruleMoveDown": "Move down",
"ruleOrderNote": "Rules are applied in order, and the first one that files a message decides where it goes.",
"foreignScriptTitle": "Rules written elsewhere",
"foreignScriptIntro": "These rules were written by hand or by a desktop client and use features this screen cannot show. They are still applied to your mail. Editing them here would change what they do, so they are shown as they are."
},
"ui": {
"accountLocked": "Locked",
@@ -337,5 +354,11 @@
"underline": "Underline",
"insertLink": "Link",
"insertImage": "Image"
},
"folders": {
"new": "New folder",
"newPlaceholder": "New folder…",
"delete": "Delete {name}",
"deleteConfirm": "Delete the folder \"{name}\" and every message in it? This cannot be undone from the interface."
}
}