Commit graph

24 commits

Author SHA1 Message Date
randogoth
c887412432 docs: document the onboarding/settings rework and the string pipeline 2026-10-08 23:44:01 +03:00
randogoth
70087fa470 feat: base UI strings on carrier's shared Fluent source
Vendors carrier's locales/en-US/main.ftl (extended to cover gsmol's
remaining strings) as the single source both clients draw wording
from, adds a dependency-free .ftl-to-JSON build step (devbox run
locale) since the file only ever uses Fluent's flat subset, and
replaces every hardcoded string in index.html/app.js with a lookup
into the generated dictionary.

Along the way: removes connect()'s requirePin check, which turned out
to be unreachable under the app's own invariants (every call site
already guarantees its target host is pinned before calling it), and
fixes a leftover call to store.setMasterSaved — removed in the earlier
settings redesign — that was silently breaking onboarding's "I saved
it" button.
2026-10-08 23:43:59 +03:00
randogoth
80aca8a29f feat: refuse to learn a first-contact key from an unpinned server
Adds an opt-in "require a pinned server" setting that gates the one
RESOLVE path that currently trusts whatever key a server hands back
for a brand-new, hand-typed address — self-certifying addresses and
already-known contacts are structurally exempt. A refusal shows an
inline recovery card in compose to fetch, compare, and pin the key
without losing the draft.

Also closes two adjacent gaps: a self-certifying address could
silently overwrite an already-trusted contact's key (now asks,
showing both fingerprints), and a contact's detail view now names its
server and pin state.
2026-10-08 22:12:36 +03:00
randogoth
84397a3fdd feat: restructure settings into identity, server, backup and advanced tabs
Drops the per-server pin list down to the one server your account is
bound to, adds an enforced network timeout, and replaces the global
status toast inside settings with inline feedback and a reusable
confirm dialog for rotate/log out. Mail-fetching preferences move into
the server tab; the now-superseded claim/recall forms are gone since
onboarding covers both.
2026-10-08 21:24:05 +03:00
randogoth
fb0ca5c8cc feat: replace setup checklist with a five-screen onboarding flow
Generate-or-recover an identity, establish server trust, then bind an
address — each its own screen with no bleed-through, replacing the
old intro/restore cards plus the post-hoc setup checklist banner.
2026-10-08 20:48:09 +03:00
randogoth
1710d7b144 feat: rework first run as a setup checklist and split settings into tabs 2026-10-06 12:13:09 +03:00
randogoth
6f82a84b69 fix: use stdenv.hostPlatform.system, not the removed pkgs.system
nixpkgs renamed it, and the shim warns on every evaluation that imports this
module, so the noise lands on consumers rebuilding their systems rather than
here.
2026-10-06 09:59:12 +03:00
randogoth
d6fa097626 feat: adopt smolmail protocol 1.1 with accept tokens and leave-mail-on-server 2026-09-27 15:18:07 +03:00
randogoth
eef7bf9b1d feat: auto-verify signed Reply-To on fetch; seal the export to the identity 2026-09-26 22:14:45 +03:00
randogoth
1385ecb56c feat: pin a server from onboarding, derived from the address 2026-09-26 21:37:17 +03:00
randogoth
3576e48b99 feat: recall-on-restore, logout, and mail/contact export-import 2026-09-26 21:08:38 +03:00
randogoth
a3378def50 fix: send Cache-Control so a stale Nix mtime can't pin visitors to old JS 2026-09-26 20:42:48 +03:00
randogoth
a24c143fd0 feat: recall an already-registered address without REGISTER 2026-09-26 20:31:27 +03:00
randogoth
a244dab94e feat: add a Caddy reverse-proxy option to the NixOS module 2026-09-26 20:12:03 +03:00
randogoth
4075afbb11 feat: bake a deploy-time server pin into the client via presetServer 2026-09-26 20:00:16 +03:00
randogoth
db83ec1289 feat: package the bridge as a nix flake with a NixOS deploy module 2026-09-26 19:37:48 +03:00
randogoth
80133da100 feat: harden bridge origin/CSP, cache decryption, and overhaul the web client UI 2026-09-26 19:05:05 +03:00
randogoth
f637d5be57 fix: contact rows, narrow sender labels and stale reader pane 2026-09-26 17:45:20 +03:00
randogoth
9842302c50 feat: restyle the ui in gmail's design language 2026-09-26 16:52:40 +03:00
randogoth
a6b972fec9 test: assert the reference client's reply address in e2e 2026-09-26 16:45:41 +03:00
randogoth
aab98ff598 feat: carry a signed Reply-To address for first contact 2026-09-26 16:36:12 +03:00
randogoth
fd2d9298f8 feat: name an unknown sender from the reader to enable replies 2026-09-26 16:29:38 +03:00
randogoth
025963371f fix: name unknown senders by fingerprint 2026-09-26 16:27:40 +03:00
randogoth
9798d38040 feat: browser client for smol mail 2026-09-26 15:59:31 +03:00