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.
@@ -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.',
@@ -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}. Native Windows needs WSL for a real PTY shell — ` +
3027
- `run the workspace inside WSL.`;
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
+ }