Compare commits
merge into: guettli/sharedinbox:issue-299-fix
guettli/sharedinbox:main
guettli/sharedinbox:issue-563-agentloop-validation
guettli/sharedinbox:dummy-pr-test
guettli/sharedinbox:issue-560-fix-firebase-run-url
guettli/sharedinbox:issue-539-stable-imap-uid
guettli/sharedinbox:issue-533-shared-email-list
guettli/sharedinbox:plan-issue-555
guettli/sharedinbox:drop-nix
guettli/sharedinbox:plan-issue-484
guettli/sharedinbox:plan-issue-539
guettli/sharedinbox:plan-issue-535
guettli/sharedinbox:plan-issue-474
guettli/sharedinbox:plan-issue-533
guettli/sharedinbox:fix-dagger-engineless-precommit
guettli/sharedinbox:issue-521-fix-deploy-yml-wait-time-api
guettli/sharedinbox:issue-502-fix-email-id-collision-mailbox
guettli/sharedinbox:issue-492-eliminate-duplicate-build-runner
guettli/sharedinbox:issue-494-website-change-detection
guettli/sharedinbox:issue-491-parallelize-check
guettli/sharedinbox:issue-478-fix-stalwart-dual-stack-bind
guettli/sharedinbox:issue-475-allowed-addresses-glob
guettli/sharedinbox:issue-473-search-result-reorder
guettli/sharedinbox:issue-453-update-agentloop-defaults
guettli/sharedinbox:issue-466-structured-search
guettli/sharedinbox:issue-505-exclude-chaos-monkey-from-regular-ci
guettli/sharedinbox:issue-509-fix-search-result-sorting
guettli/sharedinbox:fix-ink-sparkle-remaining-tests
guettli/sharedinbox:issue-506-fix-search-emails-tests
guettli/sharedinbox:issue-504-runner-wait-time
guettli/sharedinbox:issue-488-search-notes
guettli/sharedinbox:issue-472-changelog-issue-links
guettli/sharedinbox:issue-501-folder-search-local-sqlite
guettli/sharedinbox:issue-486-fix-stale-test-shader-mismatch
guettli/sharedinbox:fix/prevent-settled-search-rerun-473
guettli/sharedinbox:issue-467-fix-search-stale-results
guettli/sharedinbox:issue-446-installed-versions-in-changelog
guettli/sharedinbox:issue-462-fix-pr
guettli/sharedinbox:issue-448-chaos-monkey-test
guettli/sharedinbox:issue-436-notes-on-emails
guettli/sharedinbox:issue-429-unify-mail-display
guettli/sharedinbox:issue-422-move-to-folder-create-new
guettli/sharedinbox:issue-414-ensure-not-run-as-root
guettli/sharedinbox:issue-424-unify-email-list-views
guettli/sharedinbox:issue-419-trusted-senders-page
guettli/sharedinbox:issue-425-fix-prs
guettli/sharedinbox:test-foo
guettli/sharedinbox:issue-421-bug-report
guettli/sharedinbox:issue-383-fix-ci
guettli/sharedinbox:issue-394-fix-deploy-flutter-version
guettli/sharedinbox:issue-391-fix-ci-double-trigger
guettli/sharedinbox:issue-376-combined-inbox-v2
guettli/sharedinbox:issue-376-combined-inbox
guettli/sharedinbox:issue-384-fix-open-prs
guettli/sharedinbox:sops-migrate
guettli/sharedinbox:issue-339-safe-first-on-imap-fetch
guettli/sharedinbox:issue-340-try-catch-measure-height
guettli/sharedinbox:issue-342-pin-intl-version
guettli/sharedinbox:issue-341-guard-threademails-last
guettli/sharedinbox:issue-335-agentloop-code-test
guettli/sharedinbox:issue-329-fix
guettli/sharedinbox:issue-315-fix
guettli/sharedinbox:issue-320-fix
guettli/sharedinbox:issue-325-fix
guettli/sharedinbox:issue-312-fix
guettli/sharedinbox:issue-311-fix
guettli/sharedinbox:issue-305-fix
guettli/sharedinbox:issue-304-fix
guettli/sharedinbox:issue-299-fix
guettli/sharedinbox:issue-300-fix
guettli/sharedinbox:issue-298-fix
guettli/sharedinbox:issue-296-fix
guettli/sharedinbox:issue-294-fix
guettli/sharedinbox:issue-289-fix
guettli/sharedinbox:issue-288-fix
guettli/sharedinbox:issue-287-fix
guettli/sharedinbox:issue-286-fix
guettli/sharedinbox:issue-277-fix
guettli/sharedinbox:issue-282-fix
guettli/sharedinbox:issue-280-fix
guettli/sharedinbox:issue-272-fix
guettli/sharedinbox:issue-268-fix
guettli/sharedinbox:issue-267-fix
guettli/sharedinbox:issue-266-fix
guettli/sharedinbox:issue-258-fix
guettli/sharedinbox:issue-260-fix
guettli/sharedinbox:issue-257-fix
guettli/sharedinbox:issue-253-fix
guettli/sharedinbox:issue-216-fix
guettli/sharedinbox:issue-251-fix
guettli/sharedinbox:issue-249-fix
guettli/sharedinbox:issue-question-fixes
guettli/sharedinbox:issue-235-fix
guettli/sharedinbox:issue-236-fix-v2
guettli/sharedinbox:issue-237-fix
guettli/sharedinbox:issue-236-fix
guettli/sharedinbox:issue-228-fix
guettli/sharedinbox:issue-217-fix
guettli/sharedinbox:issue-214-fix
guettli/sharedinbox:issue-213-fix
guettli/sharedinbox:issue-208-fix
guettli/sharedinbox:issue-205-fix
guettli/sharedinbox:issue-204-fix
guettli/sharedinbox:issue-203-fix
guettli/sharedinbox:issue-202-fix
guettli/sharedinbox:issue-129-fix
guettli/sharedinbox:issue-161-fix
guettli/sharedinbox:issue-160-fix
guettli/sharedinbox:issue-201-fix
guettli/sharedinbox:issue-210-fix
guettli/sharedinbox:issue-198-fix
guettli/sharedinbox:issue-200-fix
guettli/sharedinbox:issue-144-fix
guettli/sharedinbox:issue-199-fix
guettli/sharedinbox:fix/playstore-upload-use-requests
guettli/sharedinbox:issue-193-fix
guettli/sharedinbox:issue-186-fix
guettli/sharedinbox:issue-185-fix
guettli/sharedinbox:issue-192-fix
guettli/sharedinbox:issue-183-fix
guettli/sharedinbox:issue-175-fix
guettli/sharedinbox:issue-172-fix
guettli/sharedinbox:issue-171-fix
guettli/sharedinbox:issue-167-fix
guettli/sharedinbox:issue-136-fix
guettli/sharedinbox:issue-162-fix
guettli/sharedinbox:issue-179-fix
guettli/sharedinbox:issue-155-fix
guettli/sharedinbox:issue-154-fix
guettli/sharedinbox:issue-152-fix
guettli/sharedinbox:issue-151-fix
guettli/sharedinbox:issue-141-fix
guettli/sharedinbox:issue-150-fix
guettli/sharedinbox:issue-164-fix
guettli/sharedinbox:migrate-to-dagger
guettli/sharedinbox:task/d1-ci-matrix
guettli/sharedinbox:task/a4-typeconverter-json
guettli/sharedinbox:task/u7-onboarding-walkthrough
guettli/sharedinbox:task/d3-sync-doc
guettli/sharedinbox:task/a5-layer-boundary-lint
guettli/sharedinbox:task/t5-golden-tests
guettli/sharedinbox:task/p5-date-cache
guettli/sharedinbox:task/s4-link-handling
guettli/sharedinbox:task/p3-html-parse-isolate
guettli/sharedinbox:task/u8-mark-all-read
guettli/sharedinbox:task/u3-recent-searches
guettli/sharedinbox:task/a3-jmap-injectable-http-client
guettli/sharedinbox:task/r5-tls-error-handling
guettli/sharedinbox:fix/playstore-redirect-retry
guettli/sharedinbox:task/t3-repository-contract-tests
guettli/sharedinbox:task/p2-email-list-pagination
guettli/sharedinbox:task/p1-fts5-search
guettli/sharedinbox:fix/playstore-upload-timeout
guettli/sharedinbox:task/a1-email-detail-notifier
guettli/sharedinbox:fix/upgrade-workmanager-0.9
guettli/sharedinbox:fix/android-core-library-desugaring
guettli/sharedinbox:task/p4-db-indexes
guettli/sharedinbox:task/r3-html-error-boundary
guettli/sharedinbox:task/d2-check-coverage
guettli/sharedinbox:task/a2-email-tile
guettli/sharedinbox:task/t4-migration-tests
guettli/sharedinbox:task/t2-widget-tests
guettli/sharedinbox:task/t1-email-repo-coverage
guettli/sharedinbox:task/u6-connection-status
guettli/sharedinbox:task/u4-push-notifications
guettli/sharedinbox:task/u2-draft-sync
guettli/sharedinbox:task/u1-list-unsubscribe
guettli/sharedinbox:task/s2-hostname-validation
guettli/sharedinbox:task/r6-reliability-fuzz-tests
guettli/sharedinbox:task/r4-sync-error-banner
guettli/sharedinbox:task/r2-force-resync
guettli/sharedinbox:task/r1-undo-history-persistence
..
pull from: guettli/sharedinbox:issue-300-fix
guettli/sharedinbox:issue-563-agentloop-validation
guettli/sharedinbox:dummy-pr-test
guettli/sharedinbox:issue-560-fix-firebase-run-url
guettli/sharedinbox:issue-539-stable-imap-uid
guettli/sharedinbox:issue-533-shared-email-list
guettli/sharedinbox:plan-issue-555
guettli/sharedinbox:main
guettli/sharedinbox:drop-nix
guettli/sharedinbox:plan-issue-484
guettli/sharedinbox:plan-issue-539
guettli/sharedinbox:plan-issue-535
guettli/sharedinbox:plan-issue-474
guettli/sharedinbox:plan-issue-533
guettli/sharedinbox:fix-dagger-engineless-precommit
guettli/sharedinbox:issue-521-fix-deploy-yml-wait-time-api
guettli/sharedinbox:issue-502-fix-email-id-collision-mailbox
guettli/sharedinbox:issue-492-eliminate-duplicate-build-runner
guettli/sharedinbox:issue-494-website-change-detection
guettli/sharedinbox:issue-491-parallelize-check
guettli/sharedinbox:issue-478-fix-stalwart-dual-stack-bind
guettli/sharedinbox:issue-475-allowed-addresses-glob
guettli/sharedinbox:issue-473-search-result-reorder
guettli/sharedinbox:issue-453-update-agentloop-defaults
guettli/sharedinbox:issue-466-structured-search
guettli/sharedinbox:issue-505-exclude-chaos-monkey-from-regular-ci
guettli/sharedinbox:issue-509-fix-search-result-sorting
guettli/sharedinbox:fix-ink-sparkle-remaining-tests
guettli/sharedinbox:issue-506-fix-search-emails-tests
guettli/sharedinbox:issue-504-runner-wait-time
guettli/sharedinbox:issue-488-search-notes
guettli/sharedinbox:issue-472-changelog-issue-links
guettli/sharedinbox:issue-501-folder-search-local-sqlite
guettli/sharedinbox:issue-486-fix-stale-test-shader-mismatch
guettli/sharedinbox:fix/prevent-settled-search-rerun-473
guettli/sharedinbox:issue-467-fix-search-stale-results
guettli/sharedinbox:issue-446-installed-versions-in-changelog
guettli/sharedinbox:issue-462-fix-pr
guettli/sharedinbox:issue-448-chaos-monkey-test
guettli/sharedinbox:issue-436-notes-on-emails
guettli/sharedinbox:issue-429-unify-mail-display
guettli/sharedinbox:issue-422-move-to-folder-create-new
guettli/sharedinbox:issue-414-ensure-not-run-as-root
guettli/sharedinbox:issue-424-unify-email-list-views
guettli/sharedinbox:issue-419-trusted-senders-page
guettli/sharedinbox:issue-425-fix-prs
guettli/sharedinbox:test-foo
guettli/sharedinbox:issue-421-bug-report
guettli/sharedinbox:issue-383-fix-ci
guettli/sharedinbox:issue-394-fix-deploy-flutter-version
guettli/sharedinbox:issue-391-fix-ci-double-trigger
guettli/sharedinbox:issue-376-combined-inbox-v2
guettli/sharedinbox:issue-376-combined-inbox
guettli/sharedinbox:issue-384-fix-open-prs
guettli/sharedinbox:sops-migrate
guettli/sharedinbox:issue-339-safe-first-on-imap-fetch
guettli/sharedinbox:issue-340-try-catch-measure-height
guettli/sharedinbox:issue-342-pin-intl-version
guettli/sharedinbox:issue-341-guard-threademails-last
guettli/sharedinbox:issue-335-agentloop-code-test
guettli/sharedinbox:issue-329-fix
guettli/sharedinbox:issue-315-fix
guettli/sharedinbox:issue-320-fix
guettli/sharedinbox:issue-325-fix
guettli/sharedinbox:issue-312-fix
guettli/sharedinbox:issue-311-fix
guettli/sharedinbox:issue-305-fix
guettli/sharedinbox:issue-304-fix
guettli/sharedinbox:issue-299-fix
guettli/sharedinbox:issue-300-fix
guettli/sharedinbox:issue-298-fix
guettli/sharedinbox:issue-296-fix
guettli/sharedinbox:issue-294-fix
guettli/sharedinbox:issue-289-fix
guettli/sharedinbox:issue-288-fix
guettli/sharedinbox:issue-287-fix
guettli/sharedinbox:issue-286-fix
guettli/sharedinbox:issue-277-fix
guettli/sharedinbox:issue-282-fix
guettli/sharedinbox:issue-280-fix
guettli/sharedinbox:issue-272-fix
guettli/sharedinbox:issue-268-fix
guettli/sharedinbox:issue-267-fix
guettli/sharedinbox:issue-266-fix
guettli/sharedinbox:issue-258-fix
guettli/sharedinbox:issue-260-fix
guettli/sharedinbox:issue-257-fix
guettli/sharedinbox:issue-253-fix
guettli/sharedinbox:issue-216-fix
guettli/sharedinbox:issue-251-fix
guettli/sharedinbox:issue-249-fix
guettli/sharedinbox:issue-question-fixes
guettli/sharedinbox:issue-235-fix
guettli/sharedinbox:issue-236-fix-v2
guettli/sharedinbox:issue-237-fix
guettli/sharedinbox:issue-236-fix
guettli/sharedinbox:issue-228-fix
guettli/sharedinbox:issue-217-fix
guettli/sharedinbox:issue-214-fix
guettli/sharedinbox:issue-213-fix
guettli/sharedinbox:issue-208-fix
guettli/sharedinbox:issue-205-fix
guettli/sharedinbox:issue-204-fix
guettli/sharedinbox:issue-203-fix
guettli/sharedinbox:issue-202-fix
guettli/sharedinbox:issue-129-fix
guettli/sharedinbox:issue-161-fix
guettli/sharedinbox:issue-160-fix
guettli/sharedinbox:issue-201-fix
guettli/sharedinbox:issue-210-fix
guettli/sharedinbox:issue-198-fix
guettli/sharedinbox:issue-200-fix
guettli/sharedinbox:issue-144-fix
guettli/sharedinbox:issue-199-fix
guettli/sharedinbox:fix/playstore-upload-use-requests
guettli/sharedinbox:issue-193-fix
guettli/sharedinbox:issue-186-fix
guettli/sharedinbox:issue-185-fix
guettli/sharedinbox:issue-192-fix
guettli/sharedinbox:issue-183-fix
guettli/sharedinbox:issue-175-fix
guettli/sharedinbox:issue-172-fix
guettli/sharedinbox:issue-171-fix
guettli/sharedinbox:issue-167-fix
guettli/sharedinbox:issue-136-fix
guettli/sharedinbox:issue-162-fix
guettli/sharedinbox:issue-179-fix
guettli/sharedinbox:issue-155-fix
guettli/sharedinbox:issue-154-fix
guettli/sharedinbox:issue-152-fix
guettli/sharedinbox:issue-151-fix
guettli/sharedinbox:issue-141-fix
guettli/sharedinbox:issue-150-fix
guettli/sharedinbox:issue-164-fix
guettli/sharedinbox:migrate-to-dagger
guettli/sharedinbox:task/d1-ci-matrix
guettli/sharedinbox:task/a4-typeconverter-json
guettli/sharedinbox:task/u7-onboarding-walkthrough
guettli/sharedinbox:task/d3-sync-doc
guettli/sharedinbox:task/a5-layer-boundary-lint
guettli/sharedinbox:task/t5-golden-tests
guettli/sharedinbox:task/p5-date-cache
guettli/sharedinbox:task/s4-link-handling
guettli/sharedinbox:task/p3-html-parse-isolate
guettli/sharedinbox:task/u8-mark-all-read
guettli/sharedinbox:task/u3-recent-searches
guettli/sharedinbox:task/a3-jmap-injectable-http-client
guettli/sharedinbox:task/r5-tls-error-handling
guettli/sharedinbox:fix/playstore-redirect-retry
guettli/sharedinbox:task/t3-repository-contract-tests
guettli/sharedinbox:task/p2-email-list-pagination
guettli/sharedinbox:task/p1-fts5-search
guettli/sharedinbox:fix/playstore-upload-timeout
guettli/sharedinbox:task/a1-email-detail-notifier
guettli/sharedinbox:fix/upgrade-workmanager-0.9
guettli/sharedinbox:fix/android-core-library-desugaring
guettli/sharedinbox:task/p4-db-indexes
guettli/sharedinbox:task/r3-html-error-boundary
guettli/sharedinbox:task/d2-check-coverage
guettli/sharedinbox:task/a2-email-tile
guettli/sharedinbox:task/t4-migration-tests
guettli/sharedinbox:task/t2-widget-tests
guettli/sharedinbox:task/t1-email-repo-coverage
guettli/sharedinbox:task/u6-connection-status
guettli/sharedinbox:task/u4-push-notifications
guettli/sharedinbox:task/u2-draft-sync
guettli/sharedinbox:task/u1-list-unsubscribe
guettli/sharedinbox:task/s2-hostname-validation
guettli/sharedinbox:task/r6-reliability-fuzz-tests
guettli/sharedinbox:task/r4-sync-error-banner
guettli/sharedinbox:task/r2-force-resync
guettli/sharedinbox:task/r1-undo-history-persistence
4
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
badc449866 |
feat: configurable next action after single mail view (#300)
Add user preference to control what happens after performing an action (delete, archive, move, snooze, mark as unread) in the single mail view. The default is to show the next message in the mailbox; users can opt to return to the mailbox instead. - New AfterMailViewAction enum (nextMessage, showMailbox) - DB schema v36: after_mail_view_action column on user_preferences - UserPreferences model, repository interface and impl updated - EmailDetailScreen: reads preference, finds next email before action, navigates via context.go() or context.pop() accordingly - UserPreferencesScreen: new "After mail action" section with radio group - Tests updated: FakeUserPreferencesRepository, migration test, new UserPreferencesScreen tests with scroll-to-reveal Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
a56847fdb5 |
feat: configurable back button position for single mail view (#299)
Add a mailViewButtonPosition preference (bottom/top) that controls where the back button appears in the thread detail screen. Default is bottom, showing a BottomAppBar with an arrow_back button and hiding the AppBar's leading back button. Users can switch to top to restore the standard AppBar back button. Preference is stored in the UserPreferences DB table (schema v35) and configurable via the Preferences screen. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
ef3d278c5f |
fix: wrap bottom bar menu button in Builder to get Scaffold context
Scaffold.of() requires a descendant context of the Scaffold widget. Using the State's build context (which is the Scaffold's parent) caused an assertion failure when tapping the 'Open folders' button. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |
||
|
|
e1ccfabfdd |
feat: configurable menu bar position for mailbox view (#298)
Move the folder navigation drawer trigger to the bottom by default, matching the issue request. Add a user preferences DB table (schema v34) and a settings screen so users can switch back to the top hamburger menu. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> |