From 09a6d4b2182e03b74b717811aab4d6ec2fcef6f0 Mon Sep 17 00:00:00 2001 From: Karolis Strazdas Date: Tue, 6 Oct 2026 17:31:38 +0300 Subject: [PATCH 1/7] feat: integrate coordinated goals tracking changes --- GOALS_INTEGRATION.md | 43 +++++++++++++++++++++++++++++++++++++++++++ client | 2 +- reader | 2 +- server | 2 +- 4 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 GOALS_INTEGRATION.md diff --git a/GOALS_INTEGRATION.md b/GOALS_INTEGRATION.md new file mode 100644 index 0000000..ceb66d9 --- /dev/null +++ b/GOALS_INTEGRATION.md @@ -0,0 +1,43 @@ +# 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 `91a1612a0c650f07ce0d7e3fe5266efe3969eeaa`. +- [Client #40](https://github.com/PapyrusReader/client/pull/40): Goals and durable foreground tracking, committed revision `a5c5e8b2375d014e9f7680f1957a2c1050287210`. + +## Validation evidence + +Final client integration: 1,541 tests passed, 19 skipped; final focused identity, +tracker, and persistence checks: 11 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. diff --git a/client b/client index b8363ea..a5c5e8b 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit b8363ea5c1f6ba22328e1a373d1f823deb51b2ef +Subproject commit a5c5e8b2375d014e9f7680f1957a2c1050287210 diff --git a/reader b/reader index 7992c8b..bc617de 160000 --- a/reader +++ b/reader @@ -1 +1 @@ -Subproject commit 7992c8b518fcb900f941217a7ea8455d001c1aea +Subproject commit bc617deeaf2ae684f20c1000ed7cd52f9a61d0a7 diff --git a/server b/server index 93cc8d6..91a1612 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 93cc8d64fb0d21671711177fe7650e1a6ee00cbc +Subproject commit 91a1612a0c650f07ce0d7e3fe5266efe3969eeaa From e4dc2e8f97a7b7622f720005422ce2fc811cc489 Mon Sep 17 00:00:00 2001 From: Karolis Strazdas Date: Tue, 6 Oct 2026 17:40:56 +0300 Subject: [PATCH 2/7] fix: pin goal configuration replacement flow --- GOALS_INTEGRATION.md | 5 +++-- client | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/GOALS_INTEGRATION.md b/GOALS_INTEGRATION.md index ceb66d9..45bc371 100644 --- a/GOALS_INTEGRATION.md +++ b/GOALS_INTEGRATION.md @@ -22,12 +22,13 @@ release workflow when ready; this work does not trigger a version-based release. - [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 `91a1612a0c650f07ce0d7e3fe5266efe3969eeaa`. -- [Client #40](https://github.com/PapyrusReader/client/pull/40): Goals and durable foreground tracking, committed revision `a5c5e8b2375d014e9f7680f1957a2c1050287210`. +- [Client #40](https://github.com/PapyrusReader/client/pull/40): Goals and durable foreground tracking, committed revision `6fa232c0b4eeacd293d17126907cd932b843a05e`. ## Validation evidence Final client integration: 1,541 tests passed, 19 skipped; final focused identity, -tracker, and persistence checks: 11 passed. Analysis, formatting, bootstrap tests, +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, diff --git a/client b/client index a5c5e8b..6fa232c 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit a5c5e8b2375d014e9f7680f1957a2c1050287210 +Subproject commit 6fa232c0b4eeacd293d17126907cd932b843a05e From 88fd0581822fdc5c382868b1bc2a37dc7bc8ab6d Mon Sep 17 00:00:00 2001 From: Karolis Strazdas Date: Wed, 7 Oct 2026 01:30:54 +0300 Subject: [PATCH 3/7] chore: pin goals UI refinement and retain design prompt --- GOALS_FIGMA_MAKE_PROMPT.md | 41 ++++++++++++++++++++++++++++++++++++++ client | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 GOALS_FIGMA_MAKE_PROMPT.md diff --git a/GOALS_FIGMA_MAKE_PROMPT.md b/GOALS_FIGMA_MAKE_PROMPT.md new file mode 100644 index 0000000..308bbd7 --- /dev/null +++ b/GOALS_FIGMA_MAKE_PROMPT.md @@ -0,0 +1,41 @@ +# 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/client b/client index 6fa232c..81903e6 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit 6fa232c0b4eeacd293d17126907cd932b843a05e +Subproject commit 81903e644bed5842575505a995a6d2f57ee60287 From 636f62e3b28c62bbdd5c238c89cedb7ea5551475 Mon Sep 17 00:00:00 2001 From: Karolis Strazdas Date: Thu, 8 Oct 2026 02:19:54 +0300 Subject: [PATCH 4/7] chore: pin refined goals UI and multi-book tracking --- .gitignore | 1 + GOALS_INTEGRATION.md | 25 +++++++++++++++++++++++-- client | 2 +- server | 2 +- 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 9591ea7..19b3953 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .local/ __pycache__/ deploy/edge/edge.env +examples/ diff --git a/GOALS_INTEGRATION.md b/GOALS_INTEGRATION.md index 45bc371..e2c3f79 100644 --- a/GOALS_INTEGRATION.md +++ b/GOALS_INTEGRATION.md @@ -21,8 +21,8 @@ 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 `91a1612a0c650f07ce0d7e3fe5266efe3969eeaa`. -- [Client #40](https://github.com/PapyrusReader/client/pull/40): Goals and durable foreground tracking, committed revision `6fa232c0b4eeacd293d17126907cd932b843a05e`. +- [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 @@ -42,3 +42,24 @@ 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 81903e6..5e67e59 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit 81903e644bed5842575505a995a6d2f57ee60287 +Subproject commit 5e67e5969a956f4f42c5c330cbc38350f5ac8fd8 diff --git a/server b/server index 91a1612..66a0801 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 91a1612a0c650f07ce0d7e3fe5266efe3969eeaa +Subproject commit 66a08012390d91dca05ad8d4d48470c7c999eff4 From 50fd1d95369e3a876e60af7ec907173ab27b0a6b Mon Sep 17 00:00:00 2001 From: Karolis Strazdas Date: Fri, 9 Oct 2026 00:33:52 +0300 Subject: [PATCH 5/7] chore: update client goals refinements --- client | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client b/client index 5e67e59..a0b1487 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit 5e67e5969a956f4f42c5c330cbc38350f5ac8fd8 +Subproject commit a0b1487fe9f0c36a5c46e178adbb1f79495bde8d From af490a15c87c0a6b9eec36fc158f7ac5806080e2 Mon Sep 17 00:00:00 2001 From: Karolis Strazdas Date: Fri, 9 Oct 2026 00:34:37 +0300 Subject: [PATCH 6/7] chore: record website search metadata revision --- website | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website b/website index 2e0deb3..5a61c76 160000 --- a/website +++ b/website @@ -1 +1 @@ -Subproject commit 2e0deb3237ead24f7dbec18a5a3b3f72916a206b +Subproject commit 5a61c76e184d7eda610b92ddcbf0171dd7198721 From 0157025aee997b4005c80b5b92d76c3afa2c4a75 Mon Sep 17 00:00:00 2001 From: Karolis Strazdas Date: Fri, 9 Oct 2026 02:01:23 +0300 Subject: [PATCH 7/7] Integrate goals review fixes across components --- client | 2 +- reader | 2 +- server | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client b/client index a0b1487..38c510a 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit a0b1487fe9f0c36a5c46e178adbb1f79495bde8d +Subproject commit 38c510a9990076faba0d992609aeaa95b5895d03 diff --git a/reader b/reader index bc617de..8b60a1e 160000 --- a/reader +++ b/reader @@ -1 +1 @@ -Subproject commit bc617deeaf2ae684f20c1000ed7cd52f9a61d0a7 +Subproject commit 8b60a1ece7103f0751776e416d22639b1e0df950 diff --git a/server b/server index 66a0801..f59a51d 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit 66a08012390d91dca05ad8d4d48470c7c999eff4 +Subproject commit f59a51d90d2d440493dbf902cbd7ccdbf67c8abc