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).
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.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Frontend for the social reading layer (backend #631 / backend PR #340). Shipping in two reviewable parts:
Part A (this PR): social models (
@spikersoft/models+SocialSettingsonUserProfile),ReaderServicesocial 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 nullingSocialfor 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.shareBookmarksis 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).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.