123 Commits
Author SHA1 Message Date
Thomas SharedInboxandClaude Sonnet 4.6 6f030213a7 fix(ci): fetch last 50 commits so changelog has all entries
actions/checkout defaults to fetch-depth: 1 (shallow clone).
generate-changelog runs git log -n 50, so only one entry appeared
in the built app. Fetching 50 commits gives a complete changelog.

Closes #64

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 20:45:21 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 9686785abf docs(issue-template): remove auto-assigned State/Ready label
The user should set State/Ready manually when the issue is ready
to be worked on, not automatically on creation.

Closes #74

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 20:43:43 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 47bdf3ec35 fix(ci): reduce verbose output in CI jobs
- Add --no-warn-dirty to all nix develop calls to suppress Git dirty-tree warnings
- Switch integration test reporter from expanded to compact (per-test names suppressed on success)
- Show only summary line on integration test success, matching unit/widget test behavior

Closes #8

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 20:42:37 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 71a88358f5 docs: add issue template with label workflow reminder
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 18:53:26 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 3dbd8f53be fix(ci): move Play Store deploy into ci.yml; drop release.yml
workflow_run is not supported by Forgejo Actions — release.yml never
fired after CI passed.  Port the deploy-playstore job into ci.yml with
needs: check + if: main, matching the pattern already used by build-linux.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 17:11:00 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 f7e75cd5b6 fix(test): update E2E test for onboarding screen + increase timeouts
The U7 onboarding view replaced "No accounts yet." with "Welcome to
SharedInbox", causing the E2E test to spin for the full timeout budget
(pumping slowly in headless CI) before failing. Fix the finder and
bump per-attempt timeout from 240s → 360s and CI job ceiling from
20 min → 30 min to give the full account-add → send → verify flow
room to complete.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 16:56:53 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 5ede675668 fix(ci): revert to single task check step to preserve build cache
Splitting into separate steps breaks the Dart compilation cache that task
check builds up via parallelism. Without the shared cache, flutter test
integration_test/ -d linux rebuilds cold (9+ min instead of ~24s).

Keep the single 'nix develop --command task check' step which runs
analyze+build-linux+test in parallel (Task deps) and warms the cache
before the E2E test. Add timeout-minutes: 20 as a job-level safety net.
The xvfb-run timeout 600 (already in integration_ui_test.sh) still
prevents infinite hangs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 16:09:18 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 0d6a8062e4 fix(ci): increase E2E timeout to 10 min (was 5 min, too tight)
Sequential CI steps leave the runner under heavier load than the parallel
task check approach, so the E2E test can legitimately take 4-5 min.
Raise timeout 300→600 in integration_ui_test.sh and step timeout 6→12 min.
Job-level ceiling raised to 30 min to match.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 15:51:58 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 b95545dff2 fix(ci): generate changelog before analyze (assets/ must exist)
The assets/ directory is created by generate-changelog. Splitting CI into
separate steps meant analyze ran before any step created it, causing a
pubspec.yaml asset_directory_does_not_exist warning that fails the check.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 15:39:39 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 c45b0e852e ci: add step-level timeouts and cap E2E hang at 5 min (#67)
- Split single 'Run Full Check Suite' step into named steps so per-step
  timing is visible in the CI UI
- Add timeout-minutes: 20 to the overall job and timeout-minutes: 6 to
  the UI E2E step — previously a stuck xvfb-run could hang for 23+ min
- Add 'timeout 300' to xvfb-run in integration_ui_test.sh so the E2E
  test exits with a clear error instead of hanging indefinitely

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 15:36:31 +02:00
Thomas SharedInboxandClaude Sonnet 4.6 f6f10700f8 feat: select all, human-readable build version, release gated on CI
- Add Select All button to AppBar during selection mode (#15)
- Replace Unix timestamp build number with yymmdd-hhmm format (#63)
- Gate release.yml on CI workflow success via workflow_run event
- Update golden for email_list_selection to reflect new Select All button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 14:23:54 +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 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 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 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 SharedInbox efdcab74d7 setup nix in CI, and reformat. 2026-05-12 21:55:06 +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 Güttler b314a0c1b6 feat: migrate CI to Codeberg Actions and add self-hosted runner config
- Added .forgejo/workflows/ci.yml for thin CI orchestration.
- Configured Dockerized Codeberg runner with Nix support in codeberg-runner/.
- Added systemd service for persistent runner execution.
- Added GEMINI.md for project CI/Nix conventions.
- Added Taskfile task for Linux release builds.
2026-05-08 12:04:42 +02:00