create-pmos 0.61.0 → 0.61.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-pmos",
3
- "version": "0.61.0",
3
+ "version": "0.61.1",
4
4
  "description": "Scaffold the PMOS portable kit — run the PMOS product-management workflow (initiative → lane-fit spec → contract → build → three gates, with work-type lanes for features, research, maintenance, incidents, and content) entirely inside your own repo, with all state as git-versioned files. Includes `workflow-sweep`, which audits the state every board derives from and separates real defects from work you simply have not done. `create-pmos workspace` also installs + launches the local Terminal Workspace GUI. No database, no network, no telemetry.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -1,3 +1,3 @@
1
- kernel-source: pmos@33595f8
1
+ kernel-source: pmos@05e2d82
2
2
  assembled: 2026-10-06
3
3
  mode: vendor
@@ -2,7 +2,7 @@
2
2
  type: Reference
3
3
  title: "Eval calibration log"
4
4
  description: "Append-only record of every PM override of an evaluator verdict."
5
- generated: {by: process:create-pmos, at: "2026-10-06T16:25:40Z"}
5
+ generated: {by: process:create-pmos, at: "2026-10-06T16:49:07Z"}
6
6
  status: stable
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
  type: Reference
3
3
  title: "Health budgets"
4
4
  description: "Closed registry of health-budget anchors (D59), edited only by the PM."
5
- generated: {by: process:create-pmos, at: "2026-10-06T16:25:40Z"}
5
+ generated: {by: process:create-pmos, at: "2026-10-06T16:49:07Z"}
6
6
  status: stable
7
7
  ---
8
8
 
@@ -2,7 +2,7 @@
2
2
  type: Reference
3
3
  title: "Discoveries and friction log"
4
4
  description: "Append-only record of what runs discovered and where the process rubbed."
5
- generated: {by: process:create-pmos, at: "2026-10-06T16:25:40Z"}
5
+ generated: {by: process:create-pmos, at: "2026-10-06T16:49:07Z"}
6
6
  status: stable
7
7
  ---
8
8
 
@@ -23,7 +23,10 @@
23
23
  // specimen did not change.
24
24
  const SPECIMEN_A = Object.freeze({ today: 17, initiatives: 24, board: 33, reports: 14 });
25
25
  const BAR_DOCS = 1;
26
- const EXPECT = Object.freeze({ today: 17 + BAR_DOCS, initiatives: 24 + BAR_DOCS, board: 33 + BAR_DOCS, reports: 15 + BAR_DOCS });
26
+ // Agenda opens on the month (the PM's Agenda mockup v5, 2026-10-06): the month adds its own controls to Today's budget,
27
+ // at most six week rows of a week button and seven days, the two month arrows and the five lenses.
28
+ const AGENDA_MONTH = 6 * 8 + 2 + 5;
29
+ const EXPECT = Object.freeze({ today: 17 + BAR_DOCS + AGENDA_MONTH, initiatives: 24 + BAR_DOCS, board: 33 + BAR_DOCS, reports: 15 + BAR_DOCS });
27
30
 
28
31
  /* ── shoot.js audit(), copied verbatim (scratchpad/specimens2/shoot.js, 2026-10-05) ─────────────────────────────── */
29
32
  // runs in the page
@@ -149,4 +152,4 @@ function installCounter(page) {
149
152
  return page.addInitScript({ content: 'window.__countIn = ' + countIn.toString() + ';' });
150
153
  }
151
154
 
152
- module.exports = { EXPECT, SPECIMEN_A, audit, countIn, stableCount, installCounter };
155
+ module.exports = { AGENDA_MONTH, EXPECT, SPECIMEN_A, audit, countIn, stableCount, installCounter };
@@ -30,11 +30,11 @@ An agent job can stop with its session still open, for example when the agent as
30
30
 
31
31
  Each job session is named "Job ·" and the first words of the job, so the session list stays short.
32
32
 
