feat: the Bosco desktop — interactive Portal shell #82

Merged
manlycucumber merged 2 commits from feat/portal-desktop into develop 2026-07-06 21:32:39 +00:00
manlycucumber commented 2026-07-06 21:15:40 +00:00 (Migrated from github.com)

The v0.2.0 interface, built to the locked spec (docs/design/interface-direction.md): an interactive retro desktop, ported from the reference prototype into SvelteKit + Svelte 5 and wired to the v0.1.0 Core primitives.

The shell (src/lib/portal/)

  • Window manager — draggable windows with top-right − □ ×, click-to-raise, Esc-to-close, focus return, and a bottom taskbar of open windows.
  • Menu bar (Home · Chapel · Library · Settings · Help + profile chip + liturgical-season clock), the six app-icon dock, and every window.
  • Windows: Home (masthead · bulletin · six doors · Day-of-the-Day · footer), Settings, Help, About Bosco, the "Who's exploring?" first-run picker, and six placeholder rooms.

Wired to Core

  • Liturgy (liturgy.ts) resolves today from $lib/calendar → the wallpaper follows the day's liturgical colour (data-lit) and drives the Day-of-the-Day + season clock. The mockup's stand-in Easter calculator is gone — the vendored calendar.json is the source.
  • Reading level + Sounds persist through $lib/state prefs; data-tier drives the reading type scale. Church-colour preview in Settings.
  • Profiles + avatar generator persist through $lib/stateProfile gains an optional, backward-compatible avatar; createProfile(name, avatar) + setProfileAvatar. (#70)
  • Gentle Web-Audio chimes (sounds.ts), gated by the Sounds preference — no audio files, stays offline.

Verification (all green locally)

pnpm check (0/0) · pnpm lint · pnpm guard:colour (every component colour is a token) · pnpm build · guard:external · guard:content · guard:offline · pnpm test:unit44 passed (+ new liturgy / avatar / profile-avatar suites).

In-browser: hydration is clean (no console errors), liturgy resolves to green / Time after Pentecost today, and reading-level, colour-preview, profile-create, and the window/taskbar flows all work.

Advances #74 (Portal shell), #75 (reading level), #76 (liturgical theming), #77 (Saint-of-the-Day), #70 (avatar generator). a11y floor + styled 404 (#79/#80) follow in the next PR.

The **v0.2.0 interface**, built to the locked spec ([`docs/design/interface-direction.md`](../blob/develop/docs/design/interface-direction.md)): an interactive retro **desktop**, ported from the reference prototype into SvelteKit + Svelte 5 and wired to the v0.1.0 Core primitives. ## The shell (`src/lib/portal/`) - **Window manager** — draggable windows with top-right **− □ ×**, click-to-raise, `Esc`-to-close, focus return, and a **bottom taskbar** of open windows. - **Menu bar** (Home · Chapel · Library · Settings · Help + profile chip + liturgical-season clock), the **six app-icon dock**, and every window. - **Windows**: Home (masthead · bulletin · six doors · Day-of-the-Day · footer), **Settings**, **Help**, **About Bosco**, the **"Who's exploring?"** first-run picker, and six placeholder rooms. ## Wired to Core - **Liturgy** (`liturgy.ts`) resolves *today* from `$lib/calendar` → the **wallpaper follows the day's liturgical colour** (`data-lit`) and drives the Day-of-the-Day + season clock. The mockup's stand-in Easter calculator is gone — the vendored `calendar.json` is the source. - **Reading level** + **Sounds** persist through `$lib/state` prefs; `data-tier` drives the reading type scale. **Church-colour preview** in Settings. - **Profiles + avatar generator** persist through `$lib/state` — `Profile` gains an optional, backward-compatible `avatar`; `createProfile(name, avatar)` + `setProfileAvatar`. (#70) - **Gentle Web-Audio chimes** (`sounds.ts`), gated by the Sounds preference — no audio files, stays offline. ## Verification (all green locally) `pnpm check` (0/0) · `pnpm lint` · `pnpm guard:colour` (every component colour is a token) · `pnpm build` · `guard:external` · `guard:content` · `guard:offline` · `pnpm test:unit` — **44 passed** (+ new liturgy / avatar / profile-avatar suites). In-browser: hydration is clean (no console errors), liturgy resolves to **green / Time after Pentecost** today, and reading-level, colour-preview, profile-create, and the window/taskbar flows all work. Advances **#74** (Portal shell), **#75** (reading level), **#76** (liturgical theming), **#77** (Saint-of-the-Day), **#70** (avatar generator). a11y floor + styled 404 (#79/#80) follow in the next PR.
Sign in to join this conversation.
No reviewers
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
Bosco/bosco!82
No description provided.