[Reader][Social] Frontend: profile Social tab, reader Community tab, upvotes, reading-list dialog #634

Closed
opened 2026-07-17 04:50:03 +00:00 by spikerj · 1 comment
Owner

Frontend for the social reading layer (backend #631 / backend PR #340). Shipping in two reviewable parts:

Part A (this PR): social models (@spikersoft/models + SocialSettings on UserProfile), ReaderService social methods, and the profile Social tab — the opt-in that gates everything. Three independent toggles (see others' shared bookmarks / share my bookmarks / share my reading list, all default off) + display-name-mode select. The tab mirrors the sponsorship-form pattern and is hidden for excluded (child/minor) accounts, matching the backend nulling Social for them.

Part B (next PR): reader Community sidebar tab (renders only when the server says enabled), toolbar people-icon badge with per-page count, upvote toggle (optimistic), "Books they've read" → shared-reading-list dialog, and a "Share with other readers" toggle in the annotation dialog (shown only when social.shareBookmarks is on).

All user-authored text (notes/highlights) renders via Angular interpolation only — never the [innerHTML] sink (#409).

PRs: spikersoft-angular feat/social-frontend-profile-tab (A) + a follow-up (B).

Frontend for the social reading layer (backend #631 / backend PR #340). Shipping in two reviewable parts: **Part A (this PR):** social models (`@spikersoft/models` + `SocialSettings` on `UserProfile`), `ReaderService` social methods, and the **profile Social tab** — the opt-in that gates everything. Three independent toggles (see others' shared bookmarks / share my bookmarks / share my reading list, all default off) + display-name-mode select. The tab mirrors the sponsorship-form pattern and is hidden for excluded (child/minor) accounts, matching the backend nulling `Social` for them. **Part B (next PR):** reader Community sidebar tab (renders only when the server says enabled), toolbar people-icon badge with per-page count, upvote toggle (optimistic), "Books they've read" → shared-reading-list dialog, and a "Share with other readers" toggle in the annotation dialog (shown only when `social.shareBookmarks` is on). All user-authored text (notes/highlights) renders via Angular interpolation only — never the `[innerHTML]` sink (#409).</body> PRs: spikersoft-angular `feat/social-frontend-profile-tab` (A) + a follow-up (B).
Author
Owner

Resolved in spikersoft-angular PR #221 (merged to master). Full social reading frontend: social models + ReaderService methods, the profile Social tab (hidden for excluded accounts), and the reader Community experience — toolbar people-badge that opens the Community sidebar tab, per-page shared bookmarks (interpolation-only) with optimistic upvotes, shared-reading-list dialog, and the annotation "Share with other readers" toggle. Build/lint clean, i18n en↔es parity green, reader+profile specs green. Pairs with backend #631 (#340). Closing.

Resolved in spikersoft-angular PR #221 (merged to `master`). Full social reading frontend: social models + ReaderService methods, the profile **Social tab** (hidden for excluded accounts), and the reader **Community experience** — toolbar people-badge that opens the Community sidebar tab, per-page shared bookmarks (interpolation-only) with optimistic upvotes, shared-reading-list dialog, and the annotation "Share with other readers" toggle. Build/lint clean, i18n en↔es parity green, reader+profile specs green. Pairs with backend #631 (#340). Closing.
Sign in to join this conversation.