Add Arthuriana: interactive Arthurian legend character map with heraldry#145
Conversation
Arthuriana: ports the Claude Design prototype (medieval heraldic character network) into the Vite/React build as two new pages — apps/arthuriana.html (armorial graph) and apps/arthuriana-studio.html (coat-of-arms builder). Converts Babel globals to ES module exports, replaces the host-only TweaksPanel with a persistent ArthurianControls overlay (layout buttons + relation toggles), and wires up nav links in SiteNavPanel and index.html. Username display: ContributorPortalApp now prefers clerkUser.username over fullName/firstName when building displayName. adminService ensureUserExists now syncs display_name on every login (not only when empty), so existing users get their username applied on next sign-in. https://claude.ai/code/session_013yG27kBU5JeKdX29ZwV1kv
Replaces the generic gold cross-hatch on the topbar shield with a white falcon silhouette traced from the Windhover logo — beak facing left, wing sweeping to the upper-right, tail fanning to the lower-right, all coordinates verified inside the heater shield's curved boundary. https://claude.ai/code/session_013yG27kBU5JeKdX29ZwV1kv
…hield Replaces the hand-traced SVG path (which didn't read as a bird at small scale) with the actual Windhover_BLK.png imported at build time, rendered white via SVG feColorMatrix inversion, and clipped to the shield interior. Vite processes the asset correctly at build time. https://claude.ai/code/session_013yG27kBU5JeKdX29ZwV1kv
SVG grows from 34×40 to 44×52; the image element shrinks from 78×57 to 60×44 viewBox units so the bird stays at ~26×19 px while the shield gains ~5 px of red border on each side. https://claude.ai/code/session_013yG27kBU5JeKdX29ZwV1kv
Shield: 44×52 → 40×47 px. Image element: 60×44 → 66×48 viewBox units to hold the falcon at the same ~26×19 px while the shield shrinks. https://claude.ai/code/session_013yG27kBU5JeKdX29ZwV1kv
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9e25ed79b0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (existing) { | ||
| const updates = {}; | ||
| if (!existing.display_name && displayName) updates.display_name = displayName; | ||
| if (displayName && displayName !== existing.display_name) updates.display_name = displayName; |
There was a problem hiding this comment.
Preserve existing display names on sign-in
When an existing user row already has a display_name, this now overwrites it whenever Clerk reports a different displayName. That regresses the documented backfill-only behavior for claimed/pre-seeded users: for example, an admin-invited contributor whose row was seeded as "Jane Smith" will be renamed to their Clerk username on the next portal load, changing names shown in comments/admin views without an explicit profile edit.
Useful? React with 👍 / 👎.
| if (!character) return null; | ||
|
|
||
| const byId = new Map(allCharacters.map((c) => [c.id, c])); | ||
| const rels = (character.relations || []).filter(r => byId.has(r.to)); |
There was a problem hiding this comment.
Apply relation filters in the detail panel
The app passes the current relation filter into Panel, but the panel builds its relation list from every relation regardless of whether that type is disabled. In the Arthuriana page, disabling a relation type hides those edges in the graph while the selected character’s detail panel still shows the filtered-out bucket, so the controls give inconsistent results for users inspecting a character.
Useful? React with 👍 / 👎.
Disabled relation types now hide their buckets in the panel to match the graph, which already hides those edges. Fixes inconsistency noted in code review. https://claude.ai/code/session_013yG27kBU5JeKdX29ZwV1kv
Deploying profile-site with
|
| Latest commit: |
ae05a8f
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://f362523f.profile-site-bgf.pages.dev |
| Branch Preview URL: | https://claude-add-arthuriana-sectio.profile-site-bgf.pages.dev |
Summary
Introduces a comprehensive interactive visualization of Arthurian legend characters, featuring a dynamic graph layout system, heraldic shield rendering engine, and a dedicated heraldic design studio.
Key Changes
Core Application (
ArthurianApp.jsx)Character Database (
characters.js)Heraldic System (
ArthurianHeraldry.jsx)Graph Layout Engine (
ArthurianGraph.jsx)Heraldic Studio (
ArthurianStudio.jsx)Styling
ArthurianApp.css,ArthurianStudio.css)Integration
Notable Implementation Details
https://claude.ai/code/session_013yG27kBU5JeKdX29ZwV1kv