About Page, what else? #258
Closed
opened 2026-05-25 18:43:15 +00:00 by guettli
·
2 comments
No Branch/Tag Specified
main
issue-563-agentloop-validation
dummy-pr-test
issue-560-fix-firebase-run-url
issue-539-stable-imap-uid
issue-533-shared-email-list
plan-issue-555
drop-nix
plan-issue-484
plan-issue-539
plan-issue-535
plan-issue-474
plan-issue-533
fix-dagger-engineless-precommit
issue-521-fix-deploy-yml-wait-time-api
issue-502-fix-email-id-collision-mailbox
issue-492-eliminate-duplicate-build-runner
issue-494-website-change-detection
issue-491-parallelize-check
issue-478-fix-stalwart-dual-stack-bind
issue-475-allowed-addresses-glob
issue-473-search-result-reorder
issue-453-update-agentloop-defaults
issue-466-structured-search
issue-505-exclude-chaos-monkey-from-regular-ci
issue-509-fix-search-result-sorting
fix-ink-sparkle-remaining-tests
issue-506-fix-search-emails-tests
issue-504-runner-wait-time
issue-488-search-notes
issue-472-changelog-issue-links
issue-501-folder-search-local-sqlite
issue-486-fix-stale-test-shader-mismatch
fix/prevent-settled-search-rerun-473
issue-467-fix-search-stale-results
issue-446-installed-versions-in-changelog
issue-462-fix-pr
issue-448-chaos-monkey-test
issue-436-notes-on-emails
issue-429-unify-mail-display
issue-422-move-to-folder-create-new
issue-414-ensure-not-run-as-root
issue-424-unify-email-list-views
issue-419-trusted-senders-page
issue-425-fix-prs
test-foo
issue-421-bug-report
issue-383-fix-ci
issue-394-fix-deploy-flutter-version
issue-391-fix-ci-double-trigger
issue-376-combined-inbox-v2
issue-376-combined-inbox
issue-384-fix-open-prs
sops-migrate
issue-339-safe-first-on-imap-fetch
issue-340-try-catch-measure-height
issue-342-pin-intl-version
issue-341-guard-threademails-last
issue-335-agentloop-code-test
issue-329-fix
issue-315-fix
issue-320-fix
issue-325-fix
issue-312-fix
issue-311-fix
issue-305-fix
issue-304-fix
issue-299-fix
issue-300-fix
issue-298-fix
issue-296-fix
issue-294-fix
issue-289-fix
issue-288-fix
issue-287-fix
issue-286-fix
issue-277-fix
issue-282-fix
issue-280-fix
issue-272-fix
issue-268-fix
issue-267-fix
issue-266-fix
issue-258-fix
issue-260-fix
issue-257-fix
issue-253-fix
issue-216-fix
issue-251-fix
issue-249-fix
issue-question-fixes
issue-235-fix
issue-236-fix-v2
issue-237-fix
issue-236-fix
issue-228-fix
issue-217-fix
issue-214-fix
issue-213-fix
issue-208-fix
issue-205-fix
issue-204-fix
issue-203-fix
issue-202-fix
issue-129-fix
issue-161-fix
issue-160-fix
issue-201-fix
issue-210-fix
issue-198-fix
issue-200-fix
issue-144-fix
issue-199-fix
fix/playstore-upload-use-requests
issue-193-fix
issue-186-fix
issue-185-fix
issue-192-fix
issue-183-fix
issue-175-fix
issue-172-fix
issue-171-fix
issue-167-fix
issue-136-fix
issue-162-fix
issue-179-fix
issue-155-fix
issue-154-fix
issue-152-fix
issue-151-fix
issue-141-fix
issue-150-fix
issue-164-fix
migrate-to-dagger
task/d1-ci-matrix
task/a4-typeconverter-json
task/u7-onboarding-walkthrough
task/d3-sync-doc
task/a5-layer-boundary-lint
task/t5-golden-tests
task/p5-date-cache
task/s4-link-handling
task/p3-html-parse-isolate
task/u8-mark-all-read
task/u3-recent-searches
task/a3-jmap-injectable-http-client
task/r5-tls-error-handling
fix/playstore-redirect-retry
task/t3-repository-contract-tests
task/p2-email-list-pagination
task/p1-fts5-search
fix/playstore-upload-timeout
task/a1-email-detail-notifier
fix/upgrade-workmanager-0.9
fix/android-core-library-desugaring
task/p4-db-indexes
task/r3-html-error-boundary
task/d2-check-coverage
task/a2-email-tile
task/t4-migration-tests
task/t2-widget-tests
task/t1-email-repo-coverage
task/u6-connection-status
task/u4-push-notifications
task/u2-draft-sync
task/u1-list-unsubscribe
task/s2-hostname-validation
task/r6-reliability-fuzz-tests
task/r4-sync-error-banner
task/r2-force-resync
task/r1-undo-history-persistence
No results found.
Labels
Clear labels
NeedSupervisor
State/InProgress
State/Later
State/Planned
automerge
ci-failure
do-not-merge
loop/code
loop/code-ci-pending
loop/code-done
loop/code-in-process
loop/merge
loop/merge-done
loop/merge-in-process
loop/plan
loop/plan-done
loop/plan-in-process
Issue escalated to a human supervisor; agentloop will skip it until cleared.
Eligible for automatic merge by CI
Issue opened by agentloop to track a failing CI workflow; used for deduplication.
Plan PR — review only, do not merge.
Add to run the built-in "code" prompt; override at prompts/code.md.
Prompt "code" finished; waiting for the PR's CI to pass before advancing.
Prompt "code" finished successfully.
Agent for the "code" prompt is currently running on this issue.
Managed by agentloop
Managed by agentloop
Managed by agentloop
Add to run the built-in "plan" prompt; override at prompts/plan.md.
Prompt "plan" finished successfully.
Agent for the "plan" prompt is currently running on this issue.
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: guettli/sharedinbox#258
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Implement all items from below plan.
Implementation Plan: Enriching the About Page
Context
The About page () currently displays a markdown table with these fields: App Version, Git Commit, Platform, OS Version, Screen Resolution, Dart Version, Processor Count, Dark Mode, IMAP/JMAP Account Counts.
Its primary use case is bug reporting — users copy the info or click "Create issue" to pre-fill a Codeberg issue. So additions should be things that actually help diagnose bugs.
Proposed Additions
1. Device Model / Manufacturer (the main ask)
Add a Device row showing e.g.
Samsung / Galaxy S21orApple / iPhone 15 Pro.Implementation:
device_info_plustopubspec.yamldependencies.It is the canonical Flutter package for this and is already used by
package_info_plus's ecosystem.about_screen.dartcreate aFuture<String?> _deviceModel()helper:AndroidDeviceInfo→manufacturer+modelIosDeviceInfo→nameorutsname.machinen/a(not relevant for mobile bug reports)_buildMarkdownand add a| Device | ... |row.device_info_pluscall withPlatform.isAndroid/Platform.isIOSto keep desktop clean.2. Locale / Language
Add a Locale row showing e.g.
de_DE. Useful when bugs are language- or locale-specific (date formatting, RTL, etc.).Implementation:
Localizations.localeOf(context).toString()inside_buildMarkdown.| Locale | ${Localizations.localeOf(context)} |row — one line change.3. Text Scale Factor
Add a Text Scale row showing e.g.
1.3×. Useful for diagnosing layout overflow bugs triggered by accessibility settings.Implementation:
MediaQuery.of(context).textScaler.scale(1.0)(Flutter 3.x API).| Text Scale | ${textScale.toStringAsFixed(1)}× |row — one line change, no new package.4. Database Schema Version
Add a DB Version row showing the current Drift schema version (currently 32). Useful for diagnosing migration issues.
Implementation:
lib/data/db/database.dart. Expose it as a top-levelconst int kDatabaseSchemaVersion = 32;and import it inabout_screen.dart.| DB Version | $kDatabaseSchemaVersion |row.Files to Change
pubspec.yamldevice_info_plus: ^10.xtodependencieslib/ui/screens/about_screen.dart_deviceModel()helper; extend_buildMarkdownwith new rows; add importslib/data/db/database.dartRisks & Open Questions
device_info_plusadds a native plugin — it requires Android/iOS build changes (permissions, Gradle, etc.). This is usually handled automatically by Flutter's plugin system, but it is a new dependency with a maintenance surface. Worth checking if the project wants to keep dependencies minimal.Device model on desktop —
device_info_plussupports macOS/Linux/Windows too, but device model is not meaningful there. ThePlatform.isAndroid / isIOSguards are important.Privacy — Device model (manufacturer + model string) is mildly personal data. It should only leave the device when the user explicitly copies the info or presses "Create issue". The current architecture already does this correctly, so no change needed there.
Ordering of rows — Suggest: Device right after OS Version, since they are closely related. Locale and Text Scale can go after Dark Mode.
_buildMarkdownis synchronous butdevice_info_plusis async — The current pattern uses aFutureBuilder<PackageInfo>already; we can widen it toFuture.wait([_packageInfoFuture, _deviceModelFuture])or add a secondFutureBuilder.Minimal Viable Change
If the goal is a small, low-risk PR: add only Locale and Text Scale — those require zero new packages and are two one-line additions. Add Device Model in a follow-up once the dependency is approved.
Planning complete. To resume this session: