@starlove/orbit 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Dockerfile +10 -8
- package/README.md +146 -164
- package/dist/full/csp.txt +1 -0
- package/dist/full/fonts/JetBrains_Mono/JetBrainsMono-subset.woff2 +0 -0
- package/dist/full/fonts/JetBrains_Mono/README.txt +5 -0
- package/dist/full/fonts/Mona_Sans/MonaSans-subset.woff2 +0 -0
- package/{public/fonts/Open_Sans → dist/full/fonts/Mona_Sans}/OFL.txt +93 -93
- package/dist/full/fonts/Mona_Sans/README.txt +10 -0
- package/{public/fonts/JetBrains_Mono → dist/full/fonts/Newsreader}/OFL.txt +93 -93
- package/dist/full/fonts/Newsreader/README.txt +8 -0
- package/dist/full/fonts/Newsreader/newsreader.woff2 +0 -0
- package/dist/full/index.html +36 -653
- package/dist/full/js/app.BmuponPJ.js +32 -0
- package/dist/full/js/app.BmuponPJ.js.map +1 -0
- package/dist/full/js/chunk.1fJGQGbW.js +2 -0
- package/dist/full/js/chunk.1fJGQGbW.js.map +1 -0
- package/dist/full/js/chunk.5D7JO2zp.js +2 -0
- package/dist/full/js/chunk.5D7JO2zp.js.map +1 -0
- package/dist/full/js/chunk.BrNn_D79.js +2 -0
- package/dist/full/js/chunk.BrNn_D79.js.map +1 -0
- package/dist/full/js/chunk.CokJXIqM.js +2 -0
- package/dist/full/js/chunk.CokJXIqM.js.map +1 -0
- package/dist/full/js/chunk.D_Haqy6R.js +2 -0
- package/dist/full/js/chunk.D_Haqy6R.js.map +1 -0
- package/dist/full/js/chunk.RO0jsH6I.js +15 -0
- package/dist/full/js/chunk.RO0jsH6I.js.map +1 -0
- package/dist/full/js/chunk.dqWOEtBM.js +2 -0
- package/dist/full/js/chunk.dqWOEtBM.js.map +1 -0
- package/dist/full/js/warm.f260bbbc.js +15 -0
- package/dist/full/orbits-favicon.png +0 -0
- package/dist/full/orbits-logo-bg-wide.png +0 -0
- package/dist/full/orbits-logo-bg.png +0 -0
- package/dist/full/orbits-logo.png +0 -0
- package/dist/full/styles.2b154ffe.css +1 -0
- package/dist/full/vendor/starlove-ui/theme-init.js +66 -0
- package/dist/full/version.json +2 -2
- package/docs/AGENT_GUIDE.md +114 -0
- package/docs/UPDATING.md +249 -64
- package/lib/adapters/indexeddb/blobs.d.ts +3 -0
- package/lib/adapters/indexeddb/blobs.js +54 -0
- package/lib/adapters/indexeddb/database.d.ts +60 -0
- package/lib/adapters/indexeddb/database.js +126 -0
- package/lib/adapters/indexeddb/index.d.ts +5 -0
- package/lib/adapters/indexeddb/index.js +3 -0
- package/lib/adapters/indexeddb/locks.d.ts +14 -0
- package/lib/adapters/indexeddb/locks.js +40 -0
- package/lib/adapters/indexeddb/store.d.ts +40 -0
- package/lib/adapters/indexeddb/store.js +424 -0
- package/lib/adapters/indexeddb/tables.d.ts +43 -0
- package/lib/adapters/indexeddb/tables.js +127 -0
- package/lib/adapters/memory/blobs.d.ts +3 -0
- package/lib/adapters/memory/blobs.js +44 -0
- package/lib/adapters/memory/board.d.ts +41 -0
- package/lib/adapters/memory/board.js +521 -0
- package/lib/adapters/memory/index.d.ts +2 -0
- package/lib/adapters/memory/index.js +2 -0
- package/lib/adapters/memory/search.d.ts +6 -0
- package/lib/adapters/memory/search.js +30 -0
- package/lib/adapters/memory/store.d.ts +34 -0
- package/lib/adapters/memory/store.js +266 -0
- package/lib/adapters/sqlite/backups.d.ts +53 -0
- package/lib/adapters/sqlite/backups.js +232 -0
- package/lib/adapters/sqlite/blobs.d.ts +14 -0
- package/lib/adapters/sqlite/blobs.js +109 -0
- package/lib/adapters/sqlite/board.d.ts +77 -0
- package/lib/adapters/sqlite/board.js +328 -0
- package/lib/adapters/sqlite/database.d.ts +67 -0
- package/lib/adapters/sqlite/database.js +285 -0
- package/lib/adapters/sqlite/index.d.ts +3 -0
- package/lib/adapters/sqlite/index.js +2 -0
- package/lib/adapters/sqlite/lock.d.ts +11 -0
- package/lib/adapters/sqlite/lock.js +34 -0
- package/lib/adapters/sqlite/records.d.ts +54 -0
- package/lib/adapters/sqlite/records.js +546 -0
- package/lib/adapters/sqlite/schema.d.ts +54 -0
- package/lib/adapters/sqlite/schema.js +276 -0
- package/lib/adapters/sqlite/store.d.ts +39 -0
- package/lib/adapters/sqlite/store.js +385 -0
- package/lib/browser/in-page.d.ts +31 -0
- package/lib/browser/in-page.js +46 -0
- package/lib/browser/old-preview.d.ts +13 -0
- package/lib/browser/old-preview.js +80 -0
- package/lib/browser/preview-board.d.ts +8 -0
- package/lib/browser/preview-board.js +69 -0
- package/lib/cli/main.d.ts +7 -0
- package/lib/cli/main.js +343 -0
- package/lib/cli/orbit.d.ts +8 -0
- package/lib/cli/orbit.js +25 -0
- package/lib/client/http.d.ts +38 -0
- package/lib/client/http.js +334 -0
- package/lib/client/local.d.ts +26 -0
- package/lib/client/local.js +190 -0
- package/lib/client/object-url.d.ts +8 -0
- package/lib/client/object-url.js +21 -0
- package/lib/client/types.d.ts +268 -0
- package/lib/client/types.js +8 -0
- package/lib/commands/agent-tools.d.ts +31 -0
- package/lib/commands/agent-tools.js +100 -0
- package/lib/commands/index.d.ts +56 -0
- package/lib/commands/index.js +298 -0
- package/lib/commands/parse.d.ts +73 -0
- package/lib/commands/parse.js +231 -0
- package/lib/commands/present.d.ts +134 -0
- package/lib/commands/present.js +198 -0
- package/lib/commands/session.d.ts +85 -0
- package/lib/commands/session.js +138 -0
- package/lib/commands/verbs.d.ts +35 -0
- package/lib/commands/verbs.js +842 -0
- package/lib/core/actors.d.ts +18 -0
- package/lib/core/actors.js +45 -0
- package/lib/core/agent.d.ts +128 -0
- package/lib/core/agent.js +323 -0
- package/lib/core/boards.d.ts +113 -0
- package/lib/core/boards.js +288 -0
- package/lib/core/bootstrap.d.ts +47 -0
- package/lib/core/bootstrap.js +100 -0
- package/lib/core/bytes.d.ts +10 -0
- package/lib/core/bytes.js +52 -0
- package/lib/core/card-paths.d.ts +25 -0
- package/lib/core/card-paths.js +44 -0
- package/lib/core/context.d.ts +60 -0
- package/lib/core/context.js +42 -0
- package/lib/core/cross-board.d.ts +81 -0
- package/lib/core/cross-board.js +228 -0
- package/lib/core/describe.d.ts +21 -0
- package/lib/core/describe.js +81 -0
- package/lib/core/errors.d.ts +159 -0
- package/lib/core/errors.js +160 -0
- package/lib/core/files.d.ts +79 -0
- package/lib/core/files.js +262 -0
- package/lib/core/history.d.ts +20 -0
- package/lib/core/history.js +53 -0
- package/lib/core/image-types.d.ts +16 -0
- package/lib/core/image-types.js +36 -0
- package/lib/core/model.d.ts +263 -0
- package/lib/core/model.js +34 -0
- package/lib/core/nebula-link.d.ts +14 -0
- package/lib/core/nebula-link.js +39 -0
- package/lib/core/relations.d.ts +58 -0
- package/lib/core/relations.js +112 -0
- package/lib/core/search.d.ts +38 -0
- package/lib/core/search.js +92 -0
- package/lib/core/sessions.d.ts +44 -0
- package/lib/core/sessions.js +158 -0
- package/lib/core/snapshot-schema.d.ts +295 -0
- package/lib/core/snapshot-schema.js +82 -0
- package/lib/core/snapshots.d.ts +75 -0
- package/lib/core/snapshots.js +409 -0
- package/lib/core/states.d.ts +25 -0
- package/lib/core/states.js +126 -0
- package/lib/core/text.d.ts +40 -0
- package/lib/core/text.js +113 -0
- package/lib/core/tickets.d.ts +69 -0
- package/lib/core/tickets.js +311 -0
- package/lib/core/trello.d.ts +17 -0
- package/lib/core/trello.js +269 -0
- package/lib/core/verdicts.d.ts +28 -0
- package/lib/core/verdicts.js +92 -0
- package/lib/core/views.d.ts +95 -0
- package/lib/core/views.js +186 -0
- package/lib/http/app.d.ts +46 -0
- package/lib/http/app.js +491 -0
- package/lib/mcp-server.d.ts +10 -0
- package/lib/mcp-server.js +120 -0
- package/lib/node/assets.d.ts +7 -0
- package/lib/node/assets.js +68 -0
- package/lib/node/data-folder.d.ts +21 -0
- package/lib/node/data-folder.js +34 -0
- package/lib/node/env.d.ts +38 -0
- package/lib/node/env.js +49 -0
- package/lib/node/host-check.d.ts +24 -0
- package/lib/node/host-check.js +53 -0
- package/lib/node/host-services.d.ts +9 -0
- package/lib/node/host-services.js +150 -0
- package/lib/node/local.d.ts +22 -0
- package/lib/node/local.js +61 -0
- package/lib/node/migrate.d.ts +53 -0
- package/lib/node/migrate.js +635 -0
- package/lib/node/package.d.ts +7 -0
- package/lib/node/package.js +14 -0
- package/lib/node/repo-board.d.ts +49 -0
- package/lib/node/repo-board.js +245 -0
- package/lib/node/serve.d.ts +8 -0
- package/lib/node/serve.js +106 -0
- package/lib/orbit.d.ts +47 -0
- package/lib/orbit.js +44 -0
- package/lib/quiet-sqlite-warning.d.ts +1 -0
- package/lib/quiet-sqlite-warning.js +18 -0
- package/lib/store/blob-path.d.ts +6 -0
- package/lib/store/blob-path.js +12 -0
- package/lib/store/conformance.d.ts +52 -0
- package/lib/store/conformance.js +1449 -0
- package/lib/store/search-words.d.ts +10 -0
- package/lib/store/search-words.js +19 -0
- package/lib/store/types.d.ts +452 -0
- package/lib/store/types.js +34 -0
- package/llms.txt +63 -0
- package/package.json +109 -25
- package/src/cli/orbit.js +11 -658
- package/src/mcp-server.js +16 -876
- package/SKILL-ORBIT.md +0 -151
- package/build.mjs +0 -210
- package/dist/full/js/app.62905fcb.js +0 -952
- package/dist/full/js/app.62905fcb.js.map +0 -7
- package/dist/full/styles.4e60d824.css +0 -1
- package/docs/AGENT_PROTOCOL.md +0 -424
- package/docs/MCP_SETUP.md +0 -54
- package/docs/ORBIT_DISPATCH.md +0 -280
- package/docs/SS-Orbit-Dark.png +0 -0
- package/docs/SS-Orbit-Light.png +0 -0
- package/docs/mcp-client.example.json +0 -13
- package/docs/setup/orbit-init-wizard.md +0 -174
- package/public/apple-touch-icon.png +0 -0
- package/public/cursors/live_arrow.cur +0 -0
- package/public/cursors/live_link.cur +0 -0
- package/public/cursors/live_move.cur +0 -0
- package/public/cursors/live_select.cur +0 -0
- package/public/cursors/live_unavail.cur +0 -0
- package/public/favicon-32x32.png +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-Bold.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-BoldItalic.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-Italic.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-Light.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-LightItalic.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-Medium.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-MediumItalic.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-Regular.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-SemiBold.ttf +0 -0
- package/public/fonts/Chakra_Petch/ChakraPetch-SemiBoldItalic.ttf +0 -0
- package/public/fonts/Chakra_Petch/OFL.txt +0 -93
- package/public/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf +0 -0
- package/public/fonts/Inter/Inter-VariableFont_opsz,wght.ttf +0 -0
- package/public/fonts/Inter/OFL.txt +0 -93
- package/public/fonts/Inter/README.txt +0 -118
- package/public/fonts/JetBrains_Mono/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
- package/public/fonts/JetBrains_Mono/JetBrainsMono-VariableFont_wght.ttf +0 -0
- package/public/fonts/JetBrains_Mono/README.txt +0 -79
- package/public/fonts/OpenRing-Regular.ttf +0 -0
- package/public/fonts/Open_Sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
- package/public/fonts/Open_Sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
- package/public/fonts/Open_Sans/README.txt +0 -100
- package/public/fonts/Orbitron/OFL.txt +0 -93
- package/public/fonts/Orbitron/Orbitron-VariableFont_wght.ttf +0 -0
- package/public/fonts/Orbitron/README.txt +0 -68
- package/public/fonts/Rajdhani/OFL.txt +0 -93
- package/public/fonts/Rajdhani/Rajdhani-Bold.ttf +0 -0
- package/public/fonts/Rajdhani/Rajdhani-Light.ttf +0 -0
- package/public/fonts/Rajdhani/Rajdhani-Medium.ttf +0 -0
- package/public/fonts/Rajdhani/Rajdhani-Regular.ttf +0 -0
- package/public/fonts/Rajdhani/Rajdhani-SemiBold.ttf +0 -0
- package/public/fonts/runescape-uf.ttf +0 -0
- package/public/index.html +0 -769
- package/public/js/actor-labels.js +0 -65
- package/public/js/api.js +0 -39
- package/public/js/app.js +0 -45
- package/public/js/artifact-drawer.js +0 -79
- package/public/js/board-export.js +0 -161
- package/public/js/board-menu.js +0 -374
- package/public/js/card-actions.js +0 -545
- package/public/js/config.js +0 -20
- package/public/js/create-card.js +0 -190
- package/public/js/dom.js +0 -19
- package/public/js/drawer.js +0 -273
- package/public/js/font-preference.js +0 -229
- package/public/js/format.js +0 -433
- package/public/js/help-menu.js +0 -31
- package/public/js/icons.js +0 -16
- package/public/js/kanban.js +0 -694
- package/public/js/local-backend.js +0 -1015
- package/public/js/main.js +0 -161
- package/public/js/modal.js +0 -33
- package/public/js/motion-preference.js +0 -64
- package/public/js/panel.js +0 -58
- package/public/js/router.js +0 -134
- package/public/js/search.js +0 -56
- package/public/js/settings-tabs.js +0 -7
- package/public/js/settings.js +0 -1634
- package/public/js/sse.js +0 -159
- package/public/js/starscape.js +0 -332
- package/public/js/state.js +0 -129
- package/public/js/text-editing.js +0 -128
- package/public/js/theme-preference.js +0 -95
- package/public/js/ticket-detail.js +0 -1516
- package/public/js/ticket-typeahead.js +0 -49
- package/public/js/toast.js +0 -89
- package/public/js/topbar-notes.js +0 -155
- package/public/js/transport.js +0 -22
- package/public/js/typeahead.js +0 -206
- package/public/js/unread.js +0 -121
- package/public/js/update-check.js +0 -58
- package/public/js/url-routes.js +0 -94
- package/public/orbits-favicon.png +0 -0
- package/public/orbits-logo-bg-wide.png +0 -0
- package/public/orbits-logo-bg.png +0 -0
- package/public/orbits-logo.png +0 -0
- package/public/styles.css +0 -7709
- package/src/core/agent.js +0 -387
- package/src/core/agents-md.js +0 -109
- package/src/core/artifacts.js +0 -149
- package/src/core/attachments.js +0 -238
- package/src/core/auth.js +0 -85
- package/src/core/backups.js +0 -142
- package/src/core/board.js +0 -148
- package/src/core/boards.js +0 -409
- package/src/core/bootstrap.js +0 -170
- package/src/core/css-bundle.js +0 -30
- package/src/core/db.js +0 -315
- package/src/core/delete-board.js +0 -163
- package/src/core/dispatch.js +0 -1007
- package/src/core/events.js +0 -314
- package/src/core/http.js +0 -115
- package/src/core/migrate.js +0 -198
- package/src/core/paths.js +0 -55
- package/src/core/provision-repo-board.js +0 -119
- package/src/core/queries.js +0 -246
- package/src/core/registry.js +0 -211
- package/src/core/relations.js +0 -163
- package/src/core/review-verdicts.js +0 -138
- package/src/core/router.js +0 -556
- package/src/core/search.js +0 -183
- package/src/core/seed.js +0 -234
- package/src/core/snapshots.js +0 -692
- package/src/core/states.js +0 -167
- package/src/core/system-picker.js +0 -109
- package/src/core/tickets.js +0 -400
- package/src/core/util.js +0 -106
- package/src/core/version-check.js +0 -154
- package/src/mcp/orbit-client.js +0 -287
- package/src/server.js +0 -115
package/public/index.html
DELETED
|
@@ -1,769 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
-
<title>Orbit</title>
|
|
7
|
-
<link
|
|
8
|
-
rel="icon"
|
|
9
|
-
type="image/png"
|
|
10
|
-
sizes="32x32"
|
|
11
|
-
href="./favicon-32x32.png"
|
|
12
|
-
/>
|
|
13
|
-
<link
|
|
14
|
-
rel="apple-touch-icon"
|
|
15
|
-
sizes="180x180"
|
|
16
|
-
href="./apple-touch-icon.png"
|
|
17
|
-
/>
|
|
18
|
-
<!-- Apply the stored theme + motion + font/size preferences before first
|
|
19
|
-
paint, so the app underneath the splash paints in the right theme
|
|
20
|
-
(no flash) and at the right type size (no layout jump), and the
|
|
21
|
-
splash respects an explicit reduce-motion choice. Mirrors
|
|
22
|
-
theme-preference.js (mab_theme), motion-preference.js
|
|
23
|
-
(mab_reduce_motion → data-motion), and font-preference.js
|
|
24
|
-
(orbit_font_preferences → --orbit-font-* / --type-*); main.js
|
|
25
|
-
reconciles on load. -->
|
|
26
|
-
<script>
|
|
27
|
-
try {
|
|
28
|
-
var t = localStorage.getItem("mab_theme");
|
|
29
|
-
if (t === "light" || t === "dark")
|
|
30
|
-
document.documentElement.setAttribute("data-theme", t);
|
|
31
|
-
var rm = localStorage.getItem("mab_reduce_motion");
|
|
32
|
-
if (rm === "true")
|
|
33
|
-
document.documentElement.setAttribute("data-motion", "reduce");
|
|
34
|
-
else if (rm === "false")
|
|
35
|
-
document.documentElement.setAttribute("data-motion", "full");
|
|
36
|
-
var fp = JSON.parse(localStorage.getItem("orbit_font_preferences") || "{}");
|
|
37
|
-
var stacks = {
|
|
38
|
-
inter: '"Orbit Inter", "Inter", "Segoe UI Variable", "Segoe UI", Arial, sans-serif',
|
|
39
|
-
openSans: '"Orbit Open Sans", "Open Sans", "Segoe UI Variable", "Segoe UI", Arial, sans-serif',
|
|
40
|
-
jetBrainsMono: '"Orbit JetBrains Mono", "JetBrains Mono", "Cascadia Mono", "SFMono-Regular", Consolas, monospace',
|
|
41
|
-
chakraPetch: '"Orbit Chakra Petch", "Chakra Petch", "Segoe UI Variable", "Segoe UI", Arial, sans-serif',
|
|
42
|
-
orbitron: '"Orbit Orbitron", "Orbitron", "Segoe UI Variable", "Segoe UI", Arial, sans-serif',
|
|
43
|
-
rajdhani: '"Orbit Rajdhani", "Rajdhani", "Segoe UI Variable", "Segoe UI", Arial, sans-serif',
|
|
44
|
-
runescapeUF: '"Orbit Runescape UF", "Cascadia Mono", monospace',
|
|
45
|
-
openRing: '"Orbit Open Ring", "Segoe UI Variable", "Segoe UI", Arial, sans-serif'
|
|
46
|
-
};
|
|
47
|
-
var defaults = {
|
|
48
|
-
control: "inter",
|
|
49
|
-
heading: "inter",
|
|
50
|
-
label: "inter",
|
|
51
|
-
badge: "orbitron"
|
|
52
|
-
};
|
|
53
|
-
var aliases = { ui: "control" };
|
|
54
|
-
var targets = {
|
|
55
|
-
control: "--orbit-font-control",
|
|
56
|
-
heading: "--orbit-font-heading",
|
|
57
|
-
label: "--orbit-font-label",
|
|
58
|
-
badge: "--orbit-font-badge"
|
|
59
|
-
};
|
|
60
|
-
var dataAttrs = {
|
|
61
|
-
control: "data-font-control",
|
|
62
|
-
heading: "data-font-heading",
|
|
63
|
-
label: "data-font-label",
|
|
64
|
-
badge: "data-font-badge"
|
|
65
|
-
};
|
|
66
|
-
if (!fp.badge && fp.label && fp.label !== "inter" && stacks[fp.label]) {
|
|
67
|
-
fp.badge = fp.label;
|
|
68
|
-
}
|
|
69
|
-
Object.keys(targets).forEach(function (target) {
|
|
70
|
-
var id = stacks[fp[target]] ? fp[target] : defaults[target];
|
|
71
|
-
Object.keys(aliases).forEach(function (legacy) {
|
|
72
|
-
if (aliases[legacy] === target && !stacks[fp[target]] && stacks[fp[legacy]]) {
|
|
73
|
-
id = fp[legacy];
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
document.documentElement.style.setProperty(targets[target], stacks[id]);
|
|
77
|
-
document.documentElement.setAttribute(dataAttrs[target], id);
|
|
78
|
-
});
|
|
79
|
-
var siteFont = stacks[fp.site] ? fp.site : "inter";
|
|
80
|
-
// Body text always follows the primary font.
|
|
81
|
-
document.documentElement.style.setProperty("--orbit-font-body", stacks[siteFont]);
|
|
82
|
-
var userScale = Number(fp.userScale);
|
|
83
|
-
if (!isFinite(userScale)) userScale = 1;
|
|
84
|
-
userScale = Math.min(1.3, Math.max(0.85, userScale));
|
|
85
|
-
document.documentElement.style.setProperty("--type-user-scale", String(userScale));
|
|
86
|
-
document.documentElement.setAttribute("data-font-site", siteFont);
|
|
87
|
-
} catch (e) {}
|
|
88
|
-
</script>
|
|
89
|
-
<link rel="preload" as="image" href="./orbits-logo.png" />
|
|
90
|
-
<link rel="stylesheet" href="/styles.css" />
|
|
91
|
-
<!-- Boot splash — the canonical ss-ui loading screen (see the package's
|
|
92
|
-
components/loader.css). Inline critical CSS so it paints before
|
|
93
|
-
/js/main.js loads. The logo grows in then breathes; no spinner.
|
|
94
|
-
Keyframes namespaced `starscape-loader-*`. Under reduced motion the grow-in
|
|
95
|
-
is dropped and the dot grid stops; the gentle breathe stays. -->
|
|
96
|
-
<style>
|
|
97
|
-
.loader {
|
|
98
|
-
position: fixed;
|
|
99
|
-
inset: 0;
|
|
100
|
-
z-index: 99999;
|
|
101
|
-
display: flex;
|
|
102
|
-
flex-direction: column;
|
|
103
|
-
align-items: center;
|
|
104
|
-
justify-content: center;
|
|
105
|
-
gap: 2rem;
|
|
106
|
-
overflow: hidden;
|
|
107
|
-
background: linear-gradient(
|
|
108
|
-
135deg,
|
|
109
|
-
#1a1a2e 0%,
|
|
110
|
-
#16213e 50%,
|
|
111
|
-
#0f3460 100%
|
|
112
|
-
);
|
|
113
|
-
transition: opacity 0.4s ease;
|
|
114
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
|
|
115
|
-
Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
116
|
-
}
|
|
117
|
-
.loader::before {
|
|
118
|
-
content: "";
|
|
119
|
-
position: absolute;
|
|
120
|
-
width: 200%;
|
|
121
|
-
height: 200%;
|
|
122
|
-
background-image: radial-gradient(
|
|
123
|
-
circle,
|
|
124
|
-
rgba(168, 192, 255, 0.15) 1px,
|
|
125
|
-
transparent 1px
|
|
126
|
-
);
|
|
127
|
-
background-size: 50px 50px;
|
|
128
|
-
will-change: transform;
|
|
129
|
-
animation: starscape-loader-drift 20s linear infinite;
|
|
130
|
-
}
|
|
131
|
-
.loader.is-hiding {
|
|
132
|
-
opacity: 0;
|
|
133
|
-
pointer-events: none;
|
|
134
|
-
}
|
|
135
|
-
.loader__logo {
|
|
136
|
-
width: 120px;
|
|
137
|
-
height: 120px;
|
|
138
|
-
object-fit: contain;
|
|
139
|
-
filter: drop-shadow(0 0 20px rgba(255, 255, 255, 0.3));
|
|
140
|
-
transform-origin: center;
|
|
141
|
-
/* translateZ in the keyframes + backface-visibility keep the star
|
|
142
|
-
on a stable GPU layer, so it doesn't snap ~1px as the grow
|
|
143
|
-
starts. Keep in sync with the package components/loader.css. */
|
|
144
|
-
backface-visibility: hidden;
|
|
145
|
-
will-change: transform;
|
|
146
|
-
animation:
|
|
147
|
-
starscape-loader-grow 0.6s cubic-bezier(0.22, 1, 0.36, 1) both,
|
|
148
|
-
starscape-loader-breathe 3s ease-in-out 0.6s infinite;
|
|
149
|
-
}
|
|
150
|
-
.loader__label {
|
|
151
|
-
margin: 0;
|
|
152
|
-
color: #fff;
|
|
153
|
-
font-size: 1.25rem;
|
|
154
|
-
font-weight: 600;
|
|
155
|
-
letter-spacing: 0.5px;
|
|
156
|
-
text-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
|
|
157
|
-
}
|
|
158
|
-
@keyframes starscape-loader-drift {
|
|
159
|
-
from { transform: translate(0, 0); }
|
|
160
|
-
to { transform: translate(-50px, -50px); }
|
|
161
|
-
}
|
|
162
|
-
@keyframes starscape-loader-grow {
|
|
163
|
-
from { transform: scale(0) translateZ(0); opacity: 0; }
|
|
164
|
-
to { transform: scale(1) translateZ(0); opacity: 1; }
|
|
165
|
-
}
|
|
166
|
-
@keyframes starscape-loader-breathe {
|
|
167
|
-
0%, 100% { transform: scale(1) translateZ(0); }
|
|
168
|
-
50% { transform: scale(1.06) translateZ(0); }
|
|
169
|
-
}
|
|
170
|
-
@media (prefers-reduced-motion: reduce) {
|
|
171
|
-
:root:not([data-motion="full"]) .loader::before {
|
|
172
|
-
animation: none;
|
|
173
|
-
}
|
|
174
|
-
:root:not([data-motion="full"]) .loader__logo {
|
|
175
|
-
animation: starscape-loader-breathe 3s ease-in-out infinite;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
[data-motion="reduce"] .loader::before {
|
|
179
|
-
animation: none;
|
|
180
|
-
}
|
|
181
|
-
[data-motion="reduce"] .loader__logo {
|
|
182
|
-
animation: starscape-loader-breathe 3s ease-in-out infinite;
|
|
183
|
-
}
|
|
184
|
-
</style>
|
|
185
|
-
</head>
|
|
186
|
-
<body>
|
|
187
|
-
<!-- Boot splash - shown immediately, removed once the app is ready. -->
|
|
188
|
-
<div id="loader" class="loader" role="status" aria-live="polite">
|
|
189
|
-
<img
|
|
190
|
-
class="loader__logo"
|
|
191
|
-
src="./orbits-logo.png"
|
|
192
|
-
alt="Orbit"
|
|
193
|
-
width="120"
|
|
194
|
-
height="120"
|
|
195
|
-
/>
|
|
196
|
-
<p class="loader__label">Loading Orbit…</p>
|
|
197
|
-
</div>
|
|
198
|
-
|
|
199
|
-
<div class="grain">
|
|
200
|
-
<div class="milky-way" aria-hidden="true"></div>
|
|
201
|
-
</div>
|
|
202
|
-
<header class="topbar">
|
|
203
|
-
<div class="brand" aria-label="Orbit">
|
|
204
|
-
<button
|
|
205
|
-
id="brandFocusBtn"
|
|
206
|
-
type="button"
|
|
207
|
-
class="brand-focus-btn"
|
|
208
|
-
data-variant="brand-focus"
|
|
209
|
-
aria-label="Show board notes"
|
|
210
|
-
aria-expanded="false"
|
|
211
|
-
aria-controls="brandFocusPopover"
|
|
212
|
-
>
|
|
213
|
-
<img class="mark" src="./orbits-logo.png" alt="Orbits logo" />
|
|
214
|
-
</button>
|
|
215
|
-
<div
|
|
216
|
-
id="brandFocusPopover"
|
|
217
|
-
class="brand-focus-popover"
|
|
218
|
-
role="dialog"
|
|
219
|
-
aria-label="Notes For You"
|
|
220
|
-
hidden
|
|
221
|
-
>
|
|
222
|
-
<div class="inline-md-field brand-focus-notes-field">
|
|
223
|
-
<span class="inline-md-field-label font-orbitron">Notes For You</span>
|
|
224
|
-
<div id="brandFocusNotes" class="brand-focus-notes-body"></div>
|
|
225
|
-
</div>
|
|
226
|
-
</div>
|
|
227
|
-
</div>
|
|
228
|
-
<div class="controls">
|
|
229
|
-
<button
|
|
230
|
-
id="brandNotesBtn"
|
|
231
|
-
type="button"
|
|
232
|
-
class="topbar-notes brand-notes-strip"
|
|
233
|
-
data-variant="topbar-notes"
|
|
234
|
-
aria-label="Show board notes"
|
|
235
|
-
aria-expanded="false"
|
|
236
|
-
aria-controls="brandFocusPopover"
|
|
237
|
-
>
|
|
238
|
-
<span id="brandNotesText" class="topbar-notes__text"></span>
|
|
239
|
-
</button>
|
|
240
|
-
<span class="topbar-controls-gap" aria-hidden="true"></span>
|
|
241
|
-
<div class="topbar-search" id="topbarSearch">
|
|
242
|
-
<input
|
|
243
|
-
id="searchInput"
|
|
244
|
-
placeholder="Search tickets, comments, decisions..."
|
|
245
|
-
autocomplete="off"
|
|
246
|
-
/>
|
|
247
|
-
<div id="searchResults" class="search-results" hidden></div>
|
|
248
|
-
</div>
|
|
249
|
-
<button
|
|
250
|
-
id="newTicketBtn"
|
|
251
|
-
type="button"
|
|
252
|
-
class="topbar-btn topbar-ctl-shrink"
|
|
253
|
-
data-variant="cta"
|
|
254
|
-
aria-label="New Card"
|
|
255
|
-
>
|
|
256
|
-
<span class="btn-plus" aria-hidden="true"></span>
|
|
257
|
-
<span class="topbar-btn-label">New Card</span>
|
|
258
|
-
</button>
|
|
259
|
-
<div class="topbar-menu">
|
|
260
|
-
<button
|
|
261
|
-
type="button"
|
|
262
|
-
id="boardMenuBtn"
|
|
263
|
-
class="topbar-chip topbar-ctl-shrink"
|
|
264
|
-
data-variant="board-chip"
|
|
265
|
-
aria-expanded="false"
|
|
266
|
-
aria-haspopup="true"
|
|
267
|
-
aria-controls="boardFlyout"
|
|
268
|
-
>
|
|
269
|
-
<svg
|
|
270
|
-
class="topbar-icon"
|
|
271
|
-
width="16"
|
|
272
|
-
height="16"
|
|
273
|
-
viewBox="0 0 24 24"
|
|
274
|
-
fill="none"
|
|
275
|
-
aria-hidden="true"
|
|
276
|
-
>
|
|
277
|
-
<rect
|
|
278
|
-
x="4"
|
|
279
|
-
y="2"
|
|
280
|
-
width="6"
|
|
281
|
-
height="20"
|
|
282
|
-
rx="0.75"
|
|
283
|
-
stroke="currentColor"
|
|
284
|
-
stroke-width="2"
|
|
285
|
-
/>
|
|
286
|
-
<rect
|
|
287
|
-
x="14"
|
|
288
|
-
y="2"
|
|
289
|
-
width="6"
|
|
290
|
-
height="20"
|
|
291
|
-
rx="0.75"
|
|
292
|
-
stroke="currentColor"
|
|
293
|
-
stroke-width="2"
|
|
294
|
-
/>
|
|
295
|
-
</svg>
|
|
296
|
-
<span class="topbar-chip-label">Board</span>
|
|
297
|
-
</button>
|
|
298
|
-
<div
|
|
299
|
-
id="boardFlyout"
|
|
300
|
-
class="menu-flyout menu-flyout--align-end"
|
|
301
|
-
hidden
|
|
302
|
-
role="menu"
|
|
303
|
-
></div>
|
|
304
|
-
</div>
|
|
305
|
-
<button
|
|
306
|
-
id="themeToggle"
|
|
307
|
-
type="button"
|
|
308
|
-
class="topbar-btn topbar-ctl-shrink"
|
|
309
|
-
data-variant="theme"
|
|
310
|
-
aria-label="Toggle theme"
|
|
311
|
-
>
|
|
312
|
-
<svg
|
|
313
|
-
class="topbar-icon"
|
|
314
|
-
id="themeIcon"
|
|
315
|
-
width="16"
|
|
316
|
-
height="16"
|
|
317
|
-
viewBox="0 0 24 24"
|
|
318
|
-
fill="none"
|
|
319
|
-
stroke="currentColor"
|
|
320
|
-
stroke-width="2"
|
|
321
|
-
stroke-linecap="round"
|
|
322
|
-
aria-hidden="true"
|
|
323
|
-
>
|
|
324
|
-
<circle cx="12" cy="12" r="5" />
|
|
325
|
-
<path
|
|
326
|
-
d="M12 1v2m0 18v2M4.2 4.2l1.4 1.4m12.8 12.8l1.4 1.4M1 12h2m18 0h2M4.2 19.8l1.4-1.4M18.4 5.6l1.4-1.4"
|
|
327
|
-
/>
|
|
328
|
-
</svg>
|
|
329
|
-
</button>
|
|
330
|
-
<button
|
|
331
|
-
id="helpBtn"
|
|
332
|
-
type="button"
|
|
333
|
-
class="topbar-btn topbar-ctl-shrink"
|
|
334
|
-
data-variant="translucent"
|
|
335
|
-
aria-haspopup="dialog"
|
|
336
|
-
aria-controls="helpDialog"
|
|
337
|
-
>
|
|
338
|
-
<svg
|
|
339
|
-
class="topbar-icon"
|
|
340
|
-
width="16"
|
|
341
|
-
height="16"
|
|
342
|
-
viewBox="0 0 24 24"
|
|
343
|
-
fill="none"
|
|
344
|
-
stroke="currentColor"
|
|
345
|
-
stroke-width="2"
|
|
346
|
-
stroke-linecap="round"
|
|
347
|
-
stroke-linejoin="round"
|
|
348
|
-
aria-hidden="true"
|
|
349
|
-
>
|
|
350
|
-
<circle cx="12" cy="12" r="10" />
|
|
351
|
-
<path d="M9.09 9a3 3 0 015.83 1c0 2-3 3-3 3" />
|
|
352
|
-
<path d="M12 17h.01" />
|
|
353
|
-
</svg>
|
|
354
|
-
<span class="topbar-btn-label">Help</span>
|
|
355
|
-
</button>
|
|
356
|
-
<button
|
|
357
|
-
id="settingsBtn"
|
|
358
|
-
type="button"
|
|
359
|
-
class="topbar-btn topbar-ctl-shrink"
|
|
360
|
-
data-variant="translucent"
|
|
361
|
-
>
|
|
362
|
-
<svg
|
|
363
|
-
class="topbar-icon"
|
|
364
|
-
width="16"
|
|
365
|
-
height="16"
|
|
366
|
-
viewBox="0 0 24 24"
|
|
367
|
-
fill="none"
|
|
368
|
-
stroke="currentColor"
|
|
369
|
-
stroke-width="2"
|
|
370
|
-
stroke-linecap="round"
|
|
371
|
-
stroke-linejoin="round"
|
|
372
|
-
aria-hidden="true"
|
|
373
|
-
>
|
|
374
|
-
<path
|
|
375
|
-
d="M12.22 2h-.44a2 2 0 00-2 2v.18a2 2 0 01-1 1.73l-.43.25a2 2 0 01-2 0l-.15-.08a2 2 0 00-2.73.73l-.22.38a2 2 0 00.73 2.73l.15.1a2 2 0 011 1.72v.51a2 2 0 01-1 1.74l-.15.09a2 2 0 00-.73 2.73l.22.38a2 2 0 002.73.73l.15-.08a2 2 0 012 0l.43.25a2 2 0 011 1.73V20a2 2 0 002 2h.44a2 2 0 002-2v-.18a2 2 0 011-1.73l.43-.25a2 2 0 012 0l.15.08a2 2 0 002.73-.73l.22-.39a2 2 0 00-.73-2.73l-.15-.08a2 2 0 01-1-1.74v-.5a2 2 0 011-1.74l.15-.09a2 2 0 00.73-2.73l-.22-.38a2 2 0 00-2.73-.73l-.15.08a2 2 0 01-2 0l-.43-.25a2 2 0 01-1-1.73V4a2 2 0 00-2-2z"
|
|
376
|
-
/>
|
|
377
|
-
<circle cx="12" cy="12" r="3" />
|
|
378
|
-
</svg>
|
|
379
|
-
<span class="topbar-btn-label">Settings</span>
|
|
380
|
-
<span class="topbar-update-dot" title="Update available" hidden></span>
|
|
381
|
-
</button>
|
|
382
|
-
</div>
|
|
383
|
-
</header>
|
|
384
|
-
|
|
385
|
-
<div
|
|
386
|
-
id="createFlyoutBackdrop"
|
|
387
|
-
class="create-flyout-backdrop"
|
|
388
|
-
hidden
|
|
389
|
-
aria-hidden="true"
|
|
390
|
-
></div>
|
|
391
|
-
<div
|
|
392
|
-
id="createFlyout"
|
|
393
|
-
class="create-flyout"
|
|
394
|
-
hidden
|
|
395
|
-
aria-label="New card"
|
|
396
|
-
>
|
|
397
|
-
<div id="createFlyoutInner" class="create-flyout-inner"></div>
|
|
398
|
-
</div>
|
|
399
|
-
|
|
400
|
-
<main class="board-main">
|
|
401
|
-
<div id="kanban" class="kanban" aria-live="polite"></div>
|
|
402
|
-
</main>
|
|
403
|
-
<footer class="frame-footer" aria-label="Application signature">
|
|
404
|
-
<span class="frame-footer-title">Orbit</span>
|
|
405
|
-
<span class="frame-footer-subtitle"><em>a Starscape app</em></span>
|
|
406
|
-
</footer>
|
|
407
|
-
|
|
408
|
-
<div
|
|
409
|
-
id="drawerBackdrop"
|
|
410
|
-
class="drawer-backdrop"
|
|
411
|
-
hidden
|
|
412
|
-
aria-hidden="true"
|
|
413
|
-
></div>
|
|
414
|
-
<aside id="drawer" class="drawer" hidden aria-label="Panel">
|
|
415
|
-
<header class="drawer-header">
|
|
416
|
-
<div
|
|
417
|
-
id="drawerTitleBlock"
|
|
418
|
-
class="drawer-title-block"
|
|
419
|
-
></div>
|
|
420
|
-
<div id="drawerTabsShell" class="drawer-tabs-shell" hidden>
|
|
421
|
-
<nav
|
|
422
|
-
id="drawerTabs"
|
|
423
|
-
class="drawer-tabs"
|
|
424
|
-
role="tablist"
|
|
425
|
-
></nav>
|
|
426
|
-
</div>
|
|
427
|
-
<button
|
|
428
|
-
type="button"
|
|
429
|
-
id="drawerArchiveBtn"
|
|
430
|
-
class="drawer-archive"
|
|
431
|
-
aria-label="Archive card"
|
|
432
|
-
title="Archive card"
|
|
433
|
-
hidden
|
|
434
|
-
>
|
|
435
|
-
<svg
|
|
436
|
-
viewBox="0 0 24 24"
|
|
437
|
-
width="18"
|
|
438
|
-
height="18"
|
|
439
|
-
fill="none"
|
|
440
|
-
stroke="currentColor"
|
|
441
|
-
stroke-width="2"
|
|
442
|
-
stroke-linecap="round"
|
|
443
|
-
stroke-linejoin="round"
|
|
444
|
-
aria-hidden="true"
|
|
445
|
-
>
|
|
446
|
-
<path d="M3 6h18" />
|
|
447
|
-
<path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" />
|
|
448
|
-
<path
|
|
449
|
-
d="M19 6l-1 14a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2L5 6"
|
|
450
|
-
/>
|
|
451
|
-
<path d="M10 11v6" />
|
|
452
|
-
<path d="M14 11v6" />
|
|
453
|
-
</svg>
|
|
454
|
-
</button>
|
|
455
|
-
<button
|
|
456
|
-
type="button"
|
|
457
|
-
id="drawerCloseBtn"
|
|
458
|
-
class="drawer-close"
|
|
459
|
-
aria-label="Close panel"
|
|
460
|
-
>
|
|
461
|
-
<svg
|
|
462
|
-
class="ui-icon ui-icon-x"
|
|
463
|
-
viewBox="0 0 24 24"
|
|
464
|
-
aria-hidden="true"
|
|
465
|
-
focusable="false"
|
|
466
|
-
>
|
|
467
|
-
<path d="M6 6l12 12M18 6 6 18" />
|
|
468
|
-
</svg>
|
|
469
|
-
</button>
|
|
470
|
-
</header>
|
|
471
|
-
<div id="drawerInner" class="drawer-inner"></div>
|
|
472
|
-
</aside>
|
|
473
|
-
|
|
474
|
-
<div
|
|
475
|
-
id="artifactDrawerBackdrop"
|
|
476
|
-
class="artifact-drawer-backdrop"
|
|
477
|
-
hidden
|
|
478
|
-
aria-hidden="true"
|
|
479
|
-
></div>
|
|
480
|
-
<aside
|
|
481
|
-
id="artifactDrawer"
|
|
482
|
-
class="artifact-drawer"
|
|
483
|
-
hidden
|
|
484
|
-
aria-label="Linked markdown artifact"
|
|
485
|
-
>
|
|
486
|
-
<header class="artifact-drawer-header">
|
|
487
|
-
<div class="artifact-drawer-title-block">
|
|
488
|
-
<h2 id="artifactDrawerTitle" class="artifact-drawer-title">Artifact</h2>
|
|
489
|
-
<p id="artifactDrawerMeta" class="artifact-drawer-meta"></p>
|
|
490
|
-
</div>
|
|
491
|
-
<button
|
|
492
|
-
type="button"
|
|
493
|
-
id="artifactDrawerCloseBtn"
|
|
494
|
-
class="drawer-close artifact-drawer-close"
|
|
495
|
-
aria-label="Close artifact"
|
|
496
|
-
>
|
|
497
|
-
<svg
|
|
498
|
-
class="ui-icon ui-icon-x"
|
|
499
|
-
viewBox="0 0 24 24"
|
|
500
|
-
aria-hidden="true"
|
|
501
|
-
focusable="false"
|
|
502
|
-
>
|
|
503
|
-
<path d="M6 6l12 12M18 6 6 18" />
|
|
504
|
-
</svg>
|
|
505
|
-
</button>
|
|
506
|
-
</header>
|
|
507
|
-
<div id="artifactDrawerBody" class="artifact-drawer-body"></div>
|
|
508
|
-
</aside>
|
|
509
|
-
|
|
510
|
-
<template id="commentFormTemplate">
|
|
511
|
-
<form class="comment-form">
|
|
512
|
-
<textarea
|
|
513
|
-
name="body"
|
|
514
|
-
placeholder="Add a comment, decision, or instruction..."
|
|
515
|
-
required
|
|
516
|
-
></textarea>
|
|
517
|
-
<button type="submit">Comment</button>
|
|
518
|
-
</form>
|
|
519
|
-
</template>
|
|
520
|
-
|
|
521
|
-
<!-- Generic modal dialog — content varies by use-case.
|
|
522
|
-
The welcome dialog auto-shows on the preview edition via main.js.
|
|
523
|
-
Other uses: call openModal(el) from any module that imports modal.js. -->
|
|
524
|
-
<dialog
|
|
525
|
-
id="welcomeDialog"
|
|
526
|
-
class="orbit-dialog"
|
|
527
|
-
aria-labelledby="welcomeDialogTitle"
|
|
528
|
-
>
|
|
529
|
-
<div class="welcome-dialog-inner">
|
|
530
|
-
<div class="welcome-dialog-head">
|
|
531
|
-
<img
|
|
532
|
-
class="welcome-dialog-logo"
|
|
533
|
-
src="./orbits-logo.png"
|
|
534
|
-
alt=""
|
|
535
|
-
aria-hidden="true"
|
|
536
|
-
/>
|
|
537
|
-
<span class="welcome-dialog-edition-pill"
|
|
538
|
-
>Preview Edition</span
|
|
539
|
-
>
|
|
540
|
-
</div>
|
|
541
|
-
<div class="welcome-dialog-body">
|
|
542
|
-
<h2 id="welcomeDialogTitle" class="welcome-dialog-title">
|
|
543
|
-
No-AI Browser Preview
|
|
544
|
-
</h2>
|
|
545
|
-
<p class="welcome-dialog-lede">
|
|
546
|
-
You're using the local, browser-only preview of
|
|
547
|
-
<strong>Orbit</strong> — a developer-first kanban board
|
|
548
|
-
built for teams working alongside AI agents.
|
|
549
|
-
</p>
|
|
550
|
-
<ul class="welcome-dialog-notices">
|
|
551
|
-
<li>
|
|
552
|
-
<span class="welcome-dialog-notice-label"
|
|
553
|
-
>No AI</span
|
|
554
|
-
>
|
|
555
|
-
Boards are stored in your browser only. AI features,
|
|
556
|
-
MCP server, and server-side sync require the full
|
|
557
|
-
install.
|
|
558
|
-
</li>
|
|
559
|
-
<li>
|
|
560
|
-
<span class="welcome-dialog-notice-label"
|
|
561
|
-
>Download</span
|
|
562
|
-
>
|
|
563
|
-
Get the full app at
|
|
564
|
-
<a
|
|
565
|
-
class="welcome-dialog-link"
|
|
566
|
-
href="https://orbit.starscape.app/install"
|
|
567
|
-
>orbit.starscape.app/install</a
|
|
568
|
-
>
|
|
569
|
-
</li>
|
|
570
|
-
<li>
|
|
571
|
-
<span class="welcome-dialog-notice-label"
|
|
572
|
-
>Coming soon</span
|
|
573
|
-
>
|
|
574
|
-
Paid cloud hosting for teams — no install required.
|
|
575
|
-
</li>
|
|
576
|
-
</ul>
|
|
577
|
-
</div>
|
|
578
|
-
<footer class="welcome-dialog-footer">
|
|
579
|
-
<button
|
|
580
|
-
type="button"
|
|
581
|
-
class="welcome-dialog-cta"
|
|
582
|
-
data-modal-initial-focus
|
|
583
|
-
data-modal-close
|
|
584
|
-
>
|
|
585
|
-
Get started
|
|
586
|
-
</button>
|
|
587
|
-
</footer>
|
|
588
|
-
</div>
|
|
589
|
-
</dialog>
|
|
590
|
-
|
|
591
|
-
<!-- Help & About. Reuses the .orbit-dialog shell + welcome-dialog-*
|
|
592
|
-
styling so it inherits the modal chrome; opened from the topbar
|
|
593
|
-
Help button and wired through modal.js (Escape/backdrop close). -->
|
|
594
|
-
<dialog
|
|
595
|
-
id="helpDialog"
|
|
596
|
-
class="orbit-dialog"
|
|
597
|
-
aria-labelledby="helpDialogTitle"
|
|
598
|
-
>
|
|
599
|
-
<div class="welcome-dialog-inner help-dialog-inner">
|
|
600
|
-
<div class="welcome-dialog-head">
|
|
601
|
-
<img
|
|
602
|
-
class="welcome-dialog-logo"
|
|
603
|
-
src="./orbits-logo.png"
|
|
604
|
-
alt=""
|
|
605
|
-
aria-hidden="true"
|
|
606
|
-
/>
|
|
607
|
-
<span
|
|
608
|
-
class="welcome-dialog-edition-pill"
|
|
609
|
-
id="helpDialogVersion"
|
|
610
|
-
>Orbit</span
|
|
611
|
-
>
|
|
612
|
-
<button
|
|
613
|
-
type="button"
|
|
614
|
-
class="help-dialog-close"
|
|
615
|
-
aria-label="Close"
|
|
616
|
-
data-modal-close
|
|
617
|
-
>
|
|
618
|
-
<svg
|
|
619
|
-
class="ui-icon ui-icon-x"
|
|
620
|
-
viewBox="0 0 24 24"
|
|
621
|
-
aria-hidden="true"
|
|
622
|
-
focusable="false"
|
|
623
|
-
>
|
|
624
|
-
<path d="M6 6l12 12M18 6 6 18" />
|
|
625
|
-
</svg>
|
|
626
|
-
</button>
|
|
627
|
-
</div>
|
|
628
|
-
<div class="welcome-dialog-body">
|
|
629
|
-
<h2 id="helpDialogTitle" class="welcome-dialog-title">
|
|
630
|
-
Starscape Orbit
|
|
631
|
-
</h2>
|
|
632
|
-
<p class="welcome-dialog-lede">
|
|
633
|
-
A developer-first kanban board built for teams working
|
|
634
|
-
alongside AI agents. Track the motion of your project —
|
|
635
|
-
and hand work to your coding agent through the Orbit MCP
|
|
636
|
-
tools.
|
|
637
|
-
</p>
|
|
638
|
-
|
|
639
|
-
<section
|
|
640
|
-
class="help-dialog-section"
|
|
641
|
-
aria-label="Getting started"
|
|
642
|
-
>
|
|
643
|
-
<h3 class="help-dialog-heading">Getting started</h3>
|
|
644
|
-
<ol class="help-dialog-steps">
|
|
645
|
-
<li class="help-dialog-step">
|
|
646
|
-
<span class="help-dialog-step__index">01</span>
|
|
647
|
-
<div>
|
|
648
|
-
<h4>Create a board</h4>
|
|
649
|
-
<p>
|
|
650
|
-
Use the <strong>Board</strong> menu →
|
|
651
|
-
New board. Optionally point it at a
|
|
652
|
-
coding project folder so Orbit can drop
|
|
653
|
-
<code>SKILL-ORBIT.md</code> and
|
|
654
|
-
<code>AGENTS.md</code> for your agent.
|
|
655
|
-
</p>
|
|
656
|
-
</div>
|
|
657
|
-
</li>
|
|
658
|
-
<li class="help-dialog-step">
|
|
659
|
-
<span class="help-dialog-step__index">02</span>
|
|
660
|
-
<div>
|
|
661
|
-
<h4>Add cards & the AI Ready lane</h4>
|
|
662
|
-
<p>
|
|
663
|
-
Capture work with
|
|
664
|
-
<strong>New Card</strong>. Move cards
|
|
665
|
-
into <strong>AI Ready</strong> to stage
|
|
666
|
-
them for an agent to claim.
|
|
667
|
-
</p>
|
|
668
|
-
</div>
|
|
669
|
-
</li>
|
|
670
|
-
<li class="help-dialog-step">
|
|
671
|
-
<span class="help-dialog-step__index">03</span>
|
|
672
|
-
<div>
|
|
673
|
-
<h4>Connect your coding agent</h4>
|
|
674
|
-
<p>
|
|
675
|
-
Add the Orbit MCP server from
|
|
676
|
-
<strong>Settings</strong>, then ask your
|
|
677
|
-
agent to read <code>AGENTS.md</code> and
|
|
678
|
-
claim the next ticket.
|
|
679
|
-
</p>
|
|
680
|
-
</div>
|
|
681
|
-
</li>
|
|
682
|
-
</ol>
|
|
683
|
-
</section>
|
|
684
|
-
|
|
685
|
-
<section
|
|
686
|
-
class="help-dialog-section"
|
|
687
|
-
aria-label="Links"
|
|
688
|
-
>
|
|
689
|
-
<h3 class="help-dialog-heading">Links</h3>
|
|
690
|
-
<ul class="help-dialog-links">
|
|
691
|
-
<li>
|
|
692
|
-
<a
|
|
693
|
-
class="welcome-dialog-link"
|
|
694
|
-
href="https://orbit.starscape.app"
|
|
695
|
-
target="_blank"
|
|
696
|
-
rel="noopener"
|
|
697
|
-
>Documentation</a
|
|
698
|
-
>
|
|
699
|
-
</li>
|
|
700
|
-
<li>
|
|
701
|
-
<a
|
|
702
|
-
class="welcome-dialog-link"
|
|
703
|
-
href="https://github.com/brucestarlove/ss-orbit/blob/master/docs/MCP_SETUP.md"
|
|
704
|
-
target="_blank"
|
|
705
|
-
rel="noopener"
|
|
706
|
-
>MCP setup</a
|
|
707
|
-
>
|
|
708
|
-
</li>
|
|
709
|
-
<li>
|
|
710
|
-
<a
|
|
711
|
-
class="welcome-dialog-link"
|
|
712
|
-
href="https://orbit.starscape.app/support"
|
|
713
|
-
target="_blank"
|
|
714
|
-
rel="noopener"
|
|
715
|
-
>Support / Tip</a
|
|
716
|
-
>
|
|
717
|
-
</li>
|
|
718
|
-
</ul>
|
|
719
|
-
</section>
|
|
720
|
-
</div>
|
|
721
|
-
<footer class="welcome-dialog-footer">
|
|
722
|
-
<button
|
|
723
|
-
type="button"
|
|
724
|
-
class="welcome-dialog-cta"
|
|
725
|
-
data-modal-close
|
|
726
|
-
>
|
|
727
|
-
Got it
|
|
728
|
-
</button>
|
|
729
|
-
</footer>
|
|
730
|
-
</div>
|
|
731
|
-
</dialog>
|
|
732
|
-
|
|
733
|
-
<script src="/js/main.js" type="module"></script>
|
|
734
|
-
<!-- Fade out the boot splash once the DOM is ready. The /js/main.js
|
|
735
|
-
module runs before DOMContentLoaded, so theme/motion + wiring are
|
|
736
|
-
already applied by the time this fires. -->
|
|
737
|
-
<script>
|
|
738
|
-
(function () {
|
|
739
|
-
function hideSplash() {
|
|
740
|
-
var splash = document.getElementById("loader");
|
|
741
|
-
if (!splash) return;
|
|
742
|
-
// Keep the splash up for a minimum of 786ms (measured from
|
|
743
|
-
// navigation start) so a fast load doesn't flash it in and out.
|
|
744
|
-
var wait = Math.max(0, 786 - performance.now());
|
|
745
|
-
setTimeout(function () {
|
|
746
|
-
splash.classList.add("is-hiding");
|
|
747
|
-
splash.addEventListener(
|
|
748
|
-
"transitionend",
|
|
749
|
-
function () {
|
|
750
|
-
splash.remove();
|
|
751
|
-
},
|
|
752
|
-
{ once: true }
|
|
753
|
-
);
|
|
754
|
-
setTimeout(function () {
|
|
755
|
-
splash.remove();
|
|
756
|
-
}, 600);
|
|
757
|
-
}, wait);
|
|
758
|
-
}
|
|
759
|
-
if (document.readyState === "loading") {
|
|
760
|
-
document.addEventListener("DOMContentLoaded", hideSplash, {
|
|
761
|
-
once: true
|
|
762
|
-
});
|
|
763
|
-
} else {
|
|
764
|
-
hideSplash();
|
|
765
|
-
}
|
|
766
|
-
})();
|
|
767
|
-
</script>
|
|
768
|
-
</body>
|
|
769
|
-
</html>
|