feat: the Library — tiered content rendering #85
No reviewers
Labels
No labels
area: arcade
area: art-studio
area: calendar
area: chapel
area: content
area: design
area: field-guide
area: infra
area: library
area: os
area: portal
area: sync
area: typing
blocked
breaking
bug
content: approved
content: changes-requested
content: drafting
content: needs-doctrinal-review
content: needs-review
dependencies
documentation
duplicate
enhancement
epic
github_actions
good first issue
help wanted
invalid
javascript
needs-triage
priority: high
priority: low
priority: medium
question
type: enhancement
type: feature
type: fix
type: perf
type: security
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Bosco/bosco!85
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/library-tiered-rendering"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The foundation of v0.3.0, the Library — Bosco's flagship. Every published topic now renders at three reading tiers, both as prerendered
/libraryroutes and inside the desktop Library window. First of five engine PRs; architecture is vetted (an 8-agent design workshop) and written up indocs/architecture/library.md.What's here
One set of views, two hosts. Presentation-only components in
src/lib/library/(ArticleView,CategoryView,LibraryHome,TopicCard,TierSwitch,StandaloneChrome) that know nothing about routing or windows, mounted by:/library/,/library/[category]/,/library/[category]/[topic]/(one static HTML file per published topic; dynamicentries()from the gatedtopics[]). The canonical, offline, deep-linkable, no-JS face, wrapped in retroStandaloneChromewith an "Open in Bosco" link.LibraryBodyreplaces the placeholder room, browsing the same views via a smallLibraryBrowserstore.In-window links never navigate. Internal links are real
<a href>(so deep links / middle-click / no-JS work), but one base-path-aware delegated click intercept turns an unmodified left-click into a store move — so opening a topic keeps every other window's position and z-order (Window.sveltekeeps windows mounted; agotowould tear the desktop down). Focus moves to the new view's heading.Tiers — the eager default makes prerender work. An
{#await loader()}in a template SSRs its pending branch → empty HTML. Instead the content plugin emitsvirtual:bosco/content-eager, a static import of each published topic's default tier, rendered synchronously → real prose in the prerendered HTML. Consequences: one Pagefind record per topic by construction (data-pagefind-bodyplaced for PR3); the gate still keepspendingbodies out of production (noimport.meta.glob(eager));load()stays serializable (returns identity, not the component). The other two tiers load lazily on tier switch. New additivedefault_tierfrontmatter, clamped to the nearest declared tier.Verification (all green)
pnpm build(adapter-static strict) ·guard:external·guard:content·guard:colour·guard:offline— the offline smoke now also asserts the prerendered topic HTML contains default-tier prose (catches an all-lazy regression).svelte-check0/0 ·lintclean · 49 unit tests (addspickDefaultTier+ eager-module coverage).offline.spec(theBoscoheading lives in the first-run-hidden Home window; verified failing on pristinedevelop).Not in this PR
Cross-links / See-also / Surprise-me / glossary (PR2) · Pagefind search (PR3) · category-landing & Archives visual design (PR4) · AI content-pipeline tooling (PR5) · the 3-topic proof + 18-topic launch set (owner-paced content).