33
- **Agent results**, at the top of the left column, counts the jobs and lists each finished one with its draft summary or the reason it failed. Your goals for today come under it, above the calendar. The other things that wait for you, such as outcome checks, report drafts and sessions, are in **Also waiting for you** at the end of the left column. When the day is folded, they show under it.
33
+ The Agenda month is at the top of the left column. **Agent results** comes under it, counts the jobs and lists each finished one with its draft summary or the reason it failed. Your goals for today come under Agent results. The day is open when you go to Agenda, also before you press **Prepare my day**. The other things that wait for you, such as outcome checks, report drafts and sessions, are in **Also waiting for you** at the end of the left column. When the day is folded, they show under it.
34
34
 
35
35
  ### The Agenda month
36
36
 
37
- The menu calls this page **Agenda**. At the top of the left column is the month, with today marked. Each week starts with its number, for example W41.
37
+ The menu calls this page **Agenda**. At the top of the left column is the month, with today marked. When a day shows no meetings yet, press **Prepare my day** (or **Prepare again**): the morning-brief session reads your calendar and fills the month. Each week starts with its number, for example W41.
38
38
 
39
39
  - Press a day to see its agenda under the month. Three tiles open the agenda: the time in meetings, the meeting that matters most, and your prep.
40
40
  - Press a week number to see the agenda of that week, day by day.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmos-workspace",
3
- "version": "0.61.0",
3
+ "version": "0.61.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pmos-workspace",
3
- "version": "0.61.0",
3
+ "version": "0.61.1",
4
4
  "private": true,
5
5
  "description": "PMOS Terminal Workspace — local companion hosting real PTYs beside the library and gates (D62)",
6
6
  "license": "MIT",
@@ -42,7 +42,8 @@ const store = {
42
42
  get(k) { try { return localStorage.getItem(k); } catch { return null; } },
43
43
  set(k, v) { try { localStorage.setItem(k, v); } catch { /* private window: the default applies */ } },
44
44
  };
45
- const OPEN_KEY = 'pmos.today.day.open';
45
+ // A new key: a fold stored by the old Today page must not hide the Agenda month.
46
+ const OPEN_KEY = 'pmos.agenda.day.open';
46
47
  const SEEN_KEY = 'pmos.today.day.seen';
47
48
  let seen = new Set();
48
49
  try { seen = new Set(JSON.parse(store.get(SEEN_KEY) || '[]')); } catch { seen = new Set(); }
@@ -836,7 +837,7 @@ export function daySection({ ws, setState, openIni, owed, here, all } = {}) {
836
837
  ensure(ws);
837
838
  const c = cache.get(ws) || {};
838
839
  const m = model(c.data, { here: here || null, all: !!all });
839
- const open = forced !== null ? forced : ui.open !== null ? ui.open : !!m.run;
840
+ const open = forced !== null ? forced : ui.open !== null ? ui.open : true;
840
841
  if (!open) {
841
842
  return el('section', { class: 'td-day', 'data-today': 'day', 'data-open': 'false', 'aria-label': D.title },
842
843
  button({ label: D.toggle(m.needs), variant: 'ghost', iconEnd: 'chevron-right', attrs: { 'data-day': 'toggle', 'aria-expanded': 'false' }, onClick: () => fold(true) }));
@@ -863,7 +864,7 @@ export function daySection({ ws, setState, openIni, owed, here, all } = {}) {
863
864
  c.error ? el('p', { class: 'td-day__run td-day__run--failed', role: 'status', 'data-day': 'error' }, D.refused(c.error)) : null,
864
865
  m.d && m.d.legacy ? note(D.oldServer) : null,
865
866
  el('div', { class: 'td-day__cols' },
866
- el('div', { class: 'td-day__left' }, summaryPanel(ctx), goalsPanel(ctx), agenda(ctx), jobsPanel(ctx), mentionsPanel(ctx), waitingPanel(owed)),
867
+ el('div', { class: 'td-day__left' }, agenda(ctx), summaryPanel(ctx), goalsPanel(ctx), jobsPanel(ctx), mentionsPanel(ctx), waitingPanel(owed)),
867
868
  detail(ctx)));
868
869
  }
869
870