Skip to content

Commit fbf5720

Browse files
committed
Add a docs sitemap and stop linking to the 1.x docs site
scripts/sitemap.mjs builds docs/sitemap.xml from the pages in docs/ (404 and redirect stubs left out), with each page's last commit date. It runs as part of npm run docs. The robots.txt at zumerlab.com lists it. The 1.x docs at zumerlab.com/orbit-docs will be retired, so the home page, 404, migration guide and README point to the migration guide or the v1.6.0 tag instead. llms-full.txt regenerated.
1 parent 9068547 commit fbf5720

8 files changed

Lines changed: 146 additions & 8 deletions

File tree

‎README.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Orbit puts HTML on circles. Gauges, dials, knobs, radial menus, donut charts, wa
1111

1212
You write plain HTML with a few classes. CSS does the geometry and the look; a small runtime keeps numbering, spacing and SVG arcs right as things change. It works the same in plain HTML, React, Vue, Svelte or anything else that renders the DOM.
1313

14-
[Documentation and examples](https://zumerlab.com/orbit/) · [npm](https://www.npmjs.com/package/@zumer/orbit) · [Orbit 1.x docs](https://zumerlab.com/orbit-docs/)
14+
[Documentation and examples](https://zumerlab.com/orbit/) · [npm](https://www.npmjs.com/package/@zumer/orbit)
1515

1616
## Install
1717

@@ -294,7 +294,7 @@ Version 2 changes where size comes from. In 1.x every system was 500px across, w
294294
- `<o-arc>` and `<o-progress>` are placed with `rotate` instead of `transform`, and endings scale with the band. `interactive` makes the whole band clickable.
295295
- `variant="stroke"` on `<o-progress>` draws a 2px line over a gray track by default.
296296

297-
The [1.x documentation](https://zumerlab.com/orbit-docs/) stays online.
297+
The 1.x source and README stay on GitHub, at the [v1.6.0 tag](https://github.com/zumerlab/orbit/tree/v1.6.0#readme).
298298

299299
## Demos
300300

‎docs/404.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<h1>Lost in space</h1>
2424
<p class="lede">This page drifted out of orbit. It may have moved when the docs changed for Orbit 2.</p>
2525
<p><a class="button primary" data-root-link href="index.html">Back to the start</a> <a class="button" data-root-link href="examples/index.html">Browse the examples</a></p>
26-
<p>Looking for the 1.x documentation? It stays at <a href="https://zumerlab.com/orbit-docs/">zumerlab.com/orbit-docs</a>.</p>
26+
<p>Looking for the 1.x documentation? It was retired; <a data-root-link href="migrating.html">Coming from 1.x</a> shows what changed.</p>
2727
</article>
2828
</main>
2929
</div>

‎docs/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ <h2>Start somewhere</h2>
119119
<li><a class="card" href="migrating.html"><strong>Coming from 1.x</strong><span>What changed in 2.0, and one line to keep everything as it was.</span></a></li>
120120
</ul>
121121

122-
<p class="closing">Orbit is open source under the MIT license, made by <a href="https://github.com/zumerlab">Zumerlab</a>. If it saves you time, you can <a href="https://github.com/sponsors/tinchox5">sponsor its development</a>. Using Orbit 1.x? Its <a href="https://zumerlab.com/orbit-docs/">documentation</a> stays online.</p>
122+
<p class="closing">Orbit is open source under the MIT license, made by <a href="https://github.com/zumerlab">Zumerlab</a>. If it saves you time, you can <a href="https://github.com/sponsors/tinchox5">sponsor its development</a>. Using Orbit 1.x? <a href="migrating.html">Coming from 1.x</a> shows what changed.</p>
123123
</main>
124124

125125
<script src="assets/site.js" data-root=""></script>

‎docs/llms-full.txt‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ A whole Orbit: a progress ring and a label. Nothing in it has a size in pixels,
8080
- [Orbit Kit](https://zumerlab.com/orbit/kit/index.html): Ready-made gauges, donuts, knobs and clocks, one tag each.
8181
- [Coming from 1.x](https://zumerlab.com/orbit/migrating.html): What changed in 2.0, and one line to keep everything as it was.
8282

83-
Orbit is open source under the MIT license, made by [Zumerlab](https://github.com/zumerlab). If it saves you time, you can [sponsor its development](https://github.com/sponsors/tinchox5). Using Orbit 1.x? Its [documentation](https://zumerlab.com/orbit-docs/) stays online.
83+
Orbit is open source under the MIT license, made by [Zumerlab](https://github.com/zumerlab). If it saves you time, you can [sponsor its development](https://github.com/sponsors/tinchox5). Using Orbit 1.x? [Coming from 1.x](https://zumerlab.com/orbit/migrating.html) shows what changed.
8484

8585
---
8686

@@ -931,7 +931,7 @@ Source: https://zumerlab.com/orbit/migrating.html
931931

932932
Orbit 2 changes one big thing: where size comes from. Everything else is smaller and mostly in your favor. You can move a layout over in a few minutes, or keep it exactly as it was with one line of CSS.
933933

934-
The [1.x documentation](https://zumerlab.com/orbit-docs/) stays online.
934+
The 1.x source and README stay on GitHub, at the [v1.6.0 tag](https://github.com/zumerlab/orbit/tree/v1.6.0#readme).
935935

936936
## Size comes from the universe
937937

‎docs/migrating.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<article class="prose">
2020
<h1>Coming from 1.x</h1>
2121
<p>Orbit 2 changes one big thing: where size comes from. Everything else is smaller and mostly in your favor. You can move a layout over in a few minutes, or keep it exactly as it was with one line of CSS.</p>
22-
<p>The <a href="https://zumerlab.com/orbit-docs/">1.x documentation</a> stays online.</p>
22+
<p>The 1.x source and README stay on GitHub, at the <a href="https://github.com/zumerlab/orbit/tree/v1.6.0#readme">v1.6.0 tag</a>.</p>
2323
<h2>Size comes from the universe</h2>
2424
<p>In 1.x every system was 500px across, whatever the size of its <code>.bigbang</code>. <code>orbit-12</code> was always 500px wide, and to make a layout follow its container you called <code>Orbit.resize()</code>.</p>
2525
<p>In 2.0 the <code>.bigbang</code> is the universe and its box sets the size. The <code>.gravity-spot</code> reaches the shorter side of it (<code>--o-force</code> defaults to <code>100cqmin</code>), so <code>orbit-12</code> touches the edge and every ring is a fraction of the box. Layouts follow their container with no code.</p>

‎docs/sitemap.xml‎

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
3+
<url><loc>https://zumerlab.com/orbit/</loc><lastmod>2026-10-27</lastmod></url>
4+
<url><loc>https://zumerlab.com/orbit/craft/colors.html</loc><lastmod>2026-10-27</lastmod></url>
5+
<url><loc>https://zumerlab.com/orbit/craft/depth.html</loc><lastmod>2026-10-27</lastmod></url>
6+
<url><loc>https://zumerlab.com/orbit/craft/runtime.html</loc><lastmod>2026-10-27</lastmod></url>
7+
<url><loc>https://zumerlab.com/orbit/craft/themes.html</loc><lastmod>2026-10-27</lastmod></url>
8+
<url><loc>https://zumerlab.com/orbit/craft/visual-aids.html</loc><lastmod>2026-10-27</lastmod></url>
9+
<url><loc>https://zumerlab.com/orbit/demos/00-universe.html</loc><lastmod>2026-10-27</lastmod></url>
10+
<url><loc>https://zumerlab.com/orbit/demos/01-minimal-gauge.html</loc><lastmod>2026-10-27</lastmod></url>
11+
<url><loc>https://zumerlab.com/orbit/demos/02-donut-multilayer.html</loc><lastmod>2026-10-27</lastmod></url>
12+
<url><loc>https://zumerlab.com/orbit/demos/03-radial-menu.html</loc><lastmod>2026-10-27</lastmod></url>
13+
<url><loc>https://zumerlab.com/orbit/demos/04-arrow-gauge.html</loc><lastmod>2026-10-27</lastmod></url>
14+
<url><loc>https://zumerlab.com/orbit/demos/05-knob.html</loc><lastmod>2026-10-27</lastmod></url>
15+
<url><loc>https://zumerlab.com/orbit/demos/06-semicircle.html</loc><lastmod>2026-10-27</lastmod></url>
16+
<url><loc>https://zumerlab.com/orbit/demos/07-satellites.html</loc><lastmod>2026-10-27</lastmod></url>
17+
<url><loc>https://zumerlab.com/orbit/demos/08-nested-orbits.html</loc><lastmod>2026-10-27</lastmod></url>
18+
<url><loc>https://zumerlab.com/orbit/demos/09-compass.html</loc><lastmod>2026-10-27</lastmod></url>
19+
<url><loc>https://zumerlab.com/orbit/demos/10-radar.html</loc><lastmod>2026-10-27</lastmod></url>
20+
<url><loc>https://zumerlab.com/orbit/demos/11-depth-layers.html</loc><lastmod>2026-10-27</lastmod></url>
21+
<url><loc>https://zumerlab.com/orbit/demos/playground.html</loc><lastmod>2026-10-27</lastmod></url>
22+
<url><loc>https://zumerlab.com/orbit/examples/</loc><lastmod>2026-10-27</lastmod></url>
23+
<url><loc>https://zumerlab.com/orbit/examples/abstract_map.html</loc><lastmod>2026-10-27</lastmod></url>
24+
<url><loc>https://zumerlab.com/orbit/examples/calendar/</loc><lastmod>2026-10-27</lastmod></url>
25+
<url><loc>https://zumerlab.com/orbit/examples/calendar/circular-year-calendar.html</loc><lastmod>2026-10-27</lastmod></url>
26+
<url><loc>https://zumerlab.com/orbit/examples/charts/</loc><lastmod>2026-10-27</lastmod></url>
27+
<url><loc>https://zumerlab.com/orbit/examples/charts/donut-chart.html</loc><lastmod>2026-10-27</lastmod></url>
28+
<url><loc>https://zumerlab.com/orbit/examples/charts/pie-chart.html</loc><lastmod>2026-10-27</lastmod></url>
29+
<url><loc>https://zumerlab.com/orbit/examples/charts/sunburst-chart.html</loc><lastmod>2026-10-27</lastmod></url>
30+
<url><loc>https://zumerlab.com/orbit/examples/chemical_structures.html</loc><lastmod>2026-10-27</lastmod></url>
31+
<url><loc>https://zumerlab.com/orbit/examples/circular_time.html</loc><lastmod>2026-10-27</lastmod></url>
32+
<url><loc>https://zumerlab.com/orbit/examples/dashboard.html</loc><lastmod>2026-10-27</lastmod></url>
33+
<url><loc>https://zumerlab.com/orbit/examples/gauges/</loc><lastmod>2026-10-27</lastmod></url>
34+
<url><loc>https://zumerlab.com/orbit/examples/gauges/180-degree-gauge.html</loc><lastmod>2026-10-27</lastmod></url>
35+
<url><loc>https://zumerlab.com/orbit/examples/gauges/240-degree-gauge.html</loc><lastmod>2026-10-27</lastmod></url>
36+
<url><loc>https://zumerlab.com/orbit/examples/gauges/fuel-gauge.html</loc><lastmod>2026-10-27</lastmod></url>
37+
<url><loc>https://zumerlab.com/orbit/examples/knobs/</loc><lastmod>2026-10-27</lastmod></url>
38+
<url><loc>https://zumerlab.com/orbit/examples/knobs/knob-with-progress-bar.html</loc><lastmod>2026-10-27</lastmod></url>
39+
<url><loc>https://zumerlab.com/orbit/examples/knobs/led-knob.html</loc><lastmod>2026-10-27</lastmod></url>
40+
<url><loc>https://zumerlab.com/orbit/examples/layered-status-rings.html</loc><lastmod>2026-10-27</lastmod></url>
41+
<url><loc>https://zumerlab.com/orbit/examples/mandalas/</loc><lastmod>2026-10-27</lastmod></url>
42+
<url><loc>https://zumerlab.com/orbit/examples/mandalas/geometric-square-mandala.html</loc><lastmod>2026-10-27</lastmod></url>
43+
<url><loc>https://zumerlab.com/orbit/examples/mandalas/radial-symmetry-mandala.html</loc><lastmod>2026-10-27</lastmod></url>
44+
<url><loc>https://zumerlab.com/orbit/examples/piemenu.html</loc><lastmod>2026-10-27</lastmod></url>
45+
<url><loc>https://zumerlab.com/orbit/examples/progress/</loc><lastmod>2026-10-27</lastmod></url>
46+
<url><loc>https://zumerlab.com/orbit/examples/progress/circular-progress-with-background.html</loc><lastmod>2026-10-27</lastmod></url>
47+
<url><loc>https://zumerlab.com/orbit/examples/progress/circular-progress-with-handle.html</loc><lastmod>2026-10-27</lastmod></url>
48+
<url><loc>https://zumerlab.com/orbit/examples/progress/dashed-circular-progress-bar.html</loc><lastmod>2026-10-27</lastmod></url>
49+
<url><loc>https://zumerlab.com/orbit/examples/progress/stacked-circular-progress-bars.html</loc><lastmod>2026-10-27</lastmod></url>
50+
<url><loc>https://zumerlab.com/orbit/examples/scifi.html</loc><lastmod>2026-10-27</lastmod></url>
51+
<url><loc>https://zumerlab.com/orbit/examples/watches/</loc><lastmod>2026-10-27</lastmod></url>
52+
<url><loc>https://zumerlab.com/orbit/examples/watches/chronograph-watch-face.html</loc><lastmod>2026-10-27</lastmod></url>
53+
<url><loc>https://zumerlab.com/orbit/examples/watches/minimalist-analog-clock.html</loc><lastmod>2026-10-27</lastmod></url>
54+
<url><loc>https://zumerlab.com/orbit/examples/watches/roman-numeral-clock-face.html</loc><lastmod>2026-10-27</lastmod></url>
55+
<url><loc>https://zumerlab.com/orbit/examples/watches/smartwatch-face.html</loc><lastmod>2026-10-27</lastmod></url>
56+
<url><loc>https://zumerlab.com/orbit/frameworks/angular.html</loc><lastmod>2026-10-27</lastmod></url>
57+
<url><loc>https://zumerlab.com/orbit/frameworks/astro.html</loc><lastmod>2026-10-27</lastmod></url>
58+
<url><loc>https://zumerlab.com/orbit/frameworks/react.html</loc><lastmod>2026-10-27</lastmod></url>
59+
<url><loc>https://zumerlab.com/orbit/frameworks/svelte.html</loc><lastmod>2026-10-27</lastmod></url>
60+
<url><loc>https://zumerlab.com/orbit/frameworks/vue.html</loc><lastmod>2026-10-27</lastmod></url>
61+
<url><loc>https://zumerlab.com/orbit/guide.html</loc><lastmod>2026-10-27</lastmod></url>
62+
<url><loc>https://zumerlab.com/orbit/install.html</loc><lastmod>2026-10-27</lastmod></url>
63+
<url><loc>https://zumerlab.com/orbit/kit/</loc><lastmod>2026-10-27</lastmod></url>
64+
<url><loc>https://zumerlab.com/orbit/kit/clock.html</loc><lastmod>2026-10-27</lastmod></url>
65+
<url><loc>https://zumerlab.com/orbit/kit/color-wheel.html</loc><lastmod>2026-10-27</lastmod></url>
66+
<url><loc>https://zumerlab.com/orbit/kit/compass.html</loc><lastmod>2026-10-27</lastmod></url>
67+
<url><loc>https://zumerlab.com/orbit/kit/donut.html</loc><lastmod>2026-10-27</lastmod></url>
68+
<url><loc>https://zumerlab.com/orbit/kit/gauge.html</loc><lastmod>2026-10-27</lastmod></url>
69+
<url><loc>https://zumerlab.com/orbit/kit/instrument.html</loc><lastmod>2026-10-27</lastmod></url>
70+
<url><loc>https://zumerlab.com/orbit/kit/knob.html</loc><lastmod>2026-10-27</lastmod></url>
71+
<url><loc>https://zumerlab.com/orbit/kit/menu.html</loc><lastmod>2026-10-27</lastmod></url>
72+
<url><loc>https://zumerlab.com/orbit/kit/options.html</loc><lastmod>2026-10-27</lastmod></url>
73+
<url><loc>https://zumerlab.com/orbit/kit/radar-chart.html</loc><lastmod>2026-10-27</lastmod></url>
74+
<url><loc>https://zumerlab.com/orbit/kit/radar.html</loc><lastmod>2026-10-27</lastmod></url>
75+
<url><loc>https://zumerlab.com/orbit/kit/range.html</loc><lastmod>2026-10-27</lastmod></url>
76+
<url><loc>https://zumerlab.com/orbit/kit/rings.html</loc><lastmod>2026-10-27</lastmod></url>
77+
<url><loc>https://zumerlab.com/orbit/kit/spinner.html</loc><lastmod>2026-10-27</lastmod></url>
78+
<url><loc>https://zumerlab.com/orbit/kit/status.html</loc><lastmod>2026-10-27</lastmod></url>
79+
<url><loc>https://zumerlab.com/orbit/kit/sunburst.html</loc><lastmod>2026-10-27</lastmod></url>
80+
<url><loc>https://zumerlab.com/orbit/kit/time-picker.html</loc><lastmod>2026-10-27</lastmod></url>
81+
<url><loc>https://zumerlab.com/orbit/kit/timer.html</loc><lastmod>2026-10-27</lastmod></url>
82+
<url><loc>https://zumerlab.com/orbit/kit/wheel.html</loc><lastmod>2026-10-27</lastmod></url>
83+
<url><loc>https://zumerlab.com/orbit/migrating.html</loc><lastmod>2026-10-27</lastmod></url>
84+
<url><loc>https://zumerlab.com/orbit/reference/arc.html</loc><lastmod>2026-10-27</lastmod></url>
85+
<url><loc>https://zumerlab.com/orbit/reference/bigbang.html</loc><lastmod>2026-10-27</lastmod></url>
86+
<url><loc>https://zumerlab.com/orbit/reference/capsule.html</loc><lastmod>2026-10-27</lastmod></url>
87+
<url><loc>https://zumerlab.com/orbit/reference/gravity-spot.html</loc><lastmod>2026-10-27</lastmod></url>
88+
<url><loc>https://zumerlab.com/orbit/reference/orbit.html</loc><lastmod>2026-10-27</lastmod></url>
89+
<url><loc>https://zumerlab.com/orbit/reference/progress.html</loc><lastmod>2026-10-27</lastmod></url>
90+
<url><loc>https://zumerlab.com/orbit/reference/satellite.html</loc><lastmod>2026-10-27</lastmod></url>
91+
<url><loc>https://zumerlab.com/orbit/reference/side.html</loc><lastmod>2026-10-27</lastmod></url>
92+
<url><loc>https://zumerlab.com/orbit/reference/vector.html</loc><lastmod>2026-10-27</lastmod></url>
93+
<url><loc>https://zumerlab.com/orbit/universe.html</loc><lastmod>2026-10-27</lastmod></url>
94+
<url><loc>https://zumerlab.com/orbit/use-cases/</loc><lastmod>2026-10-27</lastmod></url>
95+
<url><loc>https://zumerlab.com/orbit/use-cases/audio-app-ui.html</loc><lastmod>2026-10-27</lastmod></url>
96+
<url><loc>https://zumerlab.com/orbit/use-cases/dashboards.html</loc><lastmod>2026-10-27</lastmod></url>
97+
<url><loc>https://zumerlab.com/orbit/use-cases/fitness-and-health-apps.html</loc><lastmod>2026-10-27</lastmod></url>
98+
<url><loc>https://zumerlab.com/orbit/use-cases/iot-and-hardware-ui.html</loc><lastmod>2026-10-27</lastmod></url>
99+
<url><loc>https://zumerlab.com/orbit/use-cases/sci-fi-game-uis.html</loc><lastmod>2026-10-27</lastmod></url>
100+
</urlset>

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"scripts": {
3030
"compile": "node esbuild.config.mjs",
3131
"demo": "npm run compile && node scripts/demo.mjs",
32-
"docs": "npm run compile && node scripts/docs-sync.mjs && node scripts/demo.mjs",
32+
"docs": "npm run compile && node scripts/docs-sync.mjs && node scripts/sitemap.mjs && node scripts/demo.mjs",
3333
"docs:sync": "node scripts/docs-sync.mjs",
3434
"bump:dry": "npx @zumerbox/bump -d",
3535
"bump": "npx @zumerbox/bump && npx @zumerbox/changelog",

‎scripts/sitemap.mjs‎

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Builds docs/sitemap.xml from the HTML pages in docs/, with each page's last
2+
// commit date as lastmod. Run it after adding or removing pages: node scripts/sitemap.mjs
3+
import { readFileSync, writeFileSync, readdirSync } from 'node:fs';
4+
import { join, dirname, relative, sep } from 'node:path';
5+
import { fileURLToPath } from 'node:url';
6+
import { execFileSync } from 'node:child_process';
7+
8+
const DOCS = join(dirname(fileURLToPath(import.meta.url)), '..', 'docs');
9+
const SITE = 'https://zumerlab.com/orbit/';
10+
11+
function htmlFiles(dir) {
12+
return readdirSync(dir, { withFileTypes: true }).flatMap((e) => {
13+
const p = join(dir, e.name);
14+
if (e.isDirectory()) return htmlFiles(p);
15+
return e.name.endsWith('.html') ? [p] : [];
16+
});
17+
}
18+
19+
// 404.html and redirect stubs are not pages of their own.
20+
const isPage = (file) => !file.endsWith(`${sep}404.html`) && !/http-equiv="refresh"/i.test(readFileSync(file, 'utf8'));
21+
22+
// Same URL form as llms.txt: folders for index pages.
23+
const urlOf = (file) => SITE + relative(DOCS, file).split(sep).join('/').replace(/(^|\/)index\.html$/, '$1');
24+
25+
const today = new Date().toISOString().slice(0, 10);
26+
const lastmod = (file) => execFileSync('git', ['log', '-1', '--format=%cs', '--', file], { cwd: DOCS, encoding: 'utf8' }).trim() || today;
27+
28+
const urls = htmlFiles(DOCS).filter(isPage).map((f) => ({ loc: urlOf(f), lastmod: lastmod(f) }))
29+
.sort((a, b) => a.loc.localeCompare(b.loc));
30+
31+
const xml = `<?xml version="1.0" encoding="UTF-8"?>
32+
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
33+
${urls.map((u) => ` <url><loc>${u.loc}</loc><lastmod>${u.lastmod}</lastmod></url>`).join('\n')}
34+
</urlset>
35+
`;
36+
37+
writeFileSync(join(DOCS, 'sitemap.xml'), xml);
38+
console.log(`docs/sitemap.xml: ${urls.length} pages`);

0 commit comments

Comments
 (0)