diff --git a/api/index.html b/api/index.html index 6f1a37c..9ec1153 100644 --- a/api/index.html +++ b/api/index.html @@ -2,10 +2,12 @@ - + API — GuestGraph + + diff --git a/api/og.sha b/api/og.sha index 63d7424..50d955d 100644 --- a/api/og.sha +++ b/api/og.sha @@ -1 +1 @@ -02cbb467db5b72734f7a16c291a325c7600e54d5c9a270bd7fef59d01f3c6f68 +7f89701236e9f0dd971c0d4918f4fe8147cdaaf6d41f150ddffba01b168e8c57 diff --git a/billing/index.html b/billing/index.html index 51d63a1..11611ab 100644 --- a/billing/index.html +++ b/billing/index.html @@ -2,10 +2,12 @@ - + Billing — GuestGraph + + diff --git a/billing/og.sha b/billing/og.sha index 3c2dea6..a03d077 100644 --- a/billing/og.sha +++ b/billing/og.sha @@ -1 +1 @@ -0e20ece60c5ce29baca8d8bab674af671d82e1be872f622fafb614cccc114804 +1250801f73db9fda8d674e1db6b61b021aa5bc4d1fd75b2048aaa1c792e05415 diff --git a/deck.js b/deck.js index 4be611b..3749037 100644 --- a/deck.js +++ b/deck.js @@ -1,4 +1,4 @@ -// @robertblust/design — deck.js, assembled from the shared blocks: theme v5 · runtime v10 · +// @robertblust/design — deck.js, assembled from the shared blocks: theme v6 · runtime v10 · // fit v1. // Editing this file in a site does nothing: the next npm run design overwrites it. @@ -58,6 +58,26 @@ function applyTheme(){ } function setTheme(v){ theme = v; themeRemember(v); applyTheme(); } +/* A page opened from a phone's home screen has Android paint its system bars from the page's + `theme-color`. A page declares that meta with dark's ground, the default, and this keeps it + on the ground of the theme the visitor actually sees. It watches `data-theme` rather than + hooking `applyTheme`, because a page may switch the theme with a copy of its own — blust.ch's + pages do — and the attribute is the one thing every switch sets. The color is read from the + tokens rather than restated here, so a re-picked ground moves the bars with it. A page + without the meta is left as it is. */ +function themeColor(){ + try { + var tc = document.querySelector('meta[name="theme-color"]'); + if (!tc) return; + var g = getComputedStyle(document.documentElement).getPropertyValue("--ground").trim(); + if (g) tc.setAttribute("content", g); + } catch (e) {} +} +themeColor(); +try { + new MutationObserver(themeColor).observe(document.documentElement, { attributes: true, attributeFilter: ["data-theme"] }); +} catch (e) {} + var slides = Array.prototype.slice.call(document.querySelectorAll('.slide')); // slide numbering is zero-based everywhere the viewer can see it: the kicker on each // slide, the transport's display window, and the audio filenames all say the same number. diff --git a/icon-192.png b/icon-192.png new file mode 100644 index 0000000..8aafb08 Binary files /dev/null and b/icon-192.png differ diff --git a/icon-512.png b/icon-512.png new file mode 100644 index 0000000..e060910 Binary files /dev/null and b/icon-512.png differ diff --git a/icon-maskable-512.png b/icon-maskable-512.png new file mode 100644 index 0000000..fbc8bc0 Binary files /dev/null and b/icon-maskable-512.png differ diff --git a/index.html b/index.html index c2e837a..5b7a8b2 100644 --- a/index.html +++ b/index.html @@ -2,10 +2,12 @@ - + GuestGraph — the open-source guest identity graph + + diff --git a/manifest.webmanifest b/manifest.webmanifest new file mode 100644 index 0000000..a90af4d --- /dev/null +++ b/manifest.webmanifest @@ -0,0 +1,14 @@ +{ + "name": "GuestGraph", + "short_name": "GuestGraph", + "start_url": "/", + "scope": "/", + "display": "standalone", + "background_color": "#0C0E13", + "theme_color": "#0C0E13", + "icons": [ + { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" }, + { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }, + { "src": "/icon-maskable-512.png", "sizes": "512x512", "type": "image/png", "purpose": "maskable" } + ] +} diff --git a/model/index.html b/model/index.html index 3c568ec..b6536e5 100644 --- a/model/index.html +++ b/model/index.html @@ -2,10 +2,12 @@ - + Model — GuestGraph + + diff --git a/model/og.sha b/model/og.sha index db9837a..4a1b432 100644 --- a/model/og.sha +++ b/model/og.sha @@ -1 +1 @@ -42a1b3d74a3ae0c49bef54f027e28ab85acd78c908104e68a2c2f0c2f222bb9f +16ba3c1bf9e5f3bd1e31826bb56a3be50992912d351fa50461fd66251ba06977 diff --git a/og.sha b/og.sha index d9f73a1..89576a9 100644 --- a/og.sha +++ b/og.sha @@ -1 +1 @@ -5bcf8837c4e2a0c81533477c7bbd6bf9ce7681e1064b75e1af372aa15f8e97a3 +cada76bf87f458158c3d785d1deaf9d79c2611b93cb90c8362e7a61fd530b44f diff --git a/package-lock.json b/package-lock.json index 72295b2..e2321be 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "companygraph-meta-model": "github:companygraph/meta-model#v0.94.0" }, "devDependencies": { - "@robertblust/design": "github:robertblust/design#v0.156.0", + "@robertblust/design": "github:robertblust/design#v0.157.0", "companygraph-mcp-server": "github:companygraph/mcp-server#v0.69.0", "pdf-lib": "^1.17.1", "playwright": "^1.63.0", @@ -96,8 +96,8 @@ } }, "node_modules/@robertblust/design": { - "version": "0.156.0", - "resolved": "git+ssh://git@github.com/robertblust/design.git#e9ae31386c3af4f16cd1f83faa0df5514ff56f6a", + "version": "0.157.0", + "resolved": "git+ssh://git@github.com/robertblust/design.git#fcd879fa7b86610fad28217bafb7df2aa7d1ee05", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/package.json b/package.json index 5cf3f7e..3e60cf2 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "pin:check": "node pin-check.mjs" }, "devDependencies": { - "@robertblust/design": "github:robertblust/design#v0.156.0", + "@robertblust/design": "github:robertblust/design#v0.157.0", "companygraph-mcp-server": "github:companygraph/mcp-server#v0.69.0", "pdf-lib": "^1.17.1", "playwright": "^1.63.0", diff --git a/page.css b/page.css index f4dcf3a..1420e06 100644 --- a/page.css +++ b/page.css @@ -1,5 +1,5 @@ /* @robertblust/design — page.css, assembled from the shared blocks: reset v3 · link v1 · - header v18 · title v2 · lines v3 · footer v3 · principles v1 · processes v1 · surfaces v2 · + header v18 · title v2 · lines v3 · footer v4 · principles v1 · processes v1 · surfaces v2 · index v2 · home v1. Editing this file in a site does nothing: the next npm run design overwrites it. */ @@ -241,7 +241,7 @@ nav a[aria-current="page"]{color:var(--c-firm)} .keyline{margin:.6rem 0 1.4rem; max-width:54ch; font-size:1.2rem; font-weight:500; line-height:1.45; color:var(--c-firm); text-wrap:balance} -footer{padding:0 0 2rem; display:flex; flex-wrap:wrap; gap:.9rem 2.6rem; align-items:center; +footer{padding:0 0 calc(2rem + env(safe-area-inset-bottom)); display:flex; flex-wrap:wrap; gap:.9rem 2.6rem; align-items:center; font-family:"Plex Mono",monospace; font-size:.76rem; letter-spacing:.08em; color:var(--dim)} footer .credit{display:inline-flex; align-items:center; gap:.5em; vertical-align:-.25em; font-family:"Instrument Sans", ui-sans-serif, system-ui, sans-serif; diff --git a/page.js b/page.js index 1ade9c2..a030d9b 100644 --- a/page.js +++ b/page.js @@ -1,4 +1,4 @@ -// @robertblust/design — page.js, assembled from the shared blocks: lang v5 · theme v5 · +// @robertblust/design — page.js, assembled from the shared blocks: lang v5 · theme v6 · // navFit v3. // Editing this file in a site does nothing: the next npm run design overwrites it. @@ -136,6 +136,26 @@ function applyTheme(){ } function setTheme(v){ theme = v; themeRemember(v); applyTheme(); } +/* A page opened from a phone's home screen has Android paint its system bars from the page's + `theme-color`. A page declares that meta with dark's ground, the default, and this keeps it + on the ground of the theme the visitor actually sees. It watches `data-theme` rather than + hooking `applyTheme`, because a page may switch the theme with a copy of its own — blust.ch's + pages do — and the attribute is the one thing every switch sets. The color is read from the + tokens rather than restated here, so a re-picked ground moves the bars with it. A page + without the meta is left as it is. */ +function themeColor(){ + try { + var tc = document.querySelector('meta[name="theme-color"]'); + if (!tc) return; + var g = getComputedStyle(document.documentElement).getPropertyValue("--ground").trim(); + if (g) tc.setAttribute("content", g); + } catch (e) {} +} +themeColor(); +try { + new MutationObserver(themeColor).observe(document.documentElement, { attributes: true, attributeFilter: ["data-theme"] }); +} catch (e) {} + (function(){ var root = document.documentElement, bar = document.querySelector(".bar"); // Loud, because the quiet version cost an afternoon. This fence belongs at the end of the diff --git a/principles/index.html b/principles/index.html index 1247f14..cf43889 100644 --- a/principles/index.html +++ b/principles/index.html @@ -2,10 +2,12 @@ - + Principles — GuestGraph + + diff --git a/principles/og.sha b/principles/og.sha index 6ad7e72..c2c30c8 100644 --- a/principles/og.sha +++ b/principles/og.sha @@ -1 +1 @@ -5488e06d1a8ea72a2253c6cc5dfd17da50ea6ac6091c3d03544be3d10a135545 +fa8d76d1b655591c7806c94c7ad8983cb55969b0ac6eb4cfe1c1410c9459d3cd diff --git a/privacy/index.html b/privacy/index.html index 6edc3ea..839a6bd 100644 --- a/privacy/index.html +++ b/privacy/index.html @@ -2,10 +2,12 @@ - + Privacy — GuestGraph + + diff --git a/privacy/og.sha b/privacy/og.sha index 1b86839..82160f2 100644 --- a/privacy/og.sha +++ b/privacy/og.sha @@ -1 +1 @@ -2ea411a14fc97ab48ff05bbb4e573f24f3715d127fe2b1dd9b9c572ea6039653 +d19136ba2f21a6c690db6799d4b913d54d537a949e49087702f213698b695a72 diff --git a/problems/index.html b/problems/index.html index 8c36d81..6ebdc75 100644 --- a/problems/index.html +++ b/problems/index.html @@ -2,10 +2,12 @@ - + Problems — GuestGraph + + diff --git a/problems/og.sha b/problems/og.sha index ee0873d..2a5ba36 100644 --- a/problems/og.sha +++ b/problems/og.sha @@ -1 +1 @@ -1c1fd91883ecb85e5df984abdddec51c6579ea4dfaca9461695cc055f2912c99 +d52d08c4f6cdaabea8d3c4268a76d5a2697264811dc0cec6b699015f58abcef5 diff --git a/processes/index.html b/processes/index.html index 7eee019..d90e299 100644 --- a/processes/index.html +++ b/processes/index.html @@ -2,10 +2,12 @@ - + Processes — GuestGraph + + diff --git a/processes/og.sha b/processes/og.sha index 69b8de0..f99ec2f 100644 --- a/processes/og.sha +++ b/processes/og.sha @@ -1 +1 @@ -ec12a703b14f241bda2fd59bc411dc9718d035546647680052cf57628ab8862b +19923a20e8a741985e615962ecc597fca013c7791210b223a78098a15e2eed51 diff --git a/surfaces/index.html b/surfaces/index.html index 6ee009e..f3c05dc 100644 --- a/surfaces/index.html +++ b/surfaces/index.html @@ -2,10 +2,12 @@ - + Surfaces — GuestGraph + + diff --git a/surfaces/og.sha b/surfaces/og.sha index 7d73ab5..09e5bae 100644 --- a/surfaces/og.sha +++ b/surfaces/og.sha @@ -1 +1 @@ -3c5ad94ad402d5c2b49b9852a072e3c428ea26de34330e314c9d0cb181a32d9b +bfa578034b95bcbde96af762ed49055bd8818e8960331f0b54012ddf5a2bf46c diff --git a/talks/index.html b/talks/index.html index 6a4c849..b02c4e5 100644 --- a/talks/index.html +++ b/talks/index.html @@ -2,8 +2,10 @@ - + + +