create-pmos 0.158.0 → 0.160.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.
Files changed (44) hide show
  1. package/package.json +1 -1
  2. package/payload/KIT-VERSION +1 -1
  3. package/payload/planning/evals/eval-calibration.md +1 -1
  4. package/payload/planning/okrs/health-budgets.md +1 -1
  5. package/payload/state/discoveries.md +1 -1
  6. package/workspace/c3-initiatives-test.js +8 -2
  7. package/workspace/guide/ask-the-agent.md +1 -1
  8. package/workspace/guide/briefing.md +2 -2
  9. package/workspace/guide/calendar-popup.md +1 -1
  10. package/workspace/guide/console-calendar.md +2 -2
  11. package/workspace/guide/index.md +1 -1
  12. package/workspace/guide/initiative-boards.md +4 -4
  13. package/workspace/guide/layout.md +5 -3
  14. package/workspace/guide/notes.md +1 -1
  15. package/workspace/guide/settings.md +2 -2
  16. package/workspace/lib/initiative-rows.js +33 -3
  17. package/workspace/lib/routes-boards.js +8 -0
  18. package/workspace/package-lock.json +2 -2
  19. package/workspace/package.json +1 -1
  20. package/workspace/public/c3.html +11 -2
  21. package/workspace/public/pm/c3-demo-boards.js +6 -0
  22. package/workspace/public/pm/c3-dock.js +7 -7
  23. package/workspace/public/pm/c3-ib-docs.js +9 -9
  24. package/workspace/public/pm/c3-ib-initiatives.js +7 -7
  25. package/workspace/public/pm/c3-ib-items.js +4 -4
  26. package/workspace/public/pm/c3-ib-releases.js +4 -4
  27. package/workspace/public/pm/c3-ib-sprints.js +5 -5
  28. package/workspace/public/pm/c3-ib-triage.js +6 -6
  29. package/workspace/public/pm/c3-ii-tabs.js +6 -6
  30. package/workspace/public/pm/c3-ini-records.js +11 -11
  31. package/workspace/public/pm/c3-ini-timeline.js +3 -3
  32. package/workspace/public/pm/c3-ini-ui.js +7 -0
  33. package/workspace/public/pm/c3-ini-work.js +2 -2
  34. package/workspace/public/pm/c3-initiatives.js +42 -23
  35. package/workspace/public/pm/c3-plan.js +1 -1
  36. package/workspace/public/pm/c3-settings.js +2 -2
  37. package/workspace/public/pm/c3-shell.js +3 -3
  38. package/workspace/public/pm/c3-tickets.js +1 -1
  39. package/workspace/public/pm/console3.css +3 -0
  40. package/workspace/public/pm/pm-work-view.js +1 -1
  41. package/workspace/public/pm/sessions-panel.js +2 -2
  42. package/workspace/public/pm/shell-recording.js +1 -1
  43. package/workspace/public/pm/welcome.js +2 -2
  44. package/workspace/server.js +4 -2
@@ -130,10 +130,10 @@ function draw(host, st) {
130
130
  : none('None running. A result appears on its card.')));
131
131
  /* Started by me */
132
132
  const mine = g.startedByMe || [];
133
- const add = el('a', { class: 'chip2 lk c3t-new', href: '/', title: 'Start a session in the main app. A session starts over the terminal connection; this page has no route for it.' }, ic('plus', 'sm'), 'New');
133
+ const add = el('a', { class: 'chip2 lk c3t-new', href: '/classic.html', title: 'Start a session in the classic app. A session starts over the terminal connection; this page has no route for it.' }, ic('plus', 'sm'), 'New');
134
134
  root.append(section('term', 'Started by me', mine.length, add, mine.length
135
135
  ? el('ul', { class: 'list', 'data-c3t': 'mine' }, mine.map((s) => { const c = cards[s.id]; return row(st, s, c, { sub: liveWord(s, c) + ' · ' + ago(s.startedAt) + ' · main tree', body: [plain(s, c) ? null : cardHost(st, s, c || { state: 'working', title: 'Working', nextMoves: [], claims: [], steps: [] }), blankPanel(st, s, c)].filter(Boolean) }); }))
136
- : none('None. Start one in the main app.')));
136
+ : none('None. Start one in the classic app (/classic.html).')));
137
137
  /* Past */
138
138
  const past = g.past || [];
139
139
  root.append(section('clock', 'Past (7 days)', past.length, null, past.length
@@ -147,7 +147,7 @@ const RGL = { highlighter: () => c3ic('flag', 'sm'), pause: () => glyph('M8 5v14
147
147
  * elsewhere the main app, where the full note is. */
148
148
  const openNote = (id) => {
149
149
  if (document.querySelector('[data-c3-tab="cal"]')) { window.dispatchEvent(new CustomEvent('c3-open-note', { detail: { id: id || dock.activeId() || null } })); return; }
150
- try { window.open('/', '_blank', 'noopener'); } catch { /* a blocked pop-up */ }
150
+ try { window.open('/classic.html', '_blank', 'noopener'); } catch { /* a blocked pop-up */ }
151
151
  };
152
152
 
153
153
  /* The engine and language the live transcript uses, on the chip (notes-recording-reliability): a meeting transcribed in the wrong
@@ -138,7 +138,7 @@ const importNow = () => {
138
138
  const notNow = () => run('dismiss', async () => {
139
139
  const r = await pmPost('/api/onboarding/dismiss', { ws: S.ws });
140
140
  if (!r || !r.ok) { fail(r, 'Not now'); return; }
141
- location.href = '/c3.html?ws=' + encodeURIComponent(S.ws);
141
+ location.href = '/?ws=' + encodeURIComponent(S.ws);
142
142
  });
143
143
  const undo = () => run('undo', async () => {
144
144
  const r = await pmPost('/api/onboarding/undo', { ws: S.ws, import_id: S.importId });
@@ -284,7 +284,7 @@ function viewBriefing() {
284
284
  + (items ? numbered(items) : '<div class="fold" data-testid="no-briefing">Your portfolio is in. Open PMOS to see it.</div>')
285
285
  + (tools.length ? sub('Your tools', 'tools', '', tools.length) + `<ul class="list">${tools.join('')}</ul>` : ''),
286
286
  foot(ctl({ variant: 'ghost', html: S.busy === 'undo' ? spin('Undoing') : 'Undo this import', attrs: { 'data-testid': 'undo-link', disabled: !!S.busy, ...busyAttrs('undo') } }),
287
- ctl({ variant: 'primary', html: 'Open PMOS', href: '/c3.html?ws=' + encodeURIComponent(S.ws), attrs: { class: 'wl-primary', 'data-testid': 'open-pmos' } }))];
287
+ ctl({ variant: 'primary', html: 'Open PMOS', href: '/?ws=' + encodeURIComponent(S.ws), attrs: { class: 'wl-primary', 'data-testid': 'open-pmos' } }))];
288
288
  }
289
289
 
290
290
  const VIEWS = { welcome: viewWelcome, look: viewLook, portfolio: viewPortfolio, questions: viewQuestions, briefing: viewBriefing, sources: viewSources };
@@ -5637,12 +5637,14 @@ async function handleRequest(req, res) {
5637
5637
  const built = BUILD_RE.exec(url.pathname);
5638
5638
  const p = built ? built[1] : url.pathname;
5639
5639
 
5640
- if (p === '/' || p === '/index.html' || p === '/c3.html' || p === '/welcome' || p === '/welcome.html') {
5640
+ // console3 (public/c3.html) is the default page: '/' and '/index.html' serve it, and '/c3.html' stays an alias so old links
5641
+ // keep working. The older shell (public/index.html) moved to '/classic.html' (c3-default-page), reachable and easy to return to.
5642
+ if (p === '/' || p === '/index.html' || p === '/c3.html' || p === '/classic' || p === '/classic.html' || p === '/welcome' || p === '/welcome.html') {
5641
5643
  // pm-os-absorb Run 2 (R25, X11): the per-launch nonce goes into the base meta line, nowhere else. no-store, so a
5642
5644
  // restarted server never answers a press from a page that holds the previous launch's value. The page code is
5643
5645
  // referenced under this launch's build prefix.
5644
5646
  const n = pmGuard.launchNonce();
5645
- return fs.readFile(path.join(PUB, p === '/c3.html' ? 'c3.html' : (p === '/welcome' || p === '/welcome.html') ? 'welcome.html' : 'index.html'), 'utf8', (err, html) => {
5647
+ return fs.readFile(path.join(PUB, (p === '/classic' || p === '/classic.html') ? 'index.html' : (p === '/welcome' || p === '/welcome.html') ? 'welcome.html' : 'c3.html'), 'utf8', (err, html) => {
5646
5648
  if (err) { res.writeHead(404); res.end('not found'); return; }
5647
5649
  let out = withBuild(html);
5648
5650
  if (n) out = out.replace('<meta name="' + pmGuard.NONCE_META + '" content="" />', '<meta name="' + pmGuard.NONCE_META + '" content="' + n + '" />');