create-pmos 0.154.0 → 0.156.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/README.md +18 -1
- package/bin/cockpit-install.js +10 -5
- package/install.ps1 +171 -0
- package/install.sh +184 -0
- package/package.json +3 -1
- package/payload/KIT-VERSION +1 -1
- package/payload/planning/evals/eval-calibration.md +1 -1
- package/payload/planning/okrs/health-budgets.md +1 -1
- package/payload/state/discoveries.md +1 -1
- package/workspace/bin/pmos.js +1 -0
- package/workspace/doctor.js +4 -2
- package/workspace/guide/document-sheet.md +18 -3
- package/workspace/guide/launcher.md +2 -2
- package/workspace/lib/launcher-cli.js +2 -2
- package/workspace/package-lock.json +2 -2
- package/workspace/package.json +1 -1
- package/workspace/public/pm/c3-demo-boards.js +4 -3
- package/workspace/public/pm/c3-demo-init.js +16 -0
- package/workspace/public/pm/c3-doc-sheet.js +328 -21
- package/workspace/public/pm/c3-docs.js +2 -1
- package/workspace/public/pm/c3-ib-docs.js +3 -1
- package/workspace/public/pm/c3-settings.js +1 -1
- package/workspace/public/pm/console3.css +83 -0
- package/workspace/public/pm/frame-copy.js +1 -1
- package/workspace/server.js +3 -3
- package/workspace/test-lists/c3-doc-sheet-v2.json +6 -0
|
@@ -2073,6 +2073,89 @@
|
|
|
2073
2073
|
}
|
|
2074
2074
|
.c3 .ds input[type=checkbox]{width:auto;min-height:0;padding:0;margin:0;flex:none;border-radius:0}
|
|
2075
2075
|
|
|
2076
|
+
/* the document sheet v2 (initiative c3-doc-sheet-v2): the outline, the copies in other tools, the Relations graph */
|
|
2077
|
+
@media (min-width:761px){.c3 .sheet.dw.dwx{width:min(1100px,calc(100% - 24px))}}
|
|
2078
|
+
.c3 .ds-acc{color:var(--acc)}
|
|
2079
|
+
.c3 .ds-rmain{display:grid;gap:var(--sp-3);min-width:0}
|
|
2080
|
+
.c3 .ds-rlay{display:grid;grid-template-columns:232px minmax(0,1fr);gap:var(--sp-4);align-items:start}
|
|
2081
|
+
.c3 .ds-rlay.nool{grid-template-columns:minmax(0,1fr)}
|
|
2082
|
+
.c3 .ds-rlay.nool .ds-ol{display:none}
|
|
2083
|
+
.c3 .ds-ol{position:sticky;top:var(--in-ds-oltop,0);max-height:var(--in-ds-olmax,60vh);overflow:auto;display:grid;gap:6px;align-content:start;padding:10px 8px 10px 0;border-right:1px solid var(--border);font-size:var(--fs-2)}
|
|
2084
|
+
.c3 .ds-ol .hd{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding-left:8px}
|
|
2085
|
+
.c3 .ds-ol .hd .ds-mono{font-size:var(--fs-1)}
|
|
2086
|
+
.c3 .ds-ol input{margin-left:8px;width:calc(100% - 8px);font:var(--fs-2) var(--mono);padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--background);color:var(--foreground)}
|
|
2087
|
+
.c3 .ds-ol ul{list-style:none;margin:0;padding:0;display:grid}
|
|
2088
|
+
.c3 .ds-ol li{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start}
|
|
2089
|
+
.c3 .ds-ol li.l2 .go{padding-left:18px}
|
|
2090
|
+
.c3 .ds-ol li.l3 .go{padding-left:32px}
|
|
2091
|
+
.c3 .ds-ol .tw{width:18px;min-height:26px;display:grid;place-items:center;color:var(--muted-foreground);background:none;border:0;padding:0;border-radius:6px}
|
|
2092
|
+
.c3 .ds-ol .tw[aria-expanded="true"] .ic{transform:rotate(90deg)}
|
|
2093
|
+
.c3 .ds-ol .go{display:flex;align-items:flex-start;gap:6px;width:100%;text-align:left;background:none;border:0;border-left:2px solid transparent;padding:4px 8px;border-radius:0;color:var(--muted-foreground);line-height:1.35;font:inherit;min-height:0;justify-content:flex-start}
|
|
2094
|
+
.c3 .ds-ol .go span{flex:1;min-width:0}
|
|
2095
|
+
.c3 .ds-ol li.l1 .go{color:var(--foreground)}
|
|
2096
|
+
.c3 .ds-ol li.on .go{color:var(--acc);border-left-color:var(--acc);background:color-mix(in oklab,var(--acc) 8%,transparent);font-weight:500}
|
|
2097
|
+
.c3 .ds-ol .mdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-top:6px;flex:none}
|
|
2098
|
+
.c3 .ds-ol .mdot.w{background:var(--warning)}
|
|
2099
|
+
.c3 .ds-ol .mdot.p{background:var(--agent)}
|
|
2100
|
+
.c3 .ds-ol .key{display:flex;flex-wrap:wrap;gap:4px 10px;padding:6px 0 0 8px;border-top:1px solid var(--border);font-size:var(--fs-1)}
|
|
2101
|
+
.c3 .ds-ol .key span{display:inline-flex;gap:4px;align-items:center}
|
|
2102
|
+
.c3 .ds-ol .key .mdot{margin:0}
|
|
2103
|
+
.c3 .ds-ol .none{padding:4px 8px}
|
|
2104
|
+
.c3 .ds-olbtn{display:none}
|
|
2105
|
+
.c3 .ds-olbtn b{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
|
|
2106
|
+
@media (hover:hover){.c3 .ds-ol .go:hover{background:var(--muted);color:var(--foreground)}.c3 .ds-gn:not(.x):not(.me):hover{border-color:var(--ring)}}
|
|
2107
|
+
@media (max-width:900px){
|
|
2108
|
+
.c3 .ds-rlay{grid-template-columns:minmax(0,1fr)}
|
|
2109
|
+
.c3 .ds-olhide{display:none}
|
|
2110
|
+
.c3 .ds-olbtn{display:inline-flex;max-width:100%}
|
|
2111
|
+
.c3 .ds-ol{display:none;z-index:3;max-height:60vh;border:1px solid var(--ring);border-radius:8px;background:var(--card);padding:10px 8px;box-shadow:0 8px 24px color-mix(in oklab,var(--foreground) 14%,transparent)}
|
|
2112
|
+
.c3 .ds-rlay.olopen .ds-ol,.c3 .ds-rlay.nool.olopen .ds-ol{display:grid}
|
|
2113
|
+
}
|
|
2114
|
+
.c3 .ds-sync{display:grid;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--card);min-width:0}
|
|
2115
|
+
.c3 .ds-sync .hd{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
|
|
2116
|
+
.c3 .ds-sync ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
|
|
2117
|
+
.c3 .ds-sync li{display:grid;gap:4px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--background);min-width:0}
|
|
2118
|
+
.c3 .ds-sync .l1{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
|
|
2119
|
+
.c3 .ds-sync .l1 .tag{margin-left:auto;display:inline-flex;gap:4px;align-items:center}
|
|
2120
|
+
.c3 .ds-sync p{margin:0;font-size:var(--fs-2);line-height:1.5}
|
|
2121
|
+
.c3 .ds-sync .ds-mono{font-size:var(--fs-1);overflow-wrap:anywhere}
|
|
2122
|
+
.c3 .ds-sync a.ds-btn{text-decoration:none}
|
|
2123
|
+
.c3 .ds-linkadd input{border-color:var(--border)}
|
|
2124
|
+
.c3 .ds-graph{position:relative;border:1px solid var(--border);border-radius:8px;padding:12px;background:var(--card);display:grid;gap:18px;min-width:0}
|
|
2125
|
+
.c3 .ds-gsvg{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
|
|
2126
|
+
.c3 .ds-gsvg .e{fill:none;stroke:var(--ring);stroke-width:1.5}
|
|
2127
|
+
.c3 .ds-gsvg .e.drift{stroke:var(--warning);stroke-dasharray:5 4}
|
|
2128
|
+
.c3 .ds-gsvg .e.conflict{stroke:var(--destructive);stroke-dasharray:5 4}
|
|
2129
|
+
.c3 .ds-gsvg .e.missing{stroke:var(--muted-foreground);stroke-dasharray:2 4}
|
|
2130
|
+
.c3 .ds-gsvg .e.ahead{stroke:var(--acc)}
|
|
2131
|
+
.c3 .ds-gtop{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;position:relative}
|
|
2132
|
+
.c3 .ds-gmid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,1fr);gap:40px;align-items:center;position:relative}
|
|
2133
|
+
.c3 .ds-gcol{display:grid;gap:10px;min-width:0}
|
|
2134
|
+
.c3 .ds-gn{display:grid;gap:2px;text-align:left;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--background);color:var(--foreground);min-width:0;position:relative;text-decoration:none;font:inherit;min-height:0;justify-content:stretch}
|
|
2135
|
+
.c3 .ds-gtop .ds-gn{min-width:140px;max-width:220px}
|
|
2136
|
+
.c3 .ds-gn b{font-weight:500;font-size:var(--fs-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
2137
|
+
.c3 .ds-gn small{font:var(--fs-1) var(--mono);color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
2138
|
+
.c3 .ds-gn.drift small{color:var(--warning)}
|
|
2139
|
+
.c3 .ds-gn.conflict small{color:var(--destructive)}
|
|
2140
|
+
.c3 .ds-gn.ahead small{color:var(--acc)}
|
|
2141
|
+
.c3 .ds-gn.me{border-color:var(--acc);border-width:1.5px;background:color-mix(in oklab,var(--acc) 10%,var(--background));padding:10px 12px}
|
|
2142
|
+
.c3 .ds-gmore{font-size:var(--fs-1)}
|
|
2143
|
+
.c3 .ds-graph .key{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;font-size:var(--fs-1);position:relative}
|
|
2144
|
+
.c3 .ds-graph .key span{display:inline-flex;gap:6px;align-items:center}
|
|
2145
|
+
.c3 .ds-graph .key .ln{width:14px;height:2px;display:inline-block;background:var(--ring)}
|
|
2146
|
+
.c3 .ds-graph .key .ln.drift{background:var(--warning)}
|
|
2147
|
+
.c3 .ds-graph .key .ln.ahead{background:var(--acc)}
|
|
2148
|
+
.c3 .ds-graph .key .chip2{margin-left:auto}
|
|
2149
|
+
.c3 .ds-rel{list-style:none;margin:0;padding:0;display:grid;gap:4px}
|
|
2150
|
+
.c3 .ds-rel li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid var(--border)}
|
|
2151
|
+
.c3 .ds-rlk{display:grid;gap:2px;text-align:left;background:none;border:0;padding:0;color:var(--foreground);font:inherit;text-decoration:none;min-height:0;justify-content:start}
|
|
2152
|
+
.c3 .ds-rlk small{font:var(--fs-1) var(--mono);color:var(--muted-foreground)}
|
|
2153
|
+
@media (max-width:640px){
|
|
2154
|
+
.c3 .ds-gmid{gap:16px}
|
|
2155
|
+
.c3 .ds-graph{padding:8px}
|
|
2156
|
+
}
|
|
2157
|
+
@media (pointer:coarse){.c3 .ds-ol .go{min-height:44px}.c3 .ds-ol .tw{min-height:44px}.c3 .ds-gn{min-height:44px}}
|
|
2158
|
+
|
|
2076
2159
|
/* the card before a meeting (initiative c3-meeting-card) */
|
|
2077
2160
|
.c3 .cal3-ctx .cal3-p{margin:0;font-size:var(--fs-2);line-height:1.5;color:var(--foreground)}
|
|
2078
2161
|
.c3 .cal3-ctx.cal3-gist{padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--muted)}
|
|
@@ -231,7 +231,7 @@ export const COPY = {
|
|
|
231
231
|
onlineKeysWait: 'Cloudflare\'s sign-in keys are not loaded yet. Sign-ins are refused until they are.',
|
|
232
232
|
onlineKeysError: (e) => `Cloudflare\'s sign-in keys did not load (${e}). Check the team domain. Sign-ins are refused until they load.`,
|
|
233
233
|
onlineNeedFields: 'Fill in all five fields to turn Online on.',
|
|
234
|
-
onlineNoCloudflared: 'cloudflared is not installed. Install it (brew install cloudflared), then turn Online on.',
|
|
234
|
+
onlineNoCloudflared: 'cloudflared is not installed. Install it (Mac: brew install cloudflared; Windows: winget install Cloudflare.cloudflared), then turn Online on.',
|
|
235
235
|
onlineEnv: (host) => `Online at https://${host}/, set by PMOS_PUBLIC_HOST when the workspace started. It signs in with the token. Restart the workspace without PMOS_PUBLIC_HOST to use this switch.`,
|
|
236
236
|
onlineRemote: 'Only the computer that runs the workspace can change this.',
|
|
237
237
|
onlineUnread: 'The Online settings did not load.',
|
package/workspace/server.js
CHANGED
|
@@ -3023,8 +3023,8 @@ function spawnFailureAdvice(err, cmd, isShell) {
|
|
|
3023
3023
|
`in the workspace install dir.`;
|
|
3024
3024
|
}
|
|
3025
3025
|
if (process.platform === 'win32') {
|
|
3026
|
-
return `could not start '${cmd}': ${msg}.
|
|
3027
|
-
`
|
|
3026
|
+
return `could not start '${cmd}': ${msg}. Run \`pmos doctor\`: it checks the terminal component and names the fix. ` +
|
|
3027
|
+
`If this is an agent, check that it is installed and that a new PowerShell window finds it.`;
|
|
3028
3028
|
}
|
|
3029
3029
|
return isShell
|
|
3030
3030
|
? `could not start a shell ('${cmd}'): ${msg}. Set SHELL to a valid shell (e.g. /bin/zsh) and restart.`
|
|
@@ -7925,7 +7925,7 @@ async function handleRequest(req, res) {
|
|
|
7925
7925
|
const press = pmGuard.requirePagePress(req, body);
|
|
7926
7926
|
if (!press.ok) return json(res, { ok: false, error: press.error }, press.status || 403);
|
|
7927
7927
|
if (BIND.publicHost && body.on === true) return json(res, { ok: false, error: `PMOS_PUBLIC_HOST=${BIND.publicHost} was set when the workspace started, so it is already online that way. Restart it without PMOS_PUBLIC_HOST to use the switch.` }, 409);
|
|
7928
|
-
if (body.on === true && !ONLINE.find()) return json(res, { ok: false, field: 'on', error: 'cloudflared is not installed. Install it (brew install cloudflared), then switch Online on again.' }, 409);
|
|
7928
|
+
if (body.on === true && !ONLINE.find()) return json(res, { ok: false, field: 'on', error: 'cloudflared is not installed. Install it (Mac: brew install cloudflared; Windows: winget install Cloudflare.cloudflared), then switch Online on again.' }, 409);
|
|
7929
7929
|
const out = onlineMode.save(STATE, body);
|
|
7930
7930
|
if (!out.ok) return json(res, { ok: false, field: out.field || null, error: out.error }, out.field ? 400 : 500);
|
|
7931
7931
|
ONLINE.settings = out.settings;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Initiative c3-doc-sheet-v2: the console3 document sheet outline, the copies in other tools, and the Relations graph. The browser suite runs the done-criteria.",
|
|
3
|
+
"modules": [],
|
|
4
|
+
"panels": ["pm-c3-doc-sheet-v2-test.js"],
|
|
5
|
+
"seconds": { "pm-c3-doc-sheet-v2-test.js": 60 }
|
|
6
|
+
}
|