Dedicated landing page at /; move the editor to /editor.html
The site now opens on a proper front door: a hero (logo + tagline + pitch), an "Open the Editor →" CTA, and form-factor cards (Editor, Stage, Micro, Embed) linking out to each page + info. The PE-1 editor app moves from index.html to editor.html; every "Editor"/"Open" link, the embed.js editor variant, and the editor's own brand-logo (now → /) are repointed. build.sh + deploy.sh build and publish both index.html (landing) and editor.html (app). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
5e5b274e4b
commit
f0cc30f373
14 changed files with 1489 additions and 1340 deletions
5
build.sh
5
build.sh
|
|
@ -1,7 +1,8 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Assemble the deployed single-file pages from source + shared partials + assets/.
|
# Assemble the deployed single-file pages from source + shared partials + assets/.
|
||||||
#
|
#
|
||||||
# Both index.html and player.html are sources that share code via markers:
|
# Every page (the landing index.html, the editor.html app, the device mockups and
|
||||||
|
# the info-*.html pages) is a source that shares code via markers:
|
||||||
# /*@BUILD:include:src/<file>@*/ inlines a shared partial (engine, seed lists, base CSS)
|
# /*@BUILD:include:src/<file>@*/ inlines a shared partial (engine, seed lists, base CSS)
|
||||||
# @BUILD:favicon@ / @BUILD:logo-*@ / /*@BUILD:samples@*/{} inline base64 assets
|
# @BUILD:favicon@ / @BUILD:logo-*@ / /*@BUILD:samples@*/{} inline base64 assets
|
||||||
# This resolves them so each built page in dist/ is one self-contained file
|
# This resolves them so each built page in dist/ is one self-contained file
|
||||||
|
|
@ -30,7 +31,7 @@ def build(name):
|
||||||
out.write_text(src)
|
out.write_text(src)
|
||||||
return out.stat().st_size
|
return out.stat().st_size
|
||||||
|
|
||||||
for name in ("index.html","player.html","stage.html","micro.html","concepts.html","embed.html",
|
for name in ("index.html","editor.html","player.html","stage.html","micro.html","concepts.html","embed.html",
|
||||||
"info-editor.html","info-initial.html","info-stage.html","info-micro.html"):
|
"info-editor.html","info-initial.html","info-stage.html","info-micro.html"):
|
||||||
print("built %s (%dKB)" % (name, build(name) // 1024))
|
print("built %s (%dKB)" % (name, build(name) // 1024))
|
||||||
pathlib.Path("dist/embed.js").write_text(pathlib.Path("embed.js").read_text()) # loader, served as-is
|
pathlib.Path("dist/embed.js").write_text(pathlib.Path("embed.js").read_text()) # loader, served as-is
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
<span class="page-name"><b>PolyMeter</b> · Concepts</span>
|
<span class="page-name"><b>PolyMeter</b> · Concepts</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<span class="here">Concepts</span>
|
<span class="here">Concepts</span>
|
||||||
<a href="/embed.html">Embed</a>
|
<a href="/embed.html">Embed</a>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
|
|
@ -71,7 +71,7 @@
|
||||||
<h3>PE‑1 — PolyMeter Editor</h3>
|
<h3>PE‑1 — PolyMeter Editor</h3>
|
||||||
<p>The full editor: stack meter lanes, per‑step accents / ghosts / mutes, swing & ratio polyrhythm,
|
<p>The full editor: stack meter lanes, per‑step accents / ghosts / mutes, swing & ratio polyrhythm,
|
||||||
set lists, and shareable links. This is where you design grooves.</p>
|
set lists, and shareable links. This is where you design grooves.</p>
|
||||||
<div class="links"><a href="/index.html">Open ↗</a><a href="/info-editor.html">Info ⓘ</a></div>
|
<div class="links"><a href="/editor.html">Open ↗</a><a href="/info-editor.html">Info ⓘ</a></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="card">
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ fi
|
||||||
|
|
||||||
# stamp the version into the built copy only (source stays clean)
|
# stamp the version into the built copy only (source stays clean)
|
||||||
echo "deployed v$BUILD -> $DEST_DIR"
|
echo "deployed v$BUILD -> $DEST_DIR"
|
||||||
for f in index.html player.html stage.html micro.html concepts.html embed.html \
|
for f in index.html editor.html player.html stage.html micro.html concepts.html embed.html \
|
||||||
info-editor.html info-initial.html info-stage.html info-micro.html; do
|
info-editor.html info-initial.html info-stage.html info-micro.html; do
|
||||||
sed "s|const APP_VERSION = \"[^\"]*\";|const APP_VERSION = \"$BUILD\";|" "$DIST_DIR/$f" > "$DEST_DIR/$f"
|
sed "s|const APP_VERSION = \"[^\"]*\";|const APP_VERSION = \"$BUILD\";|" "$DIST_DIR/$f" > "$DEST_DIR/$f"
|
||||||
echo " $f ($(stat -c '%s' "$DEST_DIR/$f") bytes)"
|
echo " $f ($(stat -c '%s' "$DEST_DIR/$f") bytes)"
|
||||||
|
|
|
||||||
1348
editor.html
Normal file
1348
editor.html
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -47,7 +47,7 @@
|
||||||
<span class="page-name"><b>PolyMeter</b> · Embed</span>
|
<span class="page-name"><b>PolyMeter</b> · Embed</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<span class="here">Embed</span>
|
<span class="here">Embed</span>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
|
|
|
||||||
2
embed.js
2
embed.js
|
|
@ -14,7 +14,7 @@
|
||||||
* own ?embed=1 mode strips the site chrome) and auto-resizes to the widget's content.
|
* own ?embed=1 mode strips the site chrome) and auto-resizes to the widget's content.
|
||||||
*/
|
*/
|
||||||
(function () {
|
(function () {
|
||||||
var PAGES = { editor: "index.html", initial: "player.html", stage: "stage.html", micro: "micro.html" };
|
var PAGES = { editor: "editor.html", initial: "player.html", stage: "stage.html", micro: "micro.html" };
|
||||||
var me = document.currentScript;
|
var me = document.currentScript;
|
||||||
var ORIGIN = me ? me.src.replace(/\/embed\.js(\?.*)?$/, "") : location.origin;
|
var ORIGIN = me ? me.src.replace(/\/embed\.js(\?.*)?$/, "") : location.origin;
|
||||||
|
|
||||||
|
|
|
||||||
1450
index.html
1450
index.html
File diff suppressed because it is too large
Load diff
|
|
@ -40,7 +40,7 @@
|
||||||
<span class="page-name"><b>PE‑1</b> · PolyMeter Editor — info</span>
|
<span class="page-name"><b>PE‑1</b> · PolyMeter Editor — info</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Open ↗</a>
|
<a href="/editor.html">Open ↗</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/embed.html">Embed</a>
|
<a href="/embed.html">Embed</a>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
<div data-varasys-metronome="editor"
|
<div data-varasys-metronome="editor"
|
||||||
data-patch="v1;t120;b16;kick:4=X..x;snare:4=.X.X;hatClosed:4/4;tom:3" data-height="680"></div>
|
data-patch="v1;t120;b16;kick:4=X..x;snare:4=.X.X;hatClosed:4/4;tom:3" data-height="680"></div>
|
||||||
</div>
|
</div>
|
||||||
<p class="cap">Live widget (embedded). <a href="/index.html">Open the full editor ↗</a> · <a href="/embed.html">embed this</a></p>
|
<p class="cap">Live widget (embedded). <a href="/editor.html">Open the full editor ↗</a> · <a href="/embed.html">embed this</a></p>
|
||||||
|
|
||||||
<h2>Designed for</h2>
|
<h2>Designed for</h2>
|
||||||
<p>Anyone working in odd or layered meter — practising a 4‑over‑3, programming a polyrhythmic groove, or
|
<p>Anyone working in odd or layered meter — practising a 4‑over‑3, programming a polyrhythmic groove, or
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@
|
||||||
<span class="page-name"><b>PM‑1</b> · Initial — info</span>
|
<span class="page-name"><b>PM‑1</b> · Initial — info</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/player.html">Open ↗</a>
|
<a href="/player.html">Open ↗</a>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
<span class="page-name"><b>PM‑µ</b> · Micro — info</span>
|
<span class="page-name"><b>PM‑µ</b> · Micro — info</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/micro.html">Open ↗</a>
|
<a href="/micro.html">Open ↗</a>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@
|
||||||
<span class="page-name"><b>PM‑1</b> · Stage — info</span>
|
<span class="page-name"><b>PM‑1</b> · Stage — info</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/stage.html">Open ↗</a>
|
<a href="/stage.html">Open ↗</a>
|
||||||
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
<button id="themeBtn" class="tbtn" title="toggle light / dark theme">☀</button>
|
||||||
|
|
|
||||||
|
|
@ -108,7 +108,7 @@
|
||||||
<span class="page-name"><b>PM‑µ</b> · Micro (home practice)</span>
|
<span class="page-name"><b>PM‑µ</b> · Micro (home practice)</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/info-micro.html">Info</a>
|
<a href="/info-micro.html">Info</a>
|
||||||
<a href="/embed.html">Embed</a>
|
<a href="/embed.html">Embed</a>
|
||||||
|
|
|
||||||
|
|
@ -213,7 +213,7 @@
|
||||||
<span class="page-name"><b>PM‑1</b> · Initial concept</span>
|
<span class="page-name"><b>PM‑1</b> · Initial concept</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/info-initial.html">Info</a>
|
<a href="/info-initial.html">Info</a>
|
||||||
<a href="/embed.html">Embed</a>
|
<a href="/embed.html">Embed</a>
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@
|
||||||
<span class="page-name"><b>PM‑1</b> · Stage (pedalboard build)</span>
|
<span class="page-name"><b>PM‑1</b> · Stage (pedalboard build)</span>
|
||||||
</div>
|
</div>
|
||||||
<nav class="site-nav">
|
<nav class="site-nav">
|
||||||
<a href="/index.html">Editor</a>
|
<a href="/editor.html">Editor</a>
|
||||||
<a href="/concepts.html">Concepts</a>
|
<a href="/concepts.html">Concepts</a>
|
||||||
<a href="/info-stage.html">Info</a>
|
<a href="/info-stage.html">Info</a>
|
||||||
<a href="/embed.html">Embed</a>
|
<a href="/embed.html">Embed</a>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue