feat(filters): panel removal + All-Books field-values fix (faceted plan Phase 8)

- Remove the Phase 7 facet-panel UI: SSR route, facet_panel.templ,
  FacetCountsForView, drawer panel block, panel TS + .facet-* CSS.
  The ENGINE stays (FacetCountsUnderFilters, all-facets endpoint,
  drift guard) — it becomes the Phase 9 builder's machinery.
- Fix the All-Books bug: field-values autocomplete (author/genre/
  tags/narrator/series/language) treats library_id as OPTIONAL —
  absent aggregates every VISIBLE library (family lens in-query);
  explicit out-of-set library_id is now 403, never a silent pass.
  The four scalar Search*Values queries get the nullable shape.
- toast.ts: suggestion fetches are exempt from error toasts
  (console-only) — a failed background hint never interrupts.
- TestFacetPanelPartial deleted with the behavior; TestFieldValuesAll-
  Libraries pins the fix (200 + cross-library aggregation, family
  lens, 403). Contract-pins changelog entry added.
This commit is contained in:
John O'Keefe committed 2026-10-20 12:20:51 -04:00
1 parent f52bb6f073
commit ebb7f4a5b0
14 files changed
+192 -643

No files matched your search

-35
View File
@@ -874,41 +874,6 @@
color: var(--text-secondary);
}
/* ---------- Facet panel (filter drawer, Phase 7) ---------- */
/* The values are templ-rendered (templates/facet_panel.templ); this
is look only. A value button is plain until active: active means
"currently in that facet's filter" — accent-tinted like a chip. */
.facet-section-summary {
list-style: none;
}
.facet-section-summary::-webkit-details-marker {
display: none;
}
.facet-section-summary::before {
content: "▸";
display: inline-block;
margin-right: 0.5rem;
color: var(--text-secondary);
transition: transform 0.15s ease;
font-size: 0.7rem;
}
.facet-section[open] .facet-section-summary::before {
transform: rotate(90deg);
}
.facet-value-btn {
background-color: transparent;
}
.facet-value-btn:hover {
background-color: var(--surface-hover);
}
.facet-value-btn.facet-value-active {
background-color: var(--accent-muted);
color: var(--accent);
}
.facet-value-btn.facet-value-active span {
color: var(--accent);
}
.loading-spinner {
display: inline-block;
width: 40px;