feat: build v1 Mews client: reader UI, gestures, Drift store, fetch actor
This commit is contained in:
parent
d5a0fcbf48
commit
01a36e8aee
56 changed files with 7287 additions and 2 deletions
13
SPEC.md
13
SPEC.md
|
|
@ -18,7 +18,7 @@ A Flutter browser/client for Mews Pages (see mews-spec).
|
|||
|
||||
## Approach
|
||||
|
||||
Local-first: all data is stored locally in a Drift database. Network operations (Nostr publishing, image upload) are secondary and never block local functionality.
|
||||
Local-first: all data is stored locally in a Drift database. Network operations are secondary and never block local functionality.
|
||||
|
||||
# Architecture directives
|
||||
|
||||
|
|
@ -55,4 +55,13 @@ Use the `actors` package only where Dart Isolate isolation is genuinely useful:
|
|||
## Persistence — Drift
|
||||
|
||||
- Use `drift` for all tables, DAOs, and queries.
|
||||
- Keep database definitions in `database/` separate from UI code.
|
||||
- Keep database definitions in `database/` separate from UI code.
|
||||
|
||||
## v1 reader UI
|
||||
|
||||
The v1 client presents one reader screen:
|
||||
|
||||
- An address field pinned at the top; it hides when the reader scrolls down and returns when they scroll up or reach the top.
|
||||
- A swipe right goes back and a swipe left goes forward through the history stack.
|
||||
- Scrolling a page fades in a FOB in the bottom-right corner; on pages that fit without scrolling it is present from the start. It opens a bottom sheet with the reader's presentation choices: typeface, text size, theme (light, dark, follow system), color variant (site, warm, cool, green, mono), and a bookmark and subscription toggle for the current page.
|
||||
- Fonts are bundled. v1 ships Atkinson Hyperlegible; Verdana and Georgia follow once their font files are added to `app/assets/fonts/`. A font is one TTF plus one `fonts` entry in `app/pubspec.yaml` and one entry in `app/lib/presentation/reader/reader_fonts.dart`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue