@starlove/orbit 1.3.5 → 1.4.1

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.
Files changed (129) hide show
  1. package/Dockerfile +2 -1
  2. package/README.md +10 -9
  3. package/SKILL-ORBIT.md +41 -17
  4. package/dist/full/fonts/Chakra_Petch/ChakraPetch-Bold.ttf +0 -0
  5. package/dist/full/fonts/Chakra_Petch/ChakraPetch-BoldItalic.ttf +0 -0
  6. package/dist/full/fonts/Chakra_Petch/ChakraPetch-Italic.ttf +0 -0
  7. package/dist/full/fonts/Chakra_Petch/ChakraPetch-Light.ttf +0 -0
  8. package/dist/full/fonts/Chakra_Petch/ChakraPetch-LightItalic.ttf +0 -0
  9. package/dist/full/fonts/Chakra_Petch/ChakraPetch-Medium.ttf +0 -0
  10. package/dist/full/fonts/Chakra_Petch/ChakraPetch-MediumItalic.ttf +0 -0
  11. package/dist/full/fonts/Chakra_Petch/ChakraPetch-Regular.ttf +0 -0
  12. package/dist/full/fonts/Chakra_Petch/ChakraPetch-SemiBold.ttf +0 -0
  13. package/dist/full/fonts/Chakra_Petch/ChakraPetch-SemiBoldItalic.ttf +0 -0
  14. package/dist/full/fonts/Chakra_Petch/OFL.txt +93 -0
  15. package/dist/full/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf +0 -0
  16. package/dist/full/fonts/Inter/Inter-VariableFont_opsz,wght.ttf +0 -0
  17. package/dist/full/fonts/Inter/OFL.txt +93 -0
  18. package/dist/full/fonts/Inter/README.txt +118 -0
  19. package/dist/full/fonts/JetBrains_Mono/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
  20. package/dist/full/fonts/JetBrains_Mono/JetBrainsMono-VariableFont_wght.ttf +0 -0
  21. package/dist/full/fonts/JetBrains_Mono/OFL.txt +93 -0
  22. package/dist/full/fonts/JetBrains_Mono/README.txt +79 -0
  23. package/dist/full/fonts/OpenRing-Regular.ttf +0 -0
  24. package/dist/full/fonts/Open_Sans/OFL.txt +93 -0
  25. package/dist/full/fonts/Open_Sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  26. package/dist/full/fonts/Open_Sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  27. package/dist/full/fonts/Open_Sans/README.txt +100 -0
  28. package/dist/full/fonts/Orbitron/OFL.txt +93 -0
  29. package/dist/full/fonts/Orbitron/Orbitron-VariableFont_wght.ttf +0 -0
  30. package/dist/full/fonts/Orbitron/README.txt +68 -0
  31. package/dist/full/fonts/Rajdhani/OFL.txt +93 -0
  32. package/dist/full/fonts/Rajdhani/Rajdhani-Bold.ttf +0 -0
  33. package/dist/full/fonts/Rajdhani/Rajdhani-Light.ttf +0 -0
  34. package/dist/full/fonts/Rajdhani/Rajdhani-Medium.ttf +0 -0
  35. package/dist/full/fonts/Rajdhani/Rajdhani-Regular.ttf +0 -0
  36. package/dist/full/fonts/Rajdhani/Rajdhani-SemiBold.ttf +0 -0
  37. package/dist/full/fonts/runescape-uf.ttf +0 -0
  38. package/dist/full/index.html +135 -25
  39. package/dist/full/js/app.4e6fbe20.js +952 -0
  40. package/dist/full/js/app.4e6fbe20.js.map +7 -0
  41. package/dist/full/styles.4e60d824.css +1 -0
  42. package/dist/full/version.json +2 -2
  43. package/docs/AGENT_PROTOCOL.md +20 -13
  44. package/docs/ORBIT_DISPATCH.md +73 -38
  45. package/docs/UPDATING.md +114 -0
  46. package/package.json +5 -7
  47. package/public/fonts/Chakra_Petch/ChakraPetch-Bold.ttf +0 -0
  48. package/public/fonts/Chakra_Petch/ChakraPetch-BoldItalic.ttf +0 -0
  49. package/public/fonts/Chakra_Petch/ChakraPetch-Italic.ttf +0 -0
  50. package/public/fonts/Chakra_Petch/ChakraPetch-Light.ttf +0 -0
  51. package/public/fonts/Chakra_Petch/ChakraPetch-LightItalic.ttf +0 -0
  52. package/public/fonts/Chakra_Petch/ChakraPetch-Medium.ttf +0 -0
  53. package/public/fonts/Chakra_Petch/ChakraPetch-MediumItalic.ttf +0 -0
  54. package/public/fonts/Chakra_Petch/ChakraPetch-Regular.ttf +0 -0
  55. package/public/fonts/Chakra_Petch/ChakraPetch-SemiBold.ttf +0 -0
  56. package/public/fonts/Chakra_Petch/ChakraPetch-SemiBoldItalic.ttf +0 -0
  57. package/public/fonts/Chakra_Petch/OFL.txt +93 -0
  58. package/public/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf +0 -0
  59. package/public/fonts/Inter/Inter-VariableFont_opsz,wght.ttf +0 -0
  60. package/public/fonts/Inter/OFL.txt +93 -0
  61. package/public/fonts/Inter/README.txt +118 -0
  62. package/public/fonts/JetBrains_Mono/JetBrainsMono-Italic-VariableFont_wght.ttf +0 -0
  63. package/public/fonts/JetBrains_Mono/JetBrainsMono-VariableFont_wght.ttf +0 -0
  64. package/public/fonts/JetBrains_Mono/OFL.txt +93 -0
  65. package/public/fonts/JetBrains_Mono/README.txt +79 -0
  66. package/public/fonts/OpenRing-Regular.ttf +0 -0
  67. package/public/fonts/Open_Sans/OFL.txt +93 -0
  68. package/public/fonts/Open_Sans/OpenSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  69. package/public/fonts/Open_Sans/OpenSans-VariableFont_wdth,wght.ttf +0 -0
  70. package/public/fonts/Open_Sans/README.txt +100 -0
  71. package/public/fonts/Orbitron/OFL.txt +93 -0
  72. package/public/fonts/Orbitron/Orbitron-VariableFont_wght.ttf +0 -0
  73. package/public/fonts/Orbitron/README.txt +68 -0
  74. package/public/fonts/Rajdhani/OFL.txt +93 -0
  75. package/public/fonts/Rajdhani/Rajdhani-Bold.ttf +0 -0
  76. package/public/fonts/Rajdhani/Rajdhani-Light.ttf +0 -0
  77. package/public/fonts/Rajdhani/Rajdhani-Medium.ttf +0 -0
  78. package/public/fonts/Rajdhani/Rajdhani-Regular.ttf +0 -0
  79. package/public/fonts/Rajdhani/Rajdhani-SemiBold.ttf +0 -0
  80. package/public/fonts/runescape-uf.ttf +0 -0
  81. package/public/index.html +133 -23
  82. package/public/js/artifact-drawer.js +79 -0
  83. package/public/js/board-export.js +161 -0
  84. package/public/js/board-menu.js +219 -17
  85. package/public/js/card-actions.js +1 -1
  86. package/public/js/create-card.js +60 -23
  87. package/public/js/drawer.js +164 -4
  88. package/public/js/font-preference.js +230 -0
  89. package/public/js/format.js +0 -10
  90. package/public/js/icons.js +16 -0
  91. package/public/js/local-backend.js +31 -4
  92. package/public/js/main.js +7 -1
  93. package/public/js/modal.js +3 -1
  94. package/public/js/panel.js +58 -0
  95. package/public/js/settings-tabs.js +1 -1
  96. package/public/js/settings.js +606 -275
  97. package/public/js/sse.js +3 -0
  98. package/public/js/state.js +1 -1
  99. package/public/js/text-editing.js +128 -0
  100. package/public/js/ticket-detail.js +377 -148
  101. package/public/js/ticket-typeahead.js +49 -0
  102. package/public/js/toast.js +19 -4
  103. package/public/js/topbar-notes.js +3 -3
  104. package/public/js/typeahead.js +206 -0
  105. package/public/js/update-check.js +58 -0
  106. package/public/styles.css +5447 -3572
  107. package/src/cli/orbit.js +9 -5
  108. package/src/core/agent.js +12 -4
  109. package/src/core/agents-md.js +3 -3
  110. package/src/core/artifacts.js +149 -0
  111. package/src/core/board.js +3 -2
  112. package/src/core/boards.js +0 -1
  113. package/src/core/css-bundle.js +1 -0
  114. package/src/core/db.js +6 -0
  115. package/src/core/dispatch.js +344 -34
  116. package/src/core/http.js +9 -2
  117. package/src/core/paths.js +26 -2
  118. package/src/core/router.js +33 -0
  119. package/src/core/search.js +3 -2
  120. package/src/core/snapshots.js +10 -5
  121. package/src/core/tickets.js +34 -3
  122. package/src/core/util.js +3 -2
  123. package/src/core/version-check.js +154 -0
  124. package/src/mcp/orbit-client.js +18 -2
  125. package/src/mcp-server.js +19 -14
  126. package/src/server.js +28 -3
  127. package/dist/full/js/app.4ae80764.js +0 -742
  128. package/dist/full/js/app.4ae80764.js.map +0 -7
  129. package/dist/full/styles.b9e0c130.css +0 -1
@@ -15,11 +15,14 @@
15
15
  sizes="180x180"
16
16
  href="./apple-touch-icon.png"
17
17
  />
18
- <!-- Apply the stored theme + motion preference before first paint, so
19
- the app underneath the splash paints in the right theme (no flash)
20
- and the splash respects an explicit reduce-motion choice. Mirrors
21
- theme-preference.js (mab_theme) and motion-preference.js
22
- (mab_reduce_motion → data-motion); main.js reconciles on load. -->
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. -->
23
26
  <script>
24
27
  try {
25
28
  var t = localStorage.getItem("mab_theme");
@@ -30,10 +33,61 @@
30
33
  document.documentElement.setAttribute("data-motion", "reduce");
31
34
  else if (rm === "false")
32
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: "orbitron",
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);
33
87
  } catch (e) {}
34
88
  </script>
35
89
  <link rel="preload" as="image" href="./orbits-logo.png" />
36
- <link rel="stylesheet" href="styles.b9e0c130.css" />
90
+ <link rel="stylesheet" href="styles.4e60d824.css" />
37
91
  <!-- Boot splash — the canonical ss-ui loading screen (see the package's
38
92
  components/loader.css). Inline critical CSS so it paints before
39
93
  /js/main.js loads. The logo grows in then breathes; no spinner.
@@ -162,11 +216,13 @@
162
216
  id="brandFocusPopover"
163
217
  class="brand-focus-popover"
164
218
  role="dialog"
165
- aria-label="Board notes"
219
+ aria-label="Notes For You"
166
220
  hidden
167
221
  >
168
- <div class="brand-focus-popover__eyebrow">Board notes</div>
169
- <div id="brandFocusNotes" class="brand-focus-notes-body">No board notes yet</div>
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>
170
226
  </div>
171
227
  </div>
172
228
  <div class="controls">
@@ -193,11 +249,12 @@
193
249
  <button
194
250
  id="newTicketBtn"
195
251
  type="button"
196
- class="topbar-btn btn-sun topbar-ctl-shrink"
252
+ class="topbar-btn topbar-ctl-shrink"
197
253
  data-variant="cta"
254
+ aria-label="New Card"
198
255
  >
199
- <span class="btn-plus" aria-hidden="true">+</span>
200
- <span class="btn-sun-label">New Card</span>
256
+ <span class="btn-plus" aria-hidden="true"></span>
257
+ <span class="topbar-btn-label">New Card</span>
201
258
  </button>
202
259
  <div class="topbar-menu">
203
260
  <button
@@ -219,18 +276,18 @@
219
276
  >
220
277
  <rect
221
278
  x="4"
222
- y="4"
279
+ y="2"
223
280
  width="6"
224
- height="16"
281
+ height="20"
225
282
  rx="0.75"
226
283
  stroke="currentColor"
227
284
  stroke-width="2"
228
285
  />
229
286
  <rect
230
287
  x="14"
231
- y="4"
288
+ y="2"
232
289
  width="6"
233
- height="16"
290
+ height="20"
234
291
  rx="0.75"
235
292
  stroke="currentColor"
236
293
  stroke-width="2"
@@ -320,6 +377,7 @@
320
377
  <circle cx="12" cy="12" r="3" />
321
378
  </svg>
322
379
  <span class="topbar-btn-label">Settings</span>
380
+ <span class="topbar-update-dot" title="Update available" hidden></span>
323
381
  </button>
324
382
  </div>
325
383
  </header>
@@ -359,12 +417,13 @@
359
417
  id="drawerTitleBlock"
360
418
  class="drawer-title-block"
361
419
  ></div>
362
- <nav
363
- id="drawerTabs"
364
- class="drawer-tabs"
365
- role="tablist"
366
- hidden
367
- ></nav>
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>
368
427
  <button
369
428
  type="button"
370
429
  id="drawerArchiveBtn"
@@ -399,12 +458,55 @@
399
458
  class="drawer-close"
400
459
  aria-label="Close panel"
401
460
  >
402
- ×
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>
403
469
  </button>
404
470
  </header>
405
471
  <div id="drawerInner" class="drawer-inner"></div>
406
472
  </aside>
407
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
+
408
510
  <template id="commentFormTemplate">
409
511
  <form class="comment-form">
410
512
  <textarea
@@ -477,6 +579,7 @@
477
579
  <button
478
580
  type="button"
479
581
  class="welcome-dialog-cta"
582
+ data-modal-initial-focus
480
583
  data-modal-close
481
584
  >
482
585
  Get started
@@ -512,7 +615,14 @@
512
615
  aria-label="Close"
513
616
  data-modal-close
514
617
  >
515
- ×
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>
516
626
  </button>
517
627
  </div>
518
628
  <div class="welcome-dialog-body">
@@ -620,7 +730,7 @@
620
730
  </div>
621
731
  </dialog>
622
732
 
623
- <script src="js/app.4ae80764.js" type="module"></script>
733
+ <script src="js/app.4e6fbe20.js" type="module"></script>
624
734
  <!-- Fade out the boot splash once the DOM is ready. The /js/main.js
625
735
  module runs before DOMContentLoaded, so theme/motion + wiring are
626
736
  already applied by the time this fires. -->