socle

the marquee comes back down: the host is not a project

commit d6a1b2e5970dfc0f80ee126e9461d2b5083c9224 · parent 6b3477bda1 · browse this tree
Ximianth, 2026-10-30 15:33:40 UTC

Warpfork's review: wildly less, and the metaphor was wrong -- pedestals hold
exhibits, and the host is the gallery, not a thing on display.  The masthead
and its grand plinth are gone.  The sitename's visual impact is now just the
header nameplate: on the entrance (the one page whose first crumb is
unlinked), that crumb wears the accent, slightly larger.  One name, one
place, no furniture.
diff --git a/chrome.go b/chrome.go
index 6c97770..98f57cd 100644
--- a/chrome.go
+++ b/chrome.go
@@ -93,7 +93,7 @@ var soclePageTmpl = template.Must(template.New("socle").Parse(`<!doctype html>
 <div class="flank left"></div><div class="flank right"></div>
 <div class="sheet">
 <nav class="crumbs">
-{{range $i, $c := .Crumbs}}{{if $i}} / {{end}}{{if $c.Href}}<a href="{{$c.Href}}">{{$c.Name}}</a>{{else}}{{$c.Name}}{{end}}{{end}}
+{{range $i, $c := .Crumbs}}{{if $i}} / {{end}}{{if $c.Href}}<a href="{{$c.Href}}">{{$c.Name}}</a>{{else if $i}}{{$c.Name}}{{else}}<span class="site">{{$c.Name}}</span>{{end}}{{end}}
 </nav>
 {{if .Arc}}<nav class="arc{{if not .Dawn}} corner{{end}}" aria-label="page moves" style="--arc-drop:{{.ArcDrop}}px">
 {{range .Arc}}<a class="v{{.Variant}}" href="{{.Href}}"{{if .Title}} title="{{.Title}}"{{end}} style="--dy:{{.DY}}px">{{.Label}}</a>
@@ -211,24 +211,13 @@ nav.arc.corner a {
 	font-size: .72rem;
 }
 
-/* The marquee: the site's own name over the door, standing on the grandest pedestal --
-   the gallery itself is the first exhibit.  The name sits on the cap. */
-article .marquee { text-align: center; margin: .6rem 0 2.4rem; }
-article .marquee .sitename {
-	/* clamp: a long sitename shrinks rather than overflowing a phone;
-	   the cap underneath is 220px, and 11vw tracks that scale at narrow widths. */
-	font-size: clamp(1.6rem, 11vw, 2.7rem);
-	font-weight: 700;
+/* The nameplate: on the entrance (the one page whose first crumb is unlinked),
+   the sitename wears the accent -- the gallery's name at the door, and nothing more. */
+nav.crumbs .site {
 	color: var(--accent);
-	line-height: 1.05;
-	margin: 0 0 -19px;
-	position: relative;
-}
-article .marquee .pedestal {
-	height: 132px;
-	background-position: top center;
-	background-size: 220px 132px;
-	background-repeat: no-repeat;
+	font-weight: 600;
+	font-size: 1.05rem;
+	letter-spacing: .05em;
 }
 
 /* The entrance: repos as exhibit stands, surveyed rather than parsed.
@@ -495,7 +484,6 @@ func sketchCSS(scheme string) string {
 .flank { background-image: %s; }
 footer.ground .floor { background-image: %s; }
 .stand .pedestal, .emptyroom .pedestal { background-image: %s; }
-.marquee .pedestal { background-image: %s; }
 /* Hand-ruled lines replace solid borders on the nav and headings. */
 nav.crumbs, article h1, article h2 {
 	border-bottom: none;
@@ -550,7 +538,7 @@ nav.arc a.va:active { background-image: %s; }
 nav.arc a.vb:active { background-image: %s; }
 nav.arc a.vc:active { background-image: %s; }
 `,
-		u("flank"), u("ground"), u("plinth"), u("plinthgrand"), u("rule"), u("rule"), u("rulesoft"), u("tab"), u("chip"), u("frame"), u("frame"),
+		u("flank"), u("ground"), u("plinth"), u("rule"), u("rule"), u("rulesoft"), u("tab"), u("chip"), u("frame"), u("frame"),
 		u("circle-a"), u("circle-b"), u("circle-c"),
 		u("circle-b"), u("circle-c"), u("circle-a"),
 		u("circle-c"), u("circle-a"), u("circle-b"))
diff --git a/pages.go b/pages.go
index edf48c0..0a0633f 100644
--- a/pages.go
+++ b/pages.go
@@ -88,17 +88,14 @@ func repoCrumbs(site, name string, more ...crumbLink) []display.Crumb {
 
 // ---- index ----
 
-// The entrance: the marquee first -- the site's own name on the grandest pedestal,
-// the gallery itself as the first exhibit -- then every repo as an exhibit stand:
-// the name atop a pedestal (the ground glyph's family), the description as its
-// placard, and the newest commit subject as a one-line "now showing" caption in soft ink.
-var indexTmpl = template.Must(template.New("index").Parse(`<header class="marquee">
-<p class="sitename">{{.SiteName}}</p>
-<div class="pedestal"></div>
-</header>
-<h1>repositories</h1>
+// The entrance: every repo is an exhibit stand -- the name atop a pedestal
+// (the ground glyph's family), the description as its placard, and the newest
+// commit subject as a one-line "now showing" caption in soft ink.
+// The site's own name appears only as the header nameplate (accented there by the
+// chrome): the host is the gallery, not an exhibit, so it gets no stand of its own.
+var indexTmpl = template.Must(template.New("index").Parse(`<h1>repositories</h1>
 <ul class="entrance">
-{{range .Rows}}<li class="stand">
+{{range .}}<li class="stand">
 <p class="name"><a href="/{{.Name}}/">{{.Name}}</a></p>
 <div class="pedestal"></div>
 {{if or .Description .LangColor}}<p class="placard">{{if .LangColor}}<span class="swatch" style="background:{{.LangColor}}" title="{{.Lang}}"></span>{{end}}{{.Description}}</p>
@@ -140,10 +137,7 @@ func (s *server) serveIndex(w http.ResponseWriter, r *http.Request, snap *snapsh
 	if snap.baseURL != "" {
 		pd.Canon = snap.baseURL + "/"
 	}
-	s.render(w, snap, indexTmpl, struct {
-		SiteName string
-		Rows     []indexRow
-	}{snap.face.siteName, rows}, pd)
+	s.render(w, snap, indexTmpl, rows, pd)
 }
 
 // ---- the empty room (404) ----
diff --git a/sketch.go b/sketch.go
index 7d1582a..adf619e 100644
--- a/sketch.go
+++ b/sketch.go
@@ -142,7 +142,6 @@ func sketchAssets(seed string) map[string][]byte {
 		m["flank-"+p.scheme+".svg"] = flankSVG(seed, p)
 		m["ground-"+p.scheme+".svg"] = groundSVG(seed, p)
 		m["plinth-"+p.scheme+".svg"] = plinthSVG(seed, p)
-		m["plinthgrand-"+p.scheme+".svg"] = plinthGrandSVG(seed, p)
 		m["chip-"+p.scheme+".svg"] = chipSVG(seed, p)
 		m["tab-"+p.scheme+".svg"] = tabSVG(seed, p)
 		for _, v := range []string{"a", "b", "c"} {
@@ -373,27 +372,6 @@ func faviconSVG(seed string) []byte {
 	return []byte(sb.String())
 }
 
-// plinthGrandSVG is the marquee's pedestal: the same cap/die/plinth family at the
-// entrance-masthead size, drawn natively rather than scaled so the stroke weight
-// stays in step with its siblings.  The site's own name stands on this one.
-func plinthGrandSVG(seed string, p sketchPalette) []byte {
-	rng := newSketchRand(seed + "/plinthgrand/" + p.scheme)
-	var sb strings.Builder
-	svgOpen(&sb, 220, 132)
-	boxes := func(d *strings.Builder, amp, over float64) {
-		roughBox(d, rng, 31, 16, 157, 22, amp, over)
-		roughBox(d, rng, 53, 38, 113, 63, amp, over)
-		roughBox(d, rng, 16, 101, 188, 25, amp, over)
-	}
-	var d1, d2 strings.Builder
-	boxes(&d1, 1.2, 3.0)
-	boxes(&d2, 1.8, 3.6)
-	svgPath(&sb, d1.String(), p.ink, 1.8, 0.75)
-	svgPath(&sb, d2.String(), p.ink, 1.3, 0.28)
-	sb.WriteString("</svg>\n")
-	return []byte(sb.String())
-}
-
 // chipSVG is the frame's small sibling: a border-image tile for inline chips
 // (the ledger's sha buttons).  A 48x48 tile sliced at 8 with lines at inset 4,
 // so a border a hair under the slice renders the stroke near 1:1; displacement
diff --git a/testdata/pages.md b/testdata/pages.md
index c523dc4..e5432f1 100644
--- a/testdata/pages.md
+++ b/testdata/pages.md
@@ -41,13 +41,9 @@ Content-Type: text/html; charset=utf-8
 <div class="flank left"></div><div class="flank right"></div>
 <div class="sheet">
 <nav class="crumbs">
-test
+<span class="site">test</span>
 </nav>
-<main><article><header class="marquee">
-<p class="sitename">test</p>
-<div class="pedestal"></div>
-</header>
-<h1>repositories</h1>
+<main><article><h1>repositories</h1>
 <ul class="entrance">
 <li class="stand">
 <p class="name"><a href="/fixturama/">fixturama</a></p>
diff --git a/testdata/sketch.md b/testdata/sketch.md
index fd1eca3..129b07b 100644
--- a/testdata/sketch.md
+++ b/testdata/sketch.md
@@ -237,23 +237,3 @@ Regenerate with `go test -run TestSketchSnapshots -testmark.regen` and review th
 </svg>
 ```
 
-### plinthgrand-light.svg
-
-[testmark]:# (plinthgrand-light.svg)
-```svg
-<svg xmlns="http://www.w3.org/2000/svg" width="220" height="132" viewBox="0 0 220 132">
-<path d="M29.5 15.7C82.6 16.6 135.8 15.2 189.0 15.8M188.4 14.8C187.8 22.4 188.2 30.0 187.5 37.6M189.4 37.4C136.6 38.4 83.8 39.1 30.9 38.4M30.4 37.8C29.5 29.9 29.6 22.1 30.5 14.2M52.6 37.6C90.7 37.5 128.9 38.3 167.0 38.3M166.2 36.4C165.7 58.1 166.2 79.8 166.3 101.5M168.1 101.3C129.5 102.3 91.0 102.6 52.4 101.4M53.1 103.5C53.7 81.1 52.5 58.7 52.8 36.4M13.4 101.4C77.6 100.1 141.8 101.9 206.0 101.0M203.9 98.3C203.5 107.9 203.6 117.5 204.5 127.0M206.6 126.0C143.1 126.1 79.5 124.7 16.0 125.8M16.1 128.7C14.8 119.4 15.2 110.0 15.6 100.7" fill="none" stroke="#24292f" stroke-width="1.8" stroke-opacity="0.75" stroke-linecap="round"/>
-<path d="M30.3 15.7C83.6 15.7 136.8 16.8 190.1 16.0M188.7 13.3C189.9 21.9 188.5 30.4 188.4 39.0M188.6 37.3C134.8 38.4 81.0 39.0 27.3 37.4M30.3 40.8C28.6 31.5 31.1 22.2 30.4 12.9M52.1 37.4C90.4 39.0 128.7 39.6 167.1 38.0M165.9 38.8C164.5 60.3 166.8 81.7 166.6 103.2M167.4 100.5C128.9 102.3 90.4 100.9 51.9 101.2M53.6 103.7C52.6 81.7 53.5 59.6 53.7 37.6M14.6 101.8C78.7 99.5 142.9 101.8 207.1 100.2M203.8 97.5C205.1 108.1 205.2 118.6 203.4 129.0M204.8 126.6C140.6 128.2 76.4 125.6 12.2 126.4M16.4 128.1C14.8 119.1 16.8 110.2 16.1 101.3" fill="none" stroke="#24292f" stroke-width="1.3" stroke-opacity="0.28" stroke-linecap="round"/>
-</svg>
-```
-
-### plinthgrand-dark.svg
-
-[testmark]:# (plinthgrand-dark.svg)
-```svg
-<svg xmlns="http://www.w3.org/2000/svg" width="220" height="132" viewBox="0 0 220 132">
-<path d="M27.7 15.7C81.4 16.5 135.0 15.5 188.7 15.7M188.4 15.7C188.5 23.8 188.9 31.9 187.5 39.9M188.6 38.4C135.3 37.9 81.9 37.9 28.5 38.2M31.1 41.2C31.3 32.3 30.9 23.5 30.9 14.7M51.2 37.7C89.3 37.6 127.5 38.7 165.7 38.2M165.8 37.3C165.3 59.0 166.3 80.6 166.4 102.3M165.9 100.4C127.9 100.6 90.0 100.8 52.1 101.3M53.2 103.7C52.4 81.0 53.7 58.3 53.3 35.6M16.0 100.9C79.0 101.5 142.1 101.9 205.1 101.5M204.4 99.9C203.1 109.4 204.1 118.8 203.5 128.3M205.6 126.5C142.3 125.1 78.9 126.9 15.6 125.8M15.5 127.4C15.4 117.9 15.8 108.3 16.1 98.8" fill="none" stroke="#e6edf3" stroke-width="1.8" stroke-opacity="0.75" stroke-linecap="round"/>
-<path d="M28.8 15.4C82.4 14.8 135.9 14.3 189.4 15.6M188.5 12.3C188.8 21.7 187.9 31.0 187.6 40.3M187.6 37.3C134.1 37.2 80.6 39.9 27.1 38.7M31.6 38.6C31.2 30.6 30.5 22.6 31.5 14.6M50.9 37.1C89.4 36.6 128.0 35.6 166.6 37.3M165.9 36.3C165.2 58.4 164.8 80.5 165.9 102.6M168.3 100.2C128.9 99.7 89.5 100.7 50.2 101.6M53.8 101.0C52.5 79.5 54.3 58.0 53.4 36.5M14.2 101.2C78.6 100.4 143.1 103.3 207.5 101.8M204.3 97.9C205.4 108.5 202.9 119.1 203.7 129.8M207.5 125.8C143.3 126.6 79.1 124.7 14.9 125.9M15.4 126.1C16.9 117.6 14.4 109.1 16.1 100.6" fill="none" stroke="#e6edf3" stroke-width="1.3" stroke-opacity="0.28" stroke-linecap="round"/>
-</svg>
-```
-