Playground overhaul 1/4: CSS/JS unification #85

Closed
opened 2026-03-26 15:21:46 +00:00 by forgejo_admin · 3 comments

Type

Feature

Lineage

Decomposed from westside-app#84. Parent note: westside-playground-overhaul

Repo

forgejo_admin/westside-playground

User Story

As a superuser, I want a single unified CSS design system for the westside playground so that all pages (public + authenticated) share one coherent visual language and I can review the foundation before pages are built on it.

story:WS-S26

Context

The playground currently has two incompatible CSS files: shared/app.css (2621 lines, pal-e-app light theme for authenticated pages) and css/style.css (804 lines, red/black westside brand for public pages). Plus a dead copy at shared/westside-style.css. The JS situation is similar: shared/app.js (409 lines), shared/westside-main.js and js/main.js (duplicate 20-line files).

This ticket unifies into one CSS and one JS. This is the FOUNDATION — sub-tickets 2, 3, 4 depend on this. Must be phone-approved before anything builds on it.

File Targets

Files to create:

  • shared/style.css — unified design system. Merge the red/black westside brand (from css/style.css) with the authenticated page layouts (from app.css). One file, one system.

Files to modify:

  • shared/app.js — audit the 409 lines, keep what's needed, remove dead code. This becomes the single JS file.

Files to remove:

  • shared/app.css — replaced by shared/style.css
  • shared/westside-style.css — dead file
  • shared/westside-main.js — duplicate, dead
  • css/style.css — merged into shared/style.css
  • css/ directory — empty after merge
  • js/main.js — duplicate of westside-main.js, dead

Files to update:

  • ALL existing .html pages — change CSS/JS references to point to shared/style.css and shared/app.js

Acceptance Criteria

  • Single shared/style.css exists — unified design system
  • Single shared/app.js exists — one JS file
  • All dead CSS/JS files removed
  • Every existing HTML page references the unified CSS/JS
  • Red/black westside brand is the visual identity (not pal-e-app light theme)
  • Authenticated page layouts still work with the unified CSS
  • Mobile-first responsive breakpoints preserved
  • Lucas approves on phone before sub-tickets 2/3 proceed

Test Expectations

  • Every existing HTML page renders correctly on 390px mobile viewport
  • No broken stylesheet/script references
  • ls shared/ shows only style.css, app.js, logo.jpeg
  • No automated tests (static HTML)

Constraints

  • No build tools — plain CSS, hand-merged
  • The red/black brand is the visual identity for the ENTIRE site (public + authenticated)
  • Don't delete CSS rules that authenticated pages use — merge, don't replace
  • This is a phone-review gate: Lucas must see and approve before sub-tickets 2/3

Checklist

  • CSS merged
  • JS cleaned
  • Dead files removed
  • All pages reference unified files
  • Lucas phone review
  • Approved
  • westside-playground-overhaul — parent decomposition note
  • westside-app#84 — parent issue
### Type Feature ### Lineage Decomposed from westside-app#84. Parent note: `westside-playground-overhaul` ### Repo `forgejo_admin/westside-playground` ### User Story As a superuser, I want a single unified CSS design system for the westside playground so that all pages (public + authenticated) share one coherent visual language and I can review the foundation before pages are built on it. story:WS-S26 ### Context The playground currently has two incompatible CSS files: `shared/app.css` (2621 lines, pal-e-app light theme for authenticated pages) and `css/style.css` (804 lines, red/black westside brand for public pages). Plus a dead copy at `shared/westside-style.css`. The JS situation is similar: `shared/app.js` (409 lines), `shared/westside-main.js` and `js/main.js` (duplicate 20-line files). This ticket unifies into one CSS and one JS. This is the FOUNDATION — sub-tickets 2, 3, 4 depend on this. Must be phone-approved before anything builds on it. ### File Targets Files to create: - `shared/style.css` — unified design system. Merge the red/black westside brand (from css/style.css) with the authenticated page layouts (from app.css). One file, one system. Files to modify: - `shared/app.js` — audit the 409 lines, keep what's needed, remove dead code. This becomes the single JS file. Files to remove: - `shared/app.css` — replaced by shared/style.css - `shared/westside-style.css` — dead file - `shared/westside-main.js` — duplicate, dead - `css/style.css` — merged into shared/style.css - `css/` directory — empty after merge - `js/main.js` — duplicate of westside-main.js, dead Files to update: - ALL existing .html pages — change CSS/JS references to point to `shared/style.css` and `shared/app.js` ### Acceptance Criteria - [ ] Single `shared/style.css` exists — unified design system - [ ] Single `shared/app.js` exists — one JS file - [ ] All dead CSS/JS files removed - [ ] Every existing HTML page references the unified CSS/JS - [ ] Red/black westside brand is the visual identity (not pal-e-app light theme) - [ ] Authenticated page layouts still work with the unified CSS - [ ] Mobile-first responsive breakpoints preserved - [ ] Lucas approves on phone before sub-tickets 2/3 proceed ### Test Expectations - [ ] Every existing HTML page renders correctly on 390px mobile viewport - [ ] No broken stylesheet/script references - [ ] `ls shared/` shows only style.css, app.js, logo.jpeg - No automated tests (static HTML) ### Constraints - No build tools — plain CSS, hand-merged - The red/black brand is the visual identity for the ENTIRE site (public + authenticated) - Don't delete CSS rules that authenticated pages use — merge, don't replace - This is a phone-review gate: Lucas must see and approve before sub-tickets 2/3 ### Checklist - [ ] CSS merged - [ ] JS cleaned - [ ] Dead files removed - [ ] All pages reference unified files - [ ] Lucas phone review - [ ] Approved ### Related - `westside-playground-overhaul` — parent decomposition note - westside-app#84 — parent issue
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-381-2026-03-25

