diff --git a/GOALS_FIGMA_MAKE_PROMPT.md b/GOALS_FIGMA_MAKE_PROMPT.md deleted file mode 100644 index 308bbd7..0000000 --- a/GOALS_FIGMA_MAKE_PROMPT.md +++ /dev/null @@ -1,41 +0,0 @@ -# Figma Make prompt: Papyrus Goals - -Design a new Goals experience for **Papyrus**, a cross-platform book library and reader for physical and digital books. The purpose is to help people understand their reading progress and build a reading habit. Make it feel like a thoughtful part of a reading app: clear, calm, approachable, and easy to use. - -Focus on the visual design and overall experience. You have freedom to rethink the composition, hierarchy, and interactions. Do not turn this into a dense dashboard or an exhaustive feature specification. - -## Design style - -Use **modern, minimal product design grounded in Material Design 3**, with the warmth and restraint of a well-designed reading app. Favor clean sans-serif typography, clear hierarchy, generous but deliberate spacing, subtle surface differences, and consistent rounded controls. Use simple outline icons from one coherent icon family. - -The result should feel polished and practical. Avoid decorative gradients, glass effects, oversized statistics, excessive shadows, motivational slogans, and unnecessary visual clutter. Let typography, alignment, and spacing do most of the work. - -Choose a cohesive layout rather than forcing every piece of content into a card. Where you use repeated cards or controls, keep their proportions and alignment consistent. Buttons should fit their purpose and labels; short inputs should not stretch across a large desktop panel. Keep activity information easy to scan without repeating long book titles unnecessarily. - -## Colors and themes - -Provide **Light and Dark** versions using the same visual language and layout. Use Papyrus’s existing palette: - -| Role | Light | Dark | -| --- | --- | --- | -| Primary accent | `#5654A8` | `#C3C0FF` | -| Text on primary | `#FFFFFF` | `#272377` | -| Background | `#FFFBFF` | `#1C1B1F` | -| Main text | `#1C1B1F` | `#E5E1E6` | -| Secondary text | `#47464F` | `#C8C5D0` | -| Subtle borders | `#C8C5D0` | `#47464F` | -| Soft accent surface | `#E2DFFF` | `#3E3C8F` | - -Use purple sparingly to guide attention and indicate selection. Keep most surfaces neutral and maintain readable contrast. Also show how the design adapts to a high-contrast, grayscale e-ink display with solid surfaces and minimal motion. - -## Cross-platform design - -This is a **Flutter application for Android, iOS, web, Windows, macOS, and Linux**. Design it as one coherent product that adapts naturally to phones, tablets, and desktops, rather than a desktop dashboard squeezed onto a phone. - -Show representative phone, tablet, and desktop layouts. Account for touch, mouse, keyboard, visible focus, larger text, and system safe areas. Use bottom navigation on phones and sidebar navigation on wide screens as surrounding app context. Adapt secondary interactions to suitable mobile sheets and desktop dialogs or panels. Keep essential actions easy to reach without consuming excessive space. - -## Deliverable - -Create a visually convincing, interactive prototype of the Goals experience, including a representative overview, an activity/history view, and a secondary interaction that demonstrates the shared component style. Use concise, natural copy and realistic sample content, including a long book title, to demonstrate a balanced layout. - -Prioritize visual coherence, readability, and a strong responsive composition over the number of features shown. Establish a reusable typography, spacing, surface, and control system that could also guide the rest of Papyrus. diff --git a/GOALS_INTEGRATION.md b/GOALS_INTEGRATION.md deleted file mode 100644 index e2c3f79..0000000 --- a/GOALS_INTEGRATION.md +++ /dev/null @@ -1,65 +0,0 @@ -# Goals integration - -The coordinated `feat/goals-redesign` branches target `development` in reader, -server, client, and this workspace. No component version changes are included. - -The reader exposes generic observations; the client owns durable foreground -tracking, goal projections, and the adaptive Goals interface; the server validates -owned immutable activity and synchronizes rule/period history. Detailed contracts -and local validation commands live in: - -- `reader/docs/integration.md` -- `client/docs/goals-tracking.md` -- `server/docs-tracking.md` - -Merge the reader change before the client uses its committed revision. Merge the -server alongside the client, and deploy its migration/publication/PowerSync streams -and advertised tracking capability before the integrated client release. Merge -workspace pins after their component PRs. Use the established development-to-master -release workflow when ready; this work does not trigger a version-based release. - -## Coordinated changes - -- [Reader #5](https://github.com/PapyrusReader/reader/pull/5): generic activity observations, committed revision `bc617deeaf2ae684f20c1000ed7cd52f9a61d0a7`. -- [Server #12](https://github.com/PapyrusReader/server/pull/12): owned ledger and tracking capability, committed revision `66a08012390d91dca05ad8d4d48470c7c999eff4`. -- [Client #40](https://github.com/PapyrusReader/client/pull/40): Goals and durable foreground tracking, committed revision `5e67e5969a956f4f42c5c330cbc38350f5ac8fd8`. - -## Validation evidence - -Final client integration: 1,541 tests passed, 19 skipped; final focused identity, -tracker, and persistence checks: 11 passed. Final goal replacement, deadline, UI, -projection, and persistence regressions: 41 passed. Analysis, formatting, bootstrap tests, -and production web build passed. Android and Chromium host checks exercised real -EPUB/PDF reading, durable checkpoints, exposed coverage, and pause/exit behavior. -Light/dark/e-ink Goals and fixed-footers were inspected at phone, tablet, desktop, -and enlarged text sizes. Screenshots are in the client tracking documentation. - -Reader package: 145 tests passed; package/example checks, web build, browser -smoke checks, and worker drift passed. Server: 39 focused route/service/migration -checks and the final 12 aggregation/ownership regressions passed; Ruff, formatting, -and Mypy passed. Migration tests preserve pre-existing data. - -Shared aggregation fixtures cover concurrent-device overlap and coverage. Live -two-device PowerSync transport was not exercised; this remains an opt-in check -with configured services, rather than a claim implied by local database tests. - -## Goals refinement validation (2026-10-08) - -The latest client adds progress-based Overview groups, compact completed filters, -swipeable tabs, shared collection-page toolbar sizing, improved goal/activity -sheets, Daily defaults, and multiple selected books. Activity row and history -expansion state has separate storage keys from scroll offsets. Goal details show -eligible time after creation cutoffs and overlapping intervals. - -Tracking schema version 2 adds `book_ids` and validates ownership of each selected -book. Unsupported version-2 tracking stays staged without blocking older-server -library uploads; existing single-book goals retain version-1 payloads. - -The final client suite passed 1,598 tests with 19 skipped. The latest 27 focused -server tracking, goal, and sync tests passed. Client formatting, analyzer and web -bootstrap checks, server Ruff/Mypy checks, and reader reference checks passed. -The production web build also passed. -Current UI review screenshots are committed in -`client/docs/images/goals-review` and embedded in client PR #40. These use isolated -synthetic activity fixtures; earlier real-reader validation is described above. -Live multi-device PowerSync transport has not been rerun. diff --git a/client b/client index 017ad44..079d69f 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit 017ad44508a9cda6812e42f6beebec99b7a2c928 +Subproject commit 079d69f8967f39f0742eb6e0a422501c292a0782 diff --git a/reader b/reader index eafa444..fa667ae 160000 --- a/reader +++ b/reader @@ -1 +1 @@ -Subproject commit eafa444a5acf0ea51018a88eb76de3d19f76187a +Subproject commit fa667ae96c64e2d1d80c06e83d326265673abc75 diff --git a/release.json b/release.json index 7ecbbd8..7ffd02e 100644 --- a/release.json +++ b/release.json @@ -1,4 +1,4 @@ { - "version": "0.3.0", - "android_build_number": 7 + "version": "0.4.0", + "android_build_number": 8 } diff --git a/releases/papyrus-0.4.0+8.json b/releases/papyrus-0.4.0+8.json new file mode 100644 index 0000000..6580c33 --- /dev/null +++ b/releases/papyrus-0.4.0+8.json @@ -0,0 +1,45 @@ +{ + "schema": 1, + "id": "papyrus-0.4.0+8", + "version": "0.4.0", + "build": 8, + "components": { + "server": { + "repo": "PapyrusReader/server", + "source": "e42e229478b606ebcae1117a5382ac9c459d6ff9", + "accepted_development": "e42e229478b606ebcae1117a5382ac9c459d6ff9", + "tag": "v0.4.0", + "prs": { + "prepare": 64, + "promote": 65 + }, + "prepared_head": "d6435a1df0dd7a4634d65953926b97811a31624b", + "promotion_head": "8bc333eafd65238e4b9ab37b816cd50c9d78ea09", + "verification": { + "revision": "883ba778482e2b8a8d55cf006252270cb9f8638d", + "evidence": "Encrypted off-host backup restored in isolated PostgreSQL 17. Existing database table fingerprints and media hashes preserved. Timer publication and SELECT grants verified. Public API and PowerSync liveness/readiness passed.", + "recorded_at": "2026-11-06T16:14:38.698417+00:00", + "method": "live" + } + }, + "client": { + "repo": "PapyrusReader/client", + "source": "6c4106fb452c865c955d29c193c393589ade906d", + "accepted_development": "6c4106fb452c865c955d29c193c393589ade906d", + "tag": "v0.4.0+8", + "prs": { + "prepare": 129, + "promote": 130 + }, + "prepared_head": "abfd510c99a1299789aa9df36cbae3211142651d", + "promotion_head": "b3ae6f281824843404c6d13ed626bb8ec1c27241" + }, + "workspace": { + "repo": "PapyrusReader/papyrus", + "source": "c01c6b2475485f539909656faff418d6a8fac326", + "accepted_development": "c01c6b2475485f539909656faff418d6a8fac326", + "tag": null, + "prs": {} + } + } +} diff --git a/releases/papyrus-0.4.0+8.md b/releases/papyrus-0.4.0+8.md new file mode 100644 index 0000000..f9850e4 --- /dev/null +++ b/releases/papyrus-0.4.0+8.md @@ -0,0 +1,38 @@ +# Papyrus 0.4.0 + +6 November 2026 · Build 8 + +Papyrus 0.4.0 helps you make time for reading and understand your reading habits, with a new reading timer, clearer statistics, and easier-to-navigate settings. + +## Make time for a book + +- Open **Library → Timer**, choose a book, and start a stopwatch or a countdown. Pick 15, 30, or 60 minutes, or set your own duration. +- Switch to **Focus** for a full-screen clock. Pause and resume when you need a break, then save your reading time with an optional page update. +- Review your recent sessions alongside the timer. Saved time contributes to your reading statistics and goals. +- Timers work offline. When you are signed in and connected, your active timer is shared across your devices. Guest timers stay on the device. +- On Android, pause, resume, or finish a session from the ongoing notification without returning to the app. + +## Understand your reading habits + +- See reading time, recorded pages, books finished, and reading days together in the redesigned **Statistics** page. +- Switch between time and pages, explore your daily rhythm and reading streaks, and compare weeks, months, years, or a custom date range. +- See which genres you have been reading. You can now edit a book’s genre in its details. +- EPUB page tracking now records individual displayed pages, giving a more precise picture of what you read while preserving existing history. + +## Find settings more easily + +- Mobile **Settings** now groups options into Account, Appearance, Storage, Accessibility, and About, each with its own page. +- **App updates** has a dedicated page with clearer progress and retry feedback. Storage usage is easier to scan, with a progress bar and compact actions. +- Choose left-aligned or centered page content in **Appearance**. + +## A clearer library + +- Book and shelf cards stand out more clearly in dark mode. Favorite and selection icons are easier to see across light, dark, high-contrast, and e-ink themes. +- Folder cards and details use space more efficiently. Reconnect actions are easier to find, quick folder previews show less loading flicker, and Folders and Catalogs have consistent page headings. +- Settings, charts, and library layouts handle narrow screens and larger text more comfortably. + +## Updating + +Update through your current installation source. Android testers using Google Play should use the internal-testing update. If you installed the APK directly, use the new APK from this release. Your library and existing reading history are retained. + +**Full change history:** [Changes since 0.3.0](https://github.com/PapyrusReader/client/compare/v0.3.0+7...v0.4.0+8). diff --git a/server b/server index c6fbb0b..883ba77 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit c6fbb0bfce4e41e3e56851dff54ded28b99dfee6 +Subproject commit 883ba778482e2b8a8d55cf006252270cb9f8638d