feat: show item and page tags in the library and viewer; installable as an app (PWA) #35

Merged
jfro merged 2 commits from tags-and-pwa into main 2026-10-17 16:09:59 +00:00
Owner

Closes #22, closes #21.

#22 Tags in the UI (both kinds, per the comment on the issue)

  • Remarkable.tags/1: an item's own tags (.content tags), oldest first, no repeats ignoring case. Remarkable.page_tags/1: pageTags grouped by pageId.
  • New <.tag_list> component: item tags as filled chips, page-only tags as dashed chips with a page icon, +N past a limit, all names in the title.
  • Library: folder cards and document cards show their tags (up to 3); a document's card also shows tags that are only on its pages.
  • Viewer: the notebook's tags under its title; the current page's tags above the page; pages with tags get a small tag badge in the page list.

#21 PWA

  • manifest.webmanifest (standalone, start /, theme #18181b) with 192/512 icons, a maskable 512 (mark inside the safe zone), and the SVG favicon; linked from the root layout with theme-color and iOS web-app meta.
  • sw.js: precaches only offline.html and its icon; page navigations go to the network and fall back to the offline page when the server can't be reached. Nothing the app shows is cached, so a signed-out device keeps nothing and LiveView behaves as before. Registered from app.js.
  • All of these are in static_paths, so they're served signed out.
  • Installing needs HTTPS (or localhost), which a prod deploy behind TLS has.

Testing: tag parsing, Library chips (item and page kinds), viewer tags and page badges, and the manifest, icons, service worker and offline page being served. 705 passed; --warnings-as-errors (test and prod) and format --check-formatted clean. In the browser against a synced library: tags on folders and notebooks, page tags on October 2026's page 17. Chromium (via DevTools protocol) reports no installability errors, the manifest parses, and the service worker activates.

Also: tags lead somewhere. Every tag chip is a link to /tags/:name, which lists everything outside the trash with that tag (ignoring case): folders, notebooks/books, and single pages (thumbnails opening at that page). /tags lists every tag in use with how many folders, items and pages have it, linked from a new Tags button in My files. Remarkable.tagged/2 and all_tags/1. Library cards were restructured so the chips are not links inside the card link: folder cards use a stretched link, document cards put tags below their link. 710 tests pass.

Closes #22, closes #21. **#22 Tags in the UI** (both kinds, per the comment on the issue) - `Remarkable.tags/1`: an item's own tags (`.content` `tags`), oldest first, no repeats ignoring case. `Remarkable.page_tags/1`: `pageTags` grouped by `pageId`. - New `<.tag_list>` component: item tags as filled chips, page-only tags as dashed chips with a page icon, `+N` past a limit, all names in the title. - **Library:** folder cards and document cards show their tags (up to 3); a document's card also shows tags that are only on its pages. - **Viewer:** the notebook's tags under its title; the current page's tags above the page; pages with tags get a small tag badge in the page list. **#21 PWA** - `manifest.webmanifest` (standalone, start `/`, theme `#18181b`) with 192/512 icons, a maskable 512 (mark inside the safe zone), and the SVG favicon; linked from the root layout with `theme-color` and iOS web-app meta. - `sw.js`: precaches only `offline.html` and its icon; page navigations go to the network and fall back to the offline page when the server can't be reached. Nothing the app shows is cached, so a signed-out device keeps nothing and LiveView behaves as before. Registered from `app.js`. - All of these are in `static_paths`, so they're served signed out. - Installing needs HTTPS (or localhost), which a prod deploy behind TLS has. **Testing**: tag parsing, Library chips (item and page kinds), viewer tags and page badges, and the manifest, icons, service worker and offline page being served. 705 passed; `--warnings-as-errors` (test and prod) and `format --check-formatted` clean. In the browser against a synced library: tags on folders and notebooks, page tags on October 2026's page 17. Chromium (via DevTools protocol) reports no installability errors, the manifest parses, and the service worker activates. **Also: tags lead somewhere.** Every tag chip is a link to `/tags/:name`, which lists everything outside the trash with that tag (ignoring case): folders, notebooks/books, and single pages (thumbnails opening at that page). `/tags` lists every tag in use with how many folders, items and pages have it, linked from a new Tags button in My files. `Remarkable.tagged/2` and `all_tags/1`. Library cards were restructured so the chips are not links inside the card link: folder cards use a stretched link, document cards put tags below their link. 710 tests pass.
feat: show item and page tags in the library and viewer; installable as an app (PWA)
All checks were successful
CI / test (pull_request) Successful in 1m11s
40d16127bb
Closes #22, closes #21
feat: tags are links to everything with them; a page of all tags
All checks were successful
CI / test (pull_request) Successful in 1m12s
4de21a7036
jfro merged commit b8b2508002 into main 2026-10-17 16:09:59 +00:00
jfro deleted branch tags-and-pwa 2026-10-17 16:09:59 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jfro/rm-analyzer!35
No description provided.