Template is complete and all file targets verified (line counts, duplicates, dead files all confirmed accurate). Two issues need resolution:

  • Repo placement mismatch: Issue filed on westside-app but scope targets forgejo_admin/westside-playground. Agent would clone the wrong repo. Applies to all 5 overhaul issues (#84-#88).
  • Phase 15 conflict undocumented: Phase 15 (playground-to-SvelteKit port) is in_progress. Scope should document sequencing — does Phase 15 wait for the unified CSS or proceed independently?

Optional: add depends:ws-85 to board items #355 (Coach Manny) and #356 (travel schedule) since those touch pages affected by the CSS migration.

## Scope Review: NEEDS_REFINEMENT Review note: `review-381-2026-03-25` Template is complete and all file targets verified (line counts, duplicates, dead files all confirmed accurate). Two issues need resolution: - **Repo placement mismatch:** Issue filed on `westside-app` but scope targets `forgejo_admin/westside-playground`. Agent would clone the wrong repo. Applies to all 5 overhaul issues (#84-#88). - **Phase 15 conflict undocumented:** Phase 15 (playground-to-SvelteKit port) is in_progress. Scope should document sequencing — does Phase 15 wait for the unified CSS or proceed independently? Optional: add `depends:ws-85` to board items #355 (Coach Manny) and #356 (travel schedule) since those touch pages affected by the CSS migration.
Author
Owner

Refinements from review-381-2026-03-25:

  1. Repo convention: Same as all overhaul tickets — westside-app is the tracking repo, westside-playground is the target. Issue body documents this. Convention established in #75.

  2. Phase 15 sequencing: Phase 15 (SPA rebuild) is in_progress but consumes the playground as source of truth. This overhaul rewrites the CSS foundation Phase 15 ports. Sequencing: overhaul completes → playground is source of truth → Phase 15 ports from the updated playground. Phase 15 should not port stale playground pages.

  3. Sibling dependencies: #76 (Coach Manny) and #77 (schedule page) both modify pages affected by the CSS migration. They should wait for #85 to land. Updating their board labels.

**Refinements from review-381-2026-03-25:** 1. **Repo convention:** Same as all overhaul tickets — westside-app is the tracking repo, westside-playground is the target. Issue body documents this. Convention established in #75. 2. **Phase 15 sequencing:** Phase 15 (SPA rebuild) is in_progress but consumes the playground as source of truth. This overhaul rewrites the CSS foundation Phase 15 ports. **Sequencing: overhaul completes → playground is source of truth → Phase 15 ports from the updated playground.** Phase 15 should not port stale playground pages. 3. **Sibling dependencies:** #76 (Coach Manny) and #77 (schedule page) both modify pages affected by the CSS migration. They should wait for #85 to land. Updating their board labels.
Author
Owner

Scope Review: READY

Review note: review-381-2026-03-25-v2

Re-review after refinement. All 3 findings from previous review (review-381-2026-03-25) resolved:

  1. Repo placement — confirmed as deliberate convention (tracking on westside-app, target in westside-playground). Precedent in #75. Issue body ### Repo field is unambiguous.
  2. Phase 15 sequencing — explicitly documented in refinement comment. Constraint applies to Phase 15 execution, not this ticket.
  3. Sibling dependenciesdepends:ws-85 labels confirmed on board items #355 (ws-app#76) and #356 (ws-app#77).

Ticket is ready for execution.

## Scope Review: READY Review note: `review-381-2026-03-25-v2` Re-review after refinement. All 3 findings from previous review (`review-381-2026-03-25`) resolved: 1. **Repo placement** — confirmed as deliberate convention (tracking on westside-app, target in westside-playground). Precedent in #75. Issue body `### Repo` field is unambiguous. 2. **Phase 15 sequencing** — explicitly documented in refinement comment. Constraint applies to Phase 15 execution, not this ticket. 3. **Sibling dependencies** — `depends:ws-85` labels confirmed on board items #355 (ws-app#76) and #356 (ws-app#77). Ticket is ready for execution.
Sign in to join this conversation.
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
forgejo_admin/westside-app#85
No description provided.