--- title: Site global navigation — Plan type: feat date: 2026-10-23 topic: site-global-navigation status: approved-implementing production: https://digitalwalls.vercel.app ---

Site global navigation — Plan

Status: Approved by Adam (2026-10-23). Implementation in this branch. Audience: Adam (approve), coding agent (build after approval). Constraint: Preserve Visit / Arrange / Share wall chrome; nav complements it. Match Option B / soft-elevated language in styles.css — no generic purple AI aesthetic.

Locked decisions (2026-10-23)

1. Wall Visit: No persistent site-nav bar. Explore · Studio · My walls live under the collapsed ··· menu (Visit and Arrange). 2. Studio: Include in the public triangle now for easy access. May become more private later — do not build auth gating yet; ship the link only. 3. Label: My walls (not “Walls”).

---

1. Product goal

A person can move between the three primary product surfaces without hunting for scattered links:

DestinationRouteRole
Explore/ (explore.html)Public homepage / discover walls
Studio/studioCreative reference library (server/studio.js)
My walls/boards (boards.html)Signed-in boards list; wall canvas remains /wall

Success means: from any of those surfaces (and from wall chrome in a non-intrusive way), the other two destinations are one obvious click away, with a clear “you are here,” without turning Visit into a dashboard.

Success criteria

1. Explore, Studio, and Boards each expose the same three-destination nav with correct active state. 2. Guests can reach Explore and Studio; My walls either lands on sign-in (current boards page) or is labeled so intent is clear. 3. Wall Visit mode stays scene-first: Visit / Arrange / Share remain primary; site nav does not compete with the floating visit chrome or sit on the wall hero. 4. Labels and destinations are consistent (no more “Back to the wall” that actually goes to Explore). 5. Desktop and ~390px mobile remain usable; no horizontal page overflow.

---

2. Current state (inventory)

Chrome today is ad hoc, not a shared site nav.

Explore (public/explore.html)

Boards (public/boards.html)

Wall (public/index.html → /wall, also /?board=…)

Studio (server/studio.js)

Gaps this plan closes

---

3. Surfaces that get the nav

SurfaceGlobal site nav?Notes
ExploreYes — primary placementReplace / absorb today’s Explore-only CTAs into the shared pattern; keep “Try a guest board” as a secondary action near the header, not as a fourth nav peer.
BoardsYes — primary placementPromote from footer-only; footer can keep secondary links (Open editor) or drop duplicates after nav ships.
Studio (index + /studio/read/*)Yes — primary placementReplace “Back to the wall”; keep in-page section anchors as local nav under the H1.
Wall VisitOptional / deferred — not in first ship (recommended)Keep floating Visit chrome untouched. Reach site destinations via ··· → Boards section already, or a single quiet “Explore” / “My walls” entry in the menu if Adam wants a minimal escape hatch in v1.
Wall ArrangeSoft presence only in v1Prefer one overflow entry (e.g. under Boards menu: Explore, Studio, My walls) rather than a third control cluster beside Visit/Arrange/Share.
Wall start / auth screenAlign links to same labelsSame three destinations; drop conflicting “Open editor” as a peer of Explore if it clutters — or keep as creation CTA separate from site nav.
ExceptionsRecovery / account dialogs, catalog/edit modals, focus modeNo site nav overlay on dialogs or object focus.

Recommendation (v1): Ship the shared triangle on Explore, Boards, Studio. On Wall, do not add a persistent site-nav bar in Visit or Arrange; optionally add menu items only. Revisit a wall “home” affordance after v1 if people feel trapped on a canvas.

---

4. Labels and destinations

Proposed canonical set:

LabelhrefActive when
Explore/Path is / and page is explore (not /?board= wall)
Studio/studioPath starts with /studio
My walls/boardsPath is /boards

Rationale: “My walls” already ships on Explore and Boards titles; “Explore” matches the public surface name; “Studio” matches the route and product language.

Not peers of the triangle (keep as secondary CTAs):

---

5. Auth behavior

PersonaExploreStudioMy walls
GuestFull accessFull accessLink always visible; /boards shows existing sign-in form (“Sign in to see every wall…”) — no change to boards auth model
Signed-inFull access; upvote copy already points at My wallsFull accessBoards list as today

Rules for v1:

---

6. Visual placement (visit-first)

Explore / Boards / Studio (document pages)

Wall

---

7. Active state

---

8. Mobile vs desktop

BreakpointBehavior
DesktopHorizontal site nav in the header; page title block below or beside brand as today on Explore.
≤640px (Studio already uses this) / Explore’s existing wrapBrand + nav stack; nav links in a row that wraps, or a compact horizontal list with adequate tap targets (≥44px height preferred).
Wall mobileNo new site-nav bar; menu entries only if included in v1.

Avoid a sticky bottom app-tab bar on Visit (would fight the edit dock and scene). Sticky top site nav is fine on Explore/Boards/Studio only if it does not steal first-viewport content badly — prefer non-sticky on Explore hero header for v1.

---

9. Implementation approach (after approval)

Preferred: shared markup + shared CSS

Because Explore/Boards are static HTML and Studio is server-rendered, a true SSI/partial is awkward without a build step. Practical options:

A. Shared CSS + duplicated markup (recommended for v1)

B. Tiny shared fragment fetched client-side

C. Server helper that injects nav into all HTML shells

Files likely touched (build phase — not this plan PR)

FileChange
public/styles.css.site-nav, active state, mobile wrap; reuse Explore header rhythm
public/explore.htmlInsert site nav; demote guest-board CTA
public/boards.htmlHeader site nav; simplify footer
server/studio.jsReplace “Back to the wall”; add site nav on index + read; optionally <link rel="stylesheet" href="/styles.css"> for shared classes
public/index.html / menu copyOptional: menu links Explore / Studio / My walls; align start-screen labels
TestsLight smoke: Studio HTML contains Explore + My walls links; Explore contains Studio; boards page has nav. Prefer unit/string checks on indexHtml / existing studio tests over heavy e2e for v1

Studio link destination fix (include in build)

Visual language checklist

---

10. Out of scope

---

11. Open questions for Adam

1. Wall escape hatch in v1? Approve menu-only (or none) on Wall, vs a persistent site nav somewhere on Arrange? Recommendation: none on Visit; optional menu items on Arrange/Visit `···`. 2. Studio audience: Keep Studio in the public triangle for everyone, or treat it as creator/internal and de-emphasize (secondary link / version flag)? Today boards always links Studio; wall unhides via studio: true. Recommendation: public peer in the triangle (matches boards footer + always-on /studio). 3. Label “My walls” vs “Walls”? Recommendation: keep My walls for continuity with Explore CTA and boards H1. 4. Guest primary CTA on Explore: Keep “Try a guest board” beside the site nav, or move under the lede as a text button once My walls is no longer the only header CTA? 5. Studio stylesheet: OK to link styles.css from Studio for shared .site-nav, accepting slight visual convergence, or keep Studio self-contained with a copied minimal nav CSS block?

---

12. Build slices

1. S1 — Shared nav on Explore + Boards + Studio ✅ (markup + CSS + Studio copy fix). 2. S2 — Wall menu site links ✅ (Explore · Studio · My walls under ···). 3. S3 — Polish: active styles, mobile tap targets, remove redundant footers, tiny tests ✅ in S1/S2. 4. Later — Studio privacy: optional auth / unlisting from public triangle; not in this PR.

---

13. Approval summary (for Adam)

Ship a three-link site nav — Explore · Studio · My walls — on Explore, Boards, and Studio. Fix Studio’s false “Back to the wall.” Leave wall Visit chrome alone; optionally add the same destinations under the wall ··· menu later. Guests see all three links; My walls still opens the existing sign-in gate. Visuals stay in the soft-elevated / current CSS language.

Approve to proceed to S1 implementation, after answering open questions §11 (especially wall menu and Studio public peer).