This website requires JavaScript.
448bb59672
chore(wolf): record the CI, branch and release conventions
main
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 12:43:52 -03:00
a6719c6018
ci: fix the release job being skipped, and take the notes from the changelog
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 12:27:08 -03:00
1bcbe4d774
Merge ci/reuse-images: tags and docs-only merges reuse the published images
v1.0.0
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 12:20:51 -03:00
a3e071bb03
ci: reuse published images when the image sources are unchanged
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 12:20:51 -03:00
2db5915061
Merge release/v1.0.0: changelog, one .env.example, release docs, faster CI, Gitea release job
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 11:44:19 -03:00
5bbbb85128
release: 1.0.0, a changelog, one .env.example and the docs to match
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 11:36:22 -03:00
f500534ac6
chore: keep .superset out of the repository
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 11:23:00 -03:00
1aac8be531
ci: create a Gitea release when a v* tag is pushed
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 11:22:08 -03:00
5d4e7147ce
ci: cache what is rebuilt on every run
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 10:07:21 -03:00
0ff9aaaf88
Merge ci/gitea-registry: publish to the Gitea registry, workflows on Gitea Actions
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 09:59:03 -03:00
7baaab2fd7
test(auth): give real Argon2id hashing a 30s test budget
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 09:47:16 -03:00
a28a9bc9d4
ci: run Go tests as a non-root user
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 09:33:43 -03:00
c30d618b3f
ci: copy files into containers instead of bind-mounting, patch two advisories
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 09:22:42 -03:00
248e857b85
ci: rerun on the runner with a shared /workspace
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 09:11:32 -03:00
33fa05b019
ci: run Trivy from its official image and drop the gha cache
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 09:01:45 -03:00
91c5df433e
ci: build linux/amd64 under QEMU on the arm64 runner
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 08:56:34 -03:00
59363734ff
ci: publish images to the Gitea registry, use the gitea context
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 08:48:44 -03:00
9a722bc5ac
ci: publish images to the Gitea registry and move workflows to .gitea
Lucas Rayan and Claude Sonnet 5.5
2026-10-30 08:48:14 -03:00
fa2dcb578e
Merge docs/readme-style: a README with a face, and complete entity decoding in previews
Lucas Rayan and Claude Sonnet 5.5
2026-10-23 07:55:12 -03:00
1e06491019
docs: a README with a face, in English and Portuguese; decode every HTML entity in previews
Lucas Rayan and Claude Sonnet 5.5
2026-10-23 07:55:12 -03:00
8226c76d7a
Merge docs/update-2026-10: document the new webmail
Lucas Rayan and Claude Sonnet 5.5
2026-10-23 06:24:36 -03:00
58d6f8e9e2
docs: sessions, accounts, trusted senders, conversations, themes and the new reader
Lucas Rayan and Claude Sonnet 5.5
2026-10-23 06:24:36 -03:00
c00134f2eb
chore: keep the logo generator in the repository
Lucas Rayan and Claude Sonnet 5.5
2026-10-23 06:12:49 -03:00
8db69c5af9
Merge feat/viewer-and-logo: a drawn logo and a reader that suits both themes
Lucas Rayan and Claude Sonnet 5.5
2026-10-23 05:57:52 -03:00
fece870d49
feat(webmail): a better reader and a drawn logo
Lucas Rayan and Claude Sonnet 5.5
2026-10-23 05:57:52 -03:00
9e50b47b5d
chore(wolf): record what this stretch of work taught
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 22:44:54 -03:00
d29ecec8d9
Merge feat/new-interface: logo and icons, dark and light themes, command menu
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 22:33:15 -03:00
e667843b59
feat(webmail): the new interface - logo, dark and light themes, command menu
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 22:33:15 -03:00
6b97807856
Merge feat/conversations: conversations in cascade, answered marker, reply under the conversation, and Undo send that undoes
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 22:07:40 -03:00
897f0122f4
fix(webmail): Undo send really undoes, and a send is not made twice
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 22:05:43 -03:00
2080489319
feat(webmail): conversations - list, stacked reader, inline reply, settings switch
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 16:46:11 -03:00
86a69d1a96
refactor(webmail): the composer is a component, so a reply can be written under a conversation
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 16:41:59 -03:00
997dd8848f
feat(auth): conversation_view preference, on by default
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 16:40:36 -03:00
67d0c8aa5a
feat(protocols): conversations - thread_id and in_reply_to written at delivery, list and read APIs
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 16:38:36 -03:00
ff89e9dc44
chore(wolf): log the discard-draft bug
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 16:03:20 -03:00
657a43d612
fix(webmail): Discard really discards the draft
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 16:02:27 -03:00
d283ff6f8d
Merge feat/trusted-senders: a sender the mailbox trusts skips spam and always shows images, kept on the server
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 15:48:35 -03:00
d2611d39fa
feat(webmail): trusted senders on the server, Not spam, and a trust pill in the reader
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 15:48:35 -03:00
d7f9659b5e
feat(protocols): trusted senders are not filed as spam, when the message proves its sender
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 15:45:10 -03:00
b536ed13e7
feat(auth): trusted senders table and API
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 15:42:30 -03:00
cc0adcd94d
fix(auth,webmail): list a pre-accounts session in the switcher; preview as plain text
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 15:23:40 -03:00
026f24a64a
fix(auth): sign the webmail token for 30 days, not only its cookie
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 15:04:24 -03:00
54203d596e
Merge feat/persistent-sessions-accounts: 30-day sliding sessions, several accounts at once, mail rendered with its own styles
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 14:47:44 -03:00
641ab4bbe8
feat(webmail): keep a message's own stylesheet so designed mail renders as sent
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 14:45:34 -03:00
96e624dd12
feat(webmail): account switcher for the several signed-in accounts
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 14:44:50 -03:00
0efc8f096a
feat(auth): 30-day sliding webmail sessions and several accounts signed in at once
Lucas Rayan and Claude Sonnet 5.5
2026-10-22 14:42:59 -03:00
aea4c1ee5e
Merge fix/bimi-per-domain-urls: each domain's BIMI logo under its own URL, and the DNS publisher wired
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 18:53:50 -03:00
60c6f5731c
fix(bimi): each domain's logo under its own URL, and the publisher actually wired
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 18:49:52 -03:00
e3366ef09d
Merge feat/bimi-dns-reconcile: publish the BIMI record to Cloudflare and keep it in step with the logo
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 18:38:16 -03:00
6e49ca00e2
feat(bimi): reconcile the BIMI record to Cloudflare and keep it in step with the logo
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 18:17:07 -03:00
0ff9028927
Merge feat/bimi-studio-and-avatar-cache: BIMI logo studio, certificate hosting and instant profile photos
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 17:15:05 -03:00
e0e5b1b880
test(webmail): keep the byte-count test ASCII (lang-lint R9)
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 17:08:41 -03:00
dabd1568d1
feat(bimi): logo studio, certificate upload and a setup check in the console
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 17:04:35 -03:00
109b8360dd
feat(bimi): hold the certificate, check the whole setup, serve the VMC
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 16:50:33 -03:00
c0f556b190
fix(webmail): a new profile photo shows up everywhere at once
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 16:44:14 -03:00
d82cf71f5b
Merge branch 'refactor/mailbox-core'
Lucas Rayan
2026-10-16 13:47:10 -03:00
f2951c0ff4
docs: describe the mailbox core, its invariants and lock order
Lucas Rayan and Claude Sonnet 5.5
2026-10-16 13:36:21 -03:00
183191d18d
refactor(mail): one send path for Sent, a fixed lock order, and concurrency tests
Lucas Rayan
2026-10-16 13:30:59 -03:00
67bbe7a50a
refactor(mail): IMAP and the webmail read folders and messages through one MailStore
Lucas Rayan
2026-10-16 13:22:05 -03:00
a8941a6191
refactor(mail): one definition of the standard folders, and reconcile the drift
Lucas Rayan
2026-10-16 13:19:55 -03:00
caf52c0225
refactor(mail): one MailStore changes message state for every path
Lucas Rayan
2026-10-16 13:15:32 -03:00
e63b68acb2
test(mail): contract that every path must keep counters, modseq and quota true
Lucas Rayan
2026-10-16 13:12:24 -03:00
9c8b9c00fc
fix(smtp): keep a copy of every submitted message in the sender's Sent folder
Lucas Rayan
2026-10-16 12:51:46 -03:00
110a240cd9
fix(auth): app passwords now sign in SMTP, IMAP and POP3
Lucas Rayan
2026-10-16 09:21:08 -03:00
8e7c0abd0a
fix(lint): codigo so em ASCII (lang-lint R9) nos arquivos de destinatarios
Lucas Rayan and Claude Sonnet 5.5
2026-10-13 10:32:38 -03:00
931ddcd004
fix(deps): corrige CVEs HIGH/CRITICAL que bloqueavam o release
Lucas Rayan and Claude Sonnet 5.5
2026-10-13 10:27:37 -03:00
50a67531ba
feat(webmail,auth): leitor estilo Outlook, responder a todos, importantes e isolamento do admin de dominio
Lucas Rayan and Claude Sonnet 5.5
2026-10-13 10:09:55 -03:00
b5baf33a63
fix(bimi): as rotas existiam no protocols e o proxy nao as conhecia
Lucas Rayan and Claude Opus 5
2026-09-07 22:41:00 -03:00
c59548e311
Revert "revert: foto de perfil e BIMI, para restaurar o servico"
Lucas Rayan and Claude Opus 5
2026-09-07 22:29:12 -03:00
e93fa19bdd
fix(compose): o web nao declarava a porta, e o proxy adivinhava mal
Lucas Rayan and Claude Opus 5
2026-09-07 16:02:11 -03:00
e30d000e43
revert: foto de perfil e BIMI, para restaurar o servico
Lucas Rayan and Claude Opus 5
2026-09-07 08:45:16 -03:00
3e06162fa0
fix(test): TestBccNeverAppearsInTheHeaders falhava por acaso
Lucas Rayan and Claude Opus 5
2026-09-07 08:18:51 -03:00
6a602ab88f
feat(bimi): logotipo do dominio validado, alojado e publicado no DNS
Lucas Rayan and Claude Opus 5
2026-09-07 08:12:11 -03:00
fcfee6a3f9
feat(avatar): foto de perfil com editor de recorte circular
Lucas Rayan and Claude Opus 5
2026-09-07 08:04:12 -03:00
82b4c8ce17
docs: como ligar DANE, e o que tem de ser verdade antes
Lucas Rayan and Claude Opus 5
2026-09-01 12:30:56 -03:00
712885c091
feat(tls): o painel diz o digest que o registo TLSA tem de carregar
Lucas Rayan and Claude Opus 5
2026-09-01 12:08:25 -03:00
c06691a056
fix(mail): relatorios DMARC nao mostravam o clipe de anexo
Lucas Rayan and Claude Opus 5
2026-08-24 12:28:37 -03:00
7f8d9b7ff1
fix(tls): sem watcher nao ha veredito, e o README passa a explicar os modos
Lucas Rayan and Claude Opus 5
2026-08-24 11:59:11 -03:00
1e7c6a118c
feat(admin): repor palavra-passe e remover segundo factor no modal
Lucas Rayan and Claude Opus 5
2026-08-24 11:43:53 -03:00
bb12e603a3
fix(admin): dominio trocado ao criar, apelidos escondidos e quota a zero
Lucas Rayan and Claude Opus 5
2026-08-24 11:02:02 -03:00
f801894f53
fix(admin): travessao literal na pagina de testes quebrava o lint de idioma
Lucas Rayan and Claude Opus 5
2026-08-24 09:43:19 -03:00
2b92abd185
feat(admin): paginacao na interface, edicao de utilizadores e pagina de testes
Lucas Rayan and Claude Opus 5
2026-08-24 09:36:35 -03:00
52bf43b74f
feat(admin): paginacao e filtragem no servidor, e edicao de utilizadores
Lucas Rayan and Claude Opus 5
2026-08-24 09:19:49 -03:00
136f9f339a
fix(tls): o painel de seguranca estava vazio em qualquer modo menos um
Lucas Rayan and Claude Opus 5
2026-08-24 09:11:49 -03:00
9689f26dda
fix(dns): a lista dizia PENDING, nunca verificado, com tudo verificado
Lucas Rayan and Claude Opus 5
2026-08-24 08:47:38 -03:00
47c3700380
fix(dns): reconciliar reescrevia os mesmos registos a cada passagem
Lucas Rayan and Claude Opus 5
2026-08-24 08:34:14 -03:00
9ce5fcafaa
fix(dns): a consola dizia que faltava o token da Cloudflare, e nao faltava
Lucas Rayan and Claude Opus 5
2026-08-24 08:15:45 -03:00
9519be889d
fix(admin): o botao de escolher dominio dizia "Adicionar"
Lucas Rayan and Claude Opus 5
2026-08-23 16:01:11 -03:00
2b369ab373
fix(dns): o botao de reconciliar nao criava registo nenhum
Lucas Rayan and Claude Opus 5
2026-08-23 15:52:27 -03:00
8227fe2b97
fix(dns): o painel dizia que faltavam registos que estavam publicados
Lucas Rayan and Claude Opus 5
2026-08-23 11:40:54 -03:00
64f1a2e145
fix(webmail): a barra lateral mostra so o que esta por ler
Lucas Rayan and Claude Opus 5
2026-08-22 15:30:17 -03:00
e4491479ef
fix(vacation): descodifica o assunto e responde a cada pessoa uma vez
Lucas Rayan and Claude Opus 5
2026-08-22 15:15:58 -03:00
866bd21846
fix(vacation): a resposta de ausencia passa a ser uma resposta
Lucas Rayan and Claude Opus 5
2026-08-22 14:43:52 -03:00
508cc7c944
fix(webmail): a lista de destinos deixava de fora as pastas do utilizador
Lucas Rayan and Claude Opus 5
2026-08-22 14:12:27 -03:00
be933d241c
chore: mantém ASCII o código dos testes novos
Lucas Rayan and Claude Opus 5
2026-08-22 13:59:34 -03:00
caec501ec5
fix(sieve): reconhece endereços automáticos com sufixo
Lucas Rayan and Claude Opus 5
2026-08-22 13:49:33 -03:00
d403c47a71
feat(webmail): pastas próprias na barra lateral e regras em linguagem comum
Lucas Rayan and Claude Opus 5
2026-08-22 13:48:10 -03:00
42420a7de2
feat(regras): aplica as regras na entrega e envia a resposta de ausência
Lucas Rayan and Claude Opus 5
2026-08-22 13:35:17 -03:00
b9ebf606e1
feat(sieve): motor que avalia as regras na entrega
Lucas Rayan and Claude Opus 5
2026-08-22 13:24:20 -03:00
f179cb1f27
fix(webmail): acertos de interface e mover mensagens entre pastas
Lucas Rayan and Claude Opus 5
2026-08-22 13:18:08 -03:00