Commit Graph
241 Commits
Author SHA1 Message Date
Bot of Thomas Güttler 084ba2b7ba fix: increase Play Store upload timeout and add retries (#40) 2026-05-14 09:46:59 +02:00
Bot of Thomas Güttler 6d83a5670d fix: upgrade workmanager to 0.9.0+3 to fix Kotlin 2.x AAB build failure (#38) 2026-05-14 09:03:17 +02:00
Bot of Thomas Güttler 1d93eb10f3 fix: enable core library desugaring for flutter_local_notifications (#37) 2026-05-14 08:39:42 +02:00
Bot of Thomas Güttler f9030dc1e5 perf(P4): add indexes on mailboxes and threads for observeMailboxes/observeThreads (#36) 2026-05-14 08:37:00 +02:00
Bot of Thomas Güttler 92e91d9fad fix(R3): wrap flutter_html in error boundary to prevent screen crash (#35) 2026-05-14 08:27:02 +02:00
Bot of Thomas Güttler 1117cadf2a feat(D2): add task check-coverage and enforce coverage gate in check-fast (#34) 2026-05-14 05:29:41 +02:00
Bot of Thomas Güttler 3125713e6b refactor(A2): extract shared EmailTile widget (#33) 2026-05-14 05:20:11 +02:00
Bot of Thomas Güttler 4f3a5434cc test(T4): extend migration tests to cover all schema versions up to v24 (#32) 2026-05-14 05:09:15 +02:00
Bot of Thomas Güttler 17e404407f test(T2): add widget tests for ThreadDetailScreen and SearchScreen (#31) 2026-05-14 04:58:59 +02:00
Bot of Thomas Güttler dff2b5e2ca test(T1): add edge-case coverage for EmailRepositoryImpl (#30) 2026-05-14 04:43:11 +02:00
Bot of Thomas Güttler 7096c27ede feat(U6): show sync status indicator in email list app bar (#29) 2026-05-14 04:23:07 +02:00
Bot of Thomas Güttler 2715c1613f feat(U4): background sync and local notifications for new mail (#28) 2026-05-14 04:06:35 +02:00
Bot of Thomas Güttler 0e291b509b feat(U2): sync local drafts with IMAP Drafts folder (#27) 2026-05-14 00:27:47 +02:00
Bot of Thomas Güttler 7421855922 feat(U1): show Unsubscribe chip in email detail (#26) 2026-05-14 00:09:14 +02:00
Bot of Thomas Güttler 855f9a3a6d feat(S2): validate IMAP/SMTP hostnames against injection (#25) 2026-05-13 23:49:30 +02:00
Bot of Thomas Güttler a0c35c647a test(R6): backoff stress tests for AccountSyncManager (#24) 2026-05-13 23:37:40 +02:00
Bot of Thomas Güttler fc592c475f feat(R4): dismissible sync error banner in email list (#23) 2026-05-13 23:14:44 +02:00
Bot of Thomas Güttler beae8d8843 feat(R2): force full sync escape hatch in account edit screen (#22) 2026-05-13 22:57:36 +02:00
Bot of Thomas Güttler eddcc17c41 fix(R1): persist undo history across restarts (#20) 2026-05-13 22:35:08 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 3a63f9adb4 fix: use Unix timestamp as Android versionCode
git rev-list --count returns 1 in shallow CI clones. A Unix timestamp
(~1.747B, well under Android's 2.1B max) is always increasing and works
in both CI shallow checkouts and local full clones.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 19:31:25 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 2f376ef33c fix: use git commit count as Android versionCode
Play Store rejects versionCode 1 since it was already used. Deriving
the build number from `git rev-list --count HEAD` gives a monotonically
increasing versionCode on every push with no manual bumping required.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 19:23:24 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 3a69c39776 ci: trigger release run after enabling Play Store API
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 19:15:54 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 a968b9ff8c fix: add _codegen dep to build-android-bundle
Missing generated .g.dart files caused flutter build appbundle to fail.
_codegen already implies _pub-get via its dep chain.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 18:57:19 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 483b9d93e9 ci: install Android SDK on runner if not already cached
First run downloads cmdline-tools + platform-tools + android-34; subsequent
runs find the SDK at ~/Android/Sdk and skip in under a second.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 18:46:29 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 65aba81952 feat: enable Play Store CI deploy via Google Play API
- Add ndk debugSymbolLevel=FULL to release build type (opt-B for debug symbols)
- Add google-api-python-client to Nix devshell
- Add scripts/deploy_playstore.py to upload AAB to internal track
- Add deploy-android-bundle task to Taskfile
- Enable release.yml (remove if:false, wire up task deploy-android-bundle)
- Fix forbidden-files pre-commit hook to run task via nix develop (like dart-check)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 17:13:38 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 ebd6a27c1a fix: use task build-linux-release in CI instead of raw fvm call
The direct fvm call bypasses codegen and uses stale runner build cache.
task build-linux-release runs _codegen as a dep and passes --no-pub.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:21:52 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 dd5a4dff5e fix: revert gitea.ref to github.ref — Forgejo Actions uses github context
Forgejo Actions is GitHub Actions-compatible; expressions use github.*
not gitea.*. gitea.ref causes a YAML schema validation error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:06:22 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 035d18b8e8 docs: update AGENTS.md with fgj tool and mark privacy policy done
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 11:00:09 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 bfb00e028a fix: correct github→gitea/codeberg refs and add privacy policy page
- Replace github.ref with gitea.ref in ci.yml (Forgejo uses gitea context)
- Fix README.md CI path from .github/ to .forgejo/
- Use codeberg icon instead of github icon in hugo.toml social link
- Add Privacy Policy page required for Google Play Store submission
- Add Privacy Policy link to website nav menu

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 10:38:38 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 62032d7654 fix: show HTTP status in website-verify to distinguish 4xx from missing version
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:52:47 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 f813288270 ci: add workflow_dispatch trigger to website.yml
Allows manual website redeploy without touching website files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:43:10 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 1d3557d67b fix: drop nested nix develop in website-build to preserve env vars
HUGO_PARAMS_GITVERSION was stripped when website-build called
'nix develop --command hugo' from within an already-active nix shell
(nested nix develop resets the environment). Hugo is already on PATH
from the outer 'nix develop --command task website-deploy' in CI, and
locally tasks run from within 'nix develop' per AGENTS.md convention.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:42:06 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 8f7d33d885 feat: embed git hash in website and verify after CI deploy
- website/layouts/_partials/extend_head.html: injects <meta name="x-version">
  using HUGO_PARAMS_GITVERSION (set by Taskfile at build time)
- Taskfile: website-build sets HUGO_PARAMS_GITVERSION=<short HEAD>;
  new website-verify task runs scripts/website-verify.sh
- scripts/website-verify.sh: fetches homepage, retries 6x/10s, checks
  that the deployed version hash matches HEAD
- website.yml: Verify step after Deploy; scripts/website-verify.sh added
  to path trigger

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:32:46 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 a71e10d9db fix: correct enough_mail docs and website CI pipeline
enough_mail is a pub dependency, not a vendored package.
Add missing 'Enable Nix flakes' step to website.yml (matching ci.yml)
and remove redundant branch condition already handled by the trigger.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 09:17:37 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 76278d6f69 fix: CI _preflight, swap tea→fgj, add ci-logs helper
- flake.nix: replace tea with fgj (fetchurl of v0.4.0 linux_amd64 binary)
- flake.nix shellHook: export IN_NIX_SHELL=1 so that nix develop --command
  sets the variable that _preflight checks (nix develop does not set it
  automatically, unlike the old nix-shell)
- Taskfile.yml _preflight: use IN_NIX_SHELL check instead of DIRENV_DIR,
  which never worked in CI
- scripts/ci_logs.sh + task ci-logs: fetch raw Codeberg Actions job logs
  from the web-UI endpoint (API endpoint not available on Codeberg 15.0.0)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 06:05:55 +02:00
Thomas SharedInbox d58ed9ebc4 dummy commit to test CI 2026-05-12 22:29:15 +02:00
Thomas SharedInbox efdcab74d7 setup nix in CI, and reformat. 2026-05-12 21:55:06 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 8272b75b34 fix: add required trailing commas to satisfy require_trailing_commas lint rule
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-12 17:49:41 +02:00
Thomas SharedInbox 49737355b2 use ubuntu runner 2026-05-12 13:01:56 +02:00
Thomas SharedInbox 0c14f98a14 Configure Play Store roadmap and Hugo website with automated deployment 2026-05-12 09:10:21 +02:00
Thomas SharedInbox d4902d1395 Deploy via CI. 2026-05-12 08:15:47 +02:00
Thomas SharedInbox 7017947a9f ignore more files 2026-05-11 13:19:50 +02:00
Thomas SharedInbox 532bf7347b docs: record completion of Issue #14 in done.md 2026-05-11 08:38:19 +02:00
Thomas SharedInbox 58f4b13c6a ui: stabilize email list during selection (Issue #14) 2026-05-11 08:35:38 +02:00
Thomas SharedInbox 568b63de55 fix: refine undo log and remove delete confirmations (Issue #12)
- Remove delete confirmation dialogs in list and detail screens.
- Style Undo SnackBar action button with red text color.
- Enhance Undo Log screen to show email subject, sender, and action metadata.
- Add Undo support for Snooze action.
- Fix restoreEmails to preserve snooze metadata.
- Add unit test for Undo snooze logic.
2026-05-11 07:33:22 +02:00
Thomas SharedInbox e80a7c7a0e test: ensure migrations from v1 to v22 work correctly
- Add test/unit/migration_test.dart to verify schema upgrades and data preservation.
- Fix onUpgrade logic for syncLogs table to be idempotent.
- Add fromJson/toJson/copyWith to Account and Mailbox models.
- Update unit tests for models to increase coverage.
- Adjust coverage gate exclusions for integration-heavy files.
2026-05-11 07:21:15 +02:00
Thomas SharedInbox e52a386c33 fix: correct column naming in raw SQL indices (snake_case) 2026-05-10 22:26:33 +02:00
Thomas SharedInbox 9815e105d3 fix: improve crash reporting on Codeberg
- Pre-fill Codeberg issue with crash details (title and body).
- Remove unreliable canLaunchUrl check.
- Add SnackBar error handling if launch fails.
- Add https intent to Android queries manifest for better link visibility.
- Add widget test for CrashScreen.
2026-05-10 22:21:09 +02:00
Thomas SharedInbox 0895a79a33 fix: make snooze migration idempotent to avoid duplicate column error 2026-05-10 22:06:42 +02:00
Thomas SharedInbox b7ff02711b feat: implement snooze feature for IMAP and JMAP
- Add snoozedUntil and snoozedFromMailboxPath to Emails table.
- Implement snoozeEmail and wakeUpEmails in EmailRepository.
- Update IMAP and JMAP flush logic to handle snooze/unsnooze.
- Update sync logic to parse snz: keywords from server.
- Add SnoozePicker widget and integrate into UI.
- Add unit tests for Snooze logic.
2026-05-10 21:50:13 +02:00