docs: Authors, Series & Categories browse/manage pages (bookshelf-eseay.6) #1360

Merged
zombor merged 2 commits from bd-bookshelf-eseay.6 into main 2026-08-06 17:00:34 +00:00
Owner

Summary

  • Adds docs/content/docs/your-library/authors-series-categories.md covering all three sidebar browse pages
  • Authors: browse page, detail page (photo, bio, books strip, Search Author tab), and manage actions (Rename / Merge / Delete)
  • Series: browse page with infinite-scroll card grid, cross-links to the existing series detail doc in organizing/series-authors.md, and manage actions (Rename / Merge / Delete)
  • Categories: browse page, and manage actions — per-card ⋮ menu (Rename / Delete) plus the bulk-select checkbox merge flow
  • All management actions described as permission-gated (admin/manage-metadata users only)
  • Adds the new card to docs/content/docs/your-library/_index.md

Test plan

  • Hugo build passes (CI docs job)
  • New page renders at /docs/your-library/authors-series-categories/
  • Card appears on the Your Library index page
  • Cross-links to /docs/organizing/series-authors/ and /docs/metadata/ resolve

Closes bead bookshelf-eseay.6 on merge.

## Summary - Adds `docs/content/docs/your-library/authors-series-categories.md` covering all three sidebar browse pages - Authors: browse page, detail page (photo, bio, books strip, Search Author tab), and manage actions (Rename / Merge / Delete) - Series: browse page with infinite-scroll card grid, cross-links to the existing series detail doc in organizing/series-authors.md, and manage actions (Rename / Merge / Delete) - Categories: browse page, and manage actions — per-card ⋮ menu (Rename / Delete) plus the bulk-select checkbox merge flow - All management actions described as permission-gated (admin/manage-metadata users only) - Adds the new card to `docs/content/docs/your-library/_index.md` ## Test plan - [ ] Hugo build passes (CI docs job) - [ ] New page renders at /docs/your-library/authors-series-categories/ - [ ] Card appears on the Your Library index page - [ ] Cross-links to /docs/organizing/series-authors/ and /docs/metadata/ resolve Closes bead bookshelf-eseay.6 on merge.
docs: document Authors, Series & Categories browse/manage pages (bookshelf-eseay.6)
All checks were successful
/ Test Race (pull_request) Successful in 2m4s
/ Lint (pull_request) Successful in 2m57s
/ Hugo build (pull_request) Successful in 29s
/ E2E API (pull_request) Successful in 1m36s
/ Coverage (pull_request) Successful in 2m37s
/ JS Unit Tests (pull_request) Successful in 1m36s
/ Integration (pull_request) Successful in 2m35s
/ E2E Browser (pull_request) Successful in 5m27s
c8c37f8c29
Add docs/content/docs/your-library/authors-series-categories.md covering:
- Browsing authors, series, and categories from the sidebar
- The author detail page (photo, bio, books strip, Search Author tab)
- Series detail page cross-link to organizing/series-authors.md
- Manage actions: rename, merge (typeahead for authors/series; checkbox bulk
  for categories), and delete — all permission-gated
- Tips on duplicates, deletions, and the permission gate

Also adds the new card to docs/content/docs/your-library/_index.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Author
Owner

Security Review — PR #1360 (bookshelf-eseay.6)

Scope verification: The diff is strictly confined to two Markdown documentation files:

  • docs/content/docs/your-library/_index.md (one line added, a card link)
  • docs/content/docs/your-library/authors-series-categories.md (new file, 128 lines, Markdown only)

No production Go code, SQL, templates, JS, or configuration was touched. No secrets or tokens present.

Permission framing audit: The doc consistently frames rename/merge/delete actions as requiring "library management permissions" and explicitly states the ⋮ menu and merge checkboxes are only visible to users who have that permission. This is verified against the source: all three manage handler route files (internal/authors/routes.go, internal/series/routes.go, internal/categories/routes.go) gate mutation endpoints (PATCH, POST /merge, DELETE) behind the manageRequired middleware, which resolves to manage_metadata_config (or admin). The doc does not imply unprivileged users can perform these actions.

No unsafe guidance. No PII or secrets. No cross-user leak implied.

REVIEW VERDICT: 0 blocker, 0 major, 0 minor

**Security Review — PR #1360 (bookshelf-eseay.6)** **Scope verification:** The diff is strictly confined to two Markdown documentation files: - `docs/content/docs/your-library/_index.md` (one line added, a card link) - `docs/content/docs/your-library/authors-series-categories.md` (new file, 128 lines, Markdown only) No production Go code, SQL, templates, JS, or configuration was touched. No secrets or tokens present. **Permission framing audit:** The doc consistently frames rename/merge/delete actions as requiring "library management permissions" and explicitly states the ⋮ menu and merge checkboxes are only visible to users who have that permission. This is verified against the source: all three manage handler route files (`internal/authors/routes.go`, `internal/series/routes.go`, `internal/categories/routes.go`) gate mutation endpoints (`PATCH`, `POST /merge`, `DELETE`) behind the `manageRequired` middleware, which resolves to `manage_metadata_config` (or admin). The doc does not imply unprivileged users can perform these actions. No unsafe guidance. No PII or secrets. No cross-user leak implied. REVIEW VERDICT: 0 blocker, 0 major, 0 minor
Author
Owner

Code/accuracy review of PR #1360 (bookshelf-eseay.6) per .claude/rules/review-standard.md.


[MAJOR] docs/content/docs/your-library/authors-series-categories.md:26 — Author photo described as a link to the detail page, but it is not clickable

The doc says "Clicking their card photo opens the author's own detail page." The actual authors_index.html template wraps the photo in a plain <div class="author-card-photo-wrap">, not an <a> tag. No JS controller adds a click handler that navigates to /authors/{id}. The only link on each author card is the author's name, which goes to /books?author_id=... (the filtered book list), not to the author detail page. There is no path from the authors index to the individual author detail page in the current UI at all.

Fix: change the sentence to reflect that the author's name is the only link on the card, and that it leads to the filtered book list. Remove the claim about clicking the photo. If a link to the detail page is intended but not yet wired, note it as "coming soon" rather than describing it as functional.


[MAJOR] docs/content/docs/your-library/authors-series-categories.md:29-32 — "Search Author" tab described as functional; it is a stub

The doc describes the Search Author tab with functional details: "lets you look up the author by name on Audnexus and pull in a biography and photo. Type a name, click Search, review the results, and click Apply on the match you want." The actual author_show.html template at line 108 renders the panel as <p class="empty-state">Search Author coming soon.</p>. There is no Search input, no Search button, and no Apply button in the current UI. This is a stub.

Fix: match the "Edit Details" treatment — write "Search Author — coming soon." instead of describing the interaction as implemented.


[MINOR] docs/content/docs/your-library/authors-series-categories.md:87 — Category kebab menu described as having per-card "Merge" action; it does not

The category ⋮ menu only has Rename and Delete (see category_manage_controller.js lines 198-200). The merge feature for categories is bulk-only (via checkbox selection), not available per-card. The doc correctly describes the bulk merge flow later in the section, but the opening phrase "The actions available are: From the ⋮ menu (one category at a time): Rename / Delete" is accurate. The doc does not say "Merge" is in the category ⋮ menu — this is fine. Disregard; on re-read, no finding here.


[MINOR] docs/content/docs/your-library/authors-series-categories.md:48 — Series section says "primary author" is shown on the card, but that field is conditional

The template (series_index.html line 40-43) shows {{if .FirstAuthor}}<p class="series-card-author">{{.FirstAuthor}}</p>{{end}} — the author is only displayed when present. The doc states it as always present ("the series name, the primary author, and a badge with the book count"). Should say "the primary author (when known)" or similar.


REVIEW VERDICT: 0 blocker, 2 major, 1 minor

Code/accuracy review of PR #1360 (bookshelf-eseay.6) per `.claude/rules/review-standard.md`. --- [MAJOR] docs/content/docs/your-library/authors-series-categories.md:26 — Author photo described as a link to the detail page, but it is not clickable The doc says "Clicking their card photo opens the author's own detail page." The actual `authors_index.html` template wraps the photo in a plain `<div class="author-card-photo-wrap">`, not an `<a>` tag. No JS controller adds a click handler that navigates to `/authors/{id}`. The only link on each author card is the author's **name**, which goes to `/books?author_id=...` (the filtered book list), not to the author detail page. There is no path from the authors index to the individual author detail page in the current UI at all. Fix: change the sentence to reflect that the author's name is the only link on the card, and that it leads to the filtered book list. Remove the claim about clicking the photo. If a link to the detail page is intended but not yet wired, note it as "coming soon" rather than describing it as functional. --- [MAJOR] docs/content/docs/your-library/authors-series-categories.md:29-32 — "Search Author" tab described as functional; it is a stub The doc describes the Search Author tab with functional details: "lets you look up the author by name on Audnexus and pull in a biography and photo. Type a name, click **Search**, review the results, and click **Apply** on the match you want." The actual `author_show.html` template at line 108 renders the panel as `<p class="empty-state">Search Author coming soon.</p>`. There is no Search input, no Search button, and no Apply button in the current UI. This is a stub. Fix: match the "Edit Details" treatment — write "Search Author — coming soon." instead of describing the interaction as implemented. --- [MINOR] docs/content/docs/your-library/authors-series-categories.md:87 — Category kebab menu described as having per-card "Merge" action; it does not The category ⋮ menu only has **Rename** and **Delete** (see `category_manage_controller.js` lines 198-200). The merge feature for categories is bulk-only (via checkbox selection), not available per-card. The doc correctly describes the bulk merge flow later in the section, but the opening phrase "The actions available are: From the ⋮ menu (one category at a time): Rename / Delete" is accurate. The doc does not say "Merge" is in the category ⋮ menu — this is fine. Disregard; on re-read, no finding here. --- [MINOR] docs/content/docs/your-library/authors-series-categories.md:48 — Series section says "primary author" is shown on the card, but that field is conditional The template (`series_index.html` line 40-43) shows `{{if .FirstAuthor}}<p class="series-card-author">{{.FirstAuthor}}</p>{{end}}` — the author is only displayed when present. The doc states it as always present ("the series name, the primary author, and a badge with the book count"). Should say "the primary author (when known)" or similar. --- REVIEW VERDICT: 0 blocker, 2 major, 1 minor
zombor force-pushed bd-bookshelf-eseay.6 from c8c37f8c29
All checks were successful
/ Test Race (pull_request) Successful in 2m4s
/ Lint (pull_request) Successful in 2m57s
/ Hugo build (pull_request) Successful in 29s
/ E2E API (pull_request) Successful in 1m36s
/ Coverage (pull_request) Successful in 2m37s
/ JS Unit Tests (pull_request) Successful in 1m36s
/ Integration (pull_request) Successful in 2m35s
/ E2E Browser (pull_request) Successful in 5m27s
to 1e0f485104
All checks were successful
/ Test Race (pull_request) Successful in 1m54s
/ Hugo build (pull_request) Successful in 18s
/ Coverage (pull_request) Successful in 2m17s
/ Integration (pull_request) Successful in 2m18s
/ Lint (pull_request) Successful in 2m26s
/ JS Unit Tests (pull_request) Successful in 52s
/ E2E API (pull_request) Successful in 1m13s
/ E2E Browser (pull_request) Successful in 4m41s
2026-08-06 03:57:04 +00:00
Compare
zombor force-pushed bd-bookshelf-eseay.6 from 1e0f485104
All checks were successful
/ Test Race (pull_request) Successful in 1m54s
/ Hugo build (pull_request) Successful in 18s
/ Coverage (pull_request) Successful in 2m17s
/ Integration (pull_request) Successful in 2m18s
/ Lint (pull_request) Successful in 2m26s
/ JS Unit Tests (pull_request) Successful in 52s
/ E2E API (pull_request) Successful in 1m13s
/ E2E Browser (pull_request) Successful in 4m41s
to b09473deda
All checks were successful
/ E2E API (pull_request) Successful in 1m32s
/ Test Race (pull_request) Successful in 2m4s
/ Hugo build (pull_request) Successful in 22s
/ Coverage (pull_request) Successful in 2m18s
/ Lint (pull_request) Successful in 2m56s
/ Integration (pull_request) Successful in 2m29s
/ JS Unit Tests (pull_request) Successful in 54s
/ E2E Browser (pull_request) Successful in 4m8s
2026-08-06 16:37:35 +00:00
Compare
zombor merged commit 904e62938f into main 2026-08-06 17:00:34 +00:00
Sign in to join this conversation.
No reviewers
No labels
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
zombor/pergamum!1360
No description provided.