gabriel / musehub public
frontend-assets.md markdown
101 lines 3.2 KB
Raw
sha256:d035733f21ccff27735fddebfbbe0ed24565a32a22db8de5885402262671ecd2 chore: bump version to 0.2.0rc15 for musehub#113 fix release Sonnet 4.6 patch 15 days ago

Frontend Asset Builds

All CSS and TypeScript is compiled from source — never edit app.css or app.js directly.

Source vs output

Source files live in src/ at the repo root. Compiled artifacts land in static/.

src/
  ts/          ← TypeScript source (input to esbuild)
    app.ts
    musehub.ts
    pages/*.ts
  scss/        ← SCSS source (input to sass)
    app.scss
    embed.scss
    _*.scss    ← partials, imported by app.scss

musehub/templates/musehub/static/
  app.js       ← compiled output (do not edit)
  app.css      ← compiled output (do not edit)
  embed.css    ← compiled output (do not edit)
  alpinejs.min.js
  htmx.min.js
  vendor/

Quick reference

Task Command
Rebuild everything (CSS + JS + embed) npm run build
CSS only npm run build:css
JS only npm run build:js
Embed stylesheet npm run build:embed
Embed player JS npm run build:embed-player
TypeScript type-check (no output) npm run type-check
Watch CSS during development npm run watch:css
Watch JS during development npm run watch:js

Run all commands from the repo root (~/ecosystem/musehub).

Source → output mapping

Asset Source Output
Main stylesheet src/scss/app.scss musehub/templates/musehub/static/app.css
Embed stylesheet src/scss/embed.scss musehub/templates/musehub/static/embed.css
Main JS bundle src/ts/app.ts musehub/templates/musehub/static/app.js
Embed player JS src/ts/embed-player.ts musehub/templates/musehub/static/embed-player.js

src/scss/app.scss imports all SCSS partials from src/scss/_*.scss. Add new partials there, not inline.

When to rebuild

Rebuild whenever you change any .scss or .ts file. The server serves the compiled files directly — it does not compile on the fly.

npm run build also writes musehub/templates/musehub/static/.cache-id with a timestamp. The base template reads this file to generate the ?v=<timestamp> query string on every static asset URL, which busts the browser cache automatically after each rebuild.

CSS not updating in the browser?

  1. Run npm run build (or npm run build:css for CSS only).
  2. Hard-refresh: Cmd+Shift+R (macOS) / Ctrl+Shift+R (Linux/Windows).

If the page still looks wrong, check that you rebuilt to the right output path:

musehub/templates/musehub/static/app.css   ✅ correct
musehub/templates/musehub/static/css/app.css  ❌ wrong — served at /static/css/app.css, not /static/app.css

Development workflow

Open two terminals:

# Terminal 1 — watch CSS
npm run watch:css

# Terminal 2 — watch JS
npm run watch:js

Changes to any .scss or .ts file are compiled instantly. Because the watch builds omit the cache-id update, you may need an occasional hard-refresh during development.

Prerequisites

Node.js and the dev dependencies must be installed:

npm install   # installs esbuild, sass, typescript — runs from repo root

sass and esbuild run on the host (not inside Docker). The compiled output files are bind-mounted into the container via docker-compose.override.yml, so the server picks up the new files without a restart.

File History 11 commits
sha256:d035733f21ccff27735fddebfbbe0ed24565a32a22db8de5885402262671ecd2 chore: bump version to 0.2.0rc15 for musehub#113 fix release Sonnet 4.6 patch 15 days ago
sha256:0032d6cfa33bc3c8367436ad768e7dd0e339b4332153160247da8266cb5fa352 Merge branch 'task/version-tags-phase3-server' into dev Human 17 days ago
sha256:4669620efda9ff41c55bdefd1f7bfe1c239d468428744c84ead9957e5a003a53 merge: rescue snapshot-recovery hardening (c00aa21d) into d… Opus 4.8 minor 30 days ago
sha256:a59da49c4611b970fc4b6ae48678ce4943261c213a07ddbd73ce9201df869b4a fix: remove false-positive proposal_comments index drop fro… Sonnet 4.6 patch 34 days ago
sha256:0a240d6dbff234f07d98a28a4a9a68db702f3f9ff9260196f24219bdb1c0b6f3 feat: render markdown mists as HTML with heading anchor links Sonnet 4.6 patch 35 days ago
sha256:24a7d47486ebc4ebd1832830580e177ec6f877b48dced8c000e198cdec4ce9d6 Merge 'task/bump-version-rc12' into 'dev' — proposal: Bump … Human 36 days ago
sha256:b9ff931d147e0114a1f17060f415b89ed551c170a91ff226c70437aa5c85f9ee Merge 'task/bump-version-rc12' into 'dev' — proposal: Bump … Human 36 days ago
sha256:d1122d21e73471879b460037b22c0b50fded7c423444a176f248428f75dac39c Merge 'task/fix-issue-pagination-cursor' into 'dev' — propo… Human 36 days ago
sha256:01e18975e73d2b3cd5b6db7929c895bef9aa6e0d4391dc5b2adfc548b41318dd Merge 'feat/adding-debug-logs-to-staging' into 'dev' — prop… Human 36 days ago
sha256:6b1949fc2797ca4c1936a637a4cbfec828ef56cf52398a2e74ca3c4f494e728f fix: use wire_bytes not mpack_bytes_raw in compute_object_b… Sonnet 4.6 patch 48 days ago
sha256:b99f2455dc346966d040133f5203297e6e3ef5803a93728a2c30568d0a0f7583 rename: delta_add → delta_upsert across wire format, models… Sonnet 4.6 patch 50 days ago