@fnndsc/porter 0.6.0 → 0.6.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/dist/app.js CHANGED
@@ -271,12 +271,18 @@ export async function porterApp_build(options) {
271
271
  }
272
272
  return loginPage_render(config.cubeUrl, reason);
273
273
  });
274
+ // Where a human types the code chell showed: the login page with a code field.
275
+ app.get('/device', async (request, reply) => {
276
+ const reason = request.query.reason;
277
+ void reply.type('text/html; charset=utf-8');
278
+ return loginPage_render(config.cubeUrl, typeof reason === 'string' && reason.length > 0 ? reason : null, 'ask');
279
+ });
274
280
  app.post('/auth/device', async (request, reply) => {
275
281
  const parsed = deviceSchema.safeParse(request.body);
276
282
  if (!parsed.success)
277
283
  return reply.code(400).send({ error: 'the host chell runs on is required' });
278
284
  const issued = codes.issue(parsed.data.host);
279
- return { code: issued.code, expires: issued.expires, url: `/login?code=${encodeURIComponent(issued.code)}` };
285
+ return { code: issued.code, expires: issued.expires, url: '/device' };
280
286
  });
281
287
  /** The token a self-service route is called with, checked; or the refusal sent. */
282
288
  const bearer_check = async (request, reply) => {
@@ -322,7 +328,10 @@ export async function porterApp_build(options) {
322
328
  });
323
329
  app.post('/login', async (request, reply) => {
324
330
  const wantsJson = request_wantsJson(request);
325
- const refuse = async (status, reason) => wantsJson ? reply.code(status).send({ error: reason }) : reply.redirect(`/login?reason=${encodeURIComponent(reason)}`, 303);
331
+ // A form that carried a device code goes back to the page with the code
332
+ // field, so a mistyped password or code is tried again where it was typed.
333
+ const fromDevice = typeof request.body?.code === 'string';
334
+ const refuse = async (status, reason) => wantsJson ? reply.code(status).send({ error: reason }) : reply.redirect(`/${fromDevice ? 'device' : 'login'}?reason=${encodeURIComponent(reason)}`, 303);
326
335
  // A script's way in: a door token minted for a human login earlier.
327
336
  // Checked before any body, so a token never travels beside a password.
328
337
  const bearer = bearer_ofRequest(request);
@@ -373,6 +382,20 @@ export async function porterApp_build(options) {
373
382
  const grant = { token: made.token, user: username, name, expires: made.record.expires };
374
383
  codes.authorise(wanted.code, grant);
375
384
  options.log?.(`minted a door token "${name}" for ${username} by device code (dies ${made.record.expires.slice(0, 10)})`);
385
+ // A token boots a session on the login the session saved. A human who
386
+ // never came through before has none, so this login, which holds a
387
+ // fresh CUBE token, starts the session now; chell's first call then
388
+ // finds it up or booting (found live: a first-ever device login left
389
+ // `chell -c` failing with "no token is saved for this identity").
390
+ if (cubeToken !== null && (await host.find(identity)) === null) {
391
+ const booting = host.boot_follow(identity, { line: () => undefined, done: () => undefined });
392
+ booting?.release();
393
+ if (booting === null || booting.report.state !== 'booting') {
394
+ registry.pending_note(identity, username);
395
+ host.spawn_begin(identity, username, config.cubeUrl, cubeToken);
396
+ options.log?.(`starting a session for ${username} beside the device login`);
397
+ }
398
+ }
376
399
  if (wantsJson)
377
400
  return { authorised: true, name, expires: made.record.expires };
378
401
  void reply.type('text/html; charset=utf-8');
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/greeter.d.ts CHANGED
@@ -37,7 +37,7 @@ export declare function attribute_escape(text: string): string;
37
37
  export declare function loginPage_render(cubeUrl: string, reason: string | null, authorise?: {
38
38
  code: string;
39
39
  host: string;
40
- } | null): string;
40
+ } | 'ask' | null): string;
41
41
  /**
42
42
  * The page after a device code was authorised: chell has its token, the
43
43
  * browser was only here to say so.
package/dist/greeter.js CHANGED
@@ -87,13 +87,20 @@ ${shell.script}
87
87
  */
88
88
  export function loginPage_render(cubeUrl, reason, authorise = null) {
89
89
  const notice = reason === null ? '' : `<p class="reason" role="alert">${attribute_escape(reason)}</p>`;
90
- // The device-code variant: the same login, with what it is for said
91
- // above it and the code carried along, so the door knows which chell to
92
- // hand the token to.
90
+ // The device-code variants: the same login, with what it is for said
91
+ // above it. `ask` (GET /device) has a field for the code chell showed, the
92
+ // way github.com/login/device does; a code already in the address is
93
+ // carried along and said.
93
94
  const purpose = authorise === null
94
95
  ? ''
95
- : `<p class="purpose">Authorise <b>chell</b> on <b>${attribute_escape(authorise.host)}</b> with code <code>${attribute_escape(authorise.code)}</code></p>`;
96
- const carried = authorise === null ? '' : `<input type="hidden" name="code" value="${attribute_escape(authorise.code)}" />`;
96
+ : authorise === 'ask'
97
+ ? '<p class="purpose">Authorise <b>chell</b>: enter the code it showed you, then log in.</p>'
98
+ : `<p class="purpose">Authorise <b>chell</b> on <b>${attribute_escape(authorise.host)}</b> with code <code>${attribute_escape(authorise.code)}</code></p>`;
99
+ const carried = authorise === null
100
+ ? ''
101
+ : authorise === 'ask'
102
+ ? '<label>Code <input name="code" autocomplete="off" autocapitalize="characters" spellcheck="false" placeholder="XXXX-XXXX" required autofocus /></label>'
103
+ : `<input type="hidden" name="code" value="${attribute_escape(authorise.code)}" />`;
97
104
  return shell_render({
98
105
  title: authorise === null ? 'ChRIS · login' : 'ChRIS · authorise chell',
99
106
  root: './',
@@ -101,7 +108,7 @@ export function loginPage_render(cubeUrl, reason, authorise = null) {
101
108
  ${purpose}
102
109
  ${notice}
103
110
  ${carried}
104
- <label>Username <input name="username" autocomplete="username" required autofocus /></label>
111
+ <label>Username <input name="username" autocomplete="username" required${authorise === 'ask' ? '' : ' autofocus'} /></label>
105
112
  <label>Password <input name="password" type="password" autocomplete="current-password" required /></label>
106
113
  <button type="submit">${authorise === null ? 'LOG IN' : 'AUTHORISE'}</button>
107
114
  </form>`,
@@ -1 +1 @@
1
- {"version":3,"file":"greeter.js","sourceRoot":"","sources":["../src/greeter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"greeter.js","sourceRoot":"","sources":["../src/greeter.ts"],"names":[],"mappings":"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"}
package/dist/notes.json CHANGED
@@ -1 +1 @@
1
- {"package":"@fnndsc/porter","version":"0.6.0","built":"2026-10-06T18:02:41.893Z","releases":[{"version":"0.6.0","date":"2026-10-06","merge":"1b09efadc872","bump":"minor","changes":[{"hash":"5c16c65","headline":"The door takes a token as well as a password, so a script can come through without one.","body":"A human login can mint a named door token (a JSON login asking for one, or the browser authorising a chell by one-time code on the login page); the door keeps only its hash, with the name and the day it dies (`PORTER_TOKEN_DAYS`, 30 by default), and a script presents it as `Authorization: Bearer`. A session not up boots on the login it saved. Expired and unknown tokens are refused by name, and the journal says who came through by which token.","internal":false},{"hash":"44c75f4","headline":"The porter's own command line lists, revokes and mints door tokens.","body":"`porter --tokens` shows user, name, minted, dies and last used; `porter --revoke <user> [<name>]` ends one or all of a user's; `porter --mint <user> --name <name>` mints one by the operator's hand, shown once, for a service identity or a hand-over. A running door notices a store changed under it on the token's next use, so a revocation takes effect without a restart.","internal":false},{"hash":"b4a7674","headline":"A holder can see and end their own door tokens.","body":"A token login answers whose token it was; `GET /auth/tokens` lists the identity's tokens by one of them and `DELETE /auth/token` revokes the token in hand, which is what `chell auth tokens` and `chell auth logout` call.","internal":false},{"hash":null,"headline":"Updated dependencies [b4a7674]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [8ae54c6]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [eea6238] - @fnndsc/chell@5.11.0","body":"","internal":true}]},{"version":"0.5.5","date":"2026-10-05","merge":"9b5699be2dee","bump":"patch","changes":[{"hash":"66bfa85","headline":"A login onto an older daemon restarts it the way the RESTART pill does.","body":"The old daemon is told why and waited out before the new one boots, so a terminal attaches to the new session rather than a port that is closing; and the door now reads the versions a berth carries, so a session restarted once is current and is not restarted again.","internal":false}]},{"version":"0.5.4","date":"2026-10-05","merge":"e8e51d6f6da5","bump":"patch","changes":[{"hash":"9f4c181","headline":"A login never lands on a kernel older than the door's.","body":"A session whose daemon still runs code from before the porter's last upgrade is ended at login and boots afresh on the way in, its saved state kept, so the first command you type is answered by the release that is installed.","internal":false},{"hash":null,"headline":"Updated dependencies [9f4c181] - @fnndsc/calypso@0.19.6","body":"","internal":true}]},{"version":"0.5.3","date":"2026-10-05","merge":"d2a8f2306caa","bump":"patch","changes":[{"hash":"a4aabb7","headline":"A word the porter entry does not know is refused by name instead of starting a second door.","body":"`porter --help` lists the words, `--sessions` says what `--status` says, and a restarted porter adopts the sessions it finds only once it holds its port.","internal":false}]},{"version":"0.5.2","date":"2026-10-05","merge":"ecfe0e091342","bump":"patch","changes":[{"hash":"5a0eef5","headline":"The package ships its release notes, so a session can say what changed.","body":"They are read from CHANGELOG.md at build into dist/notes.json.","internal":false},{"hash":null,"headline":"Updated dependencies [5a0eef5]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [5a0eef5]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [5a0eef5] - @fnndsc/calypso@0.19.4 - @fnndsc/chell@5.10.3 - @fnndsc/menu@0.19.0","body":"","internal":true}]},{"version":"0.5.1","date":"2026-10-04","merge":"8b4c28c80fc2","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [73c0087] - @fnndsc/menu@0.18.0 - @fnndsc/calypso@0.19.2 - @fnndsc/chell@5.10.1","body":"","internal":true}]},{"version":"0.5.0","date":"2026-10-03","merge":"b737b6d5269e","bump":"minor","changes":[{"hash":"33e4f1d","headline":"A session restarts from its own browser and stays logged in.","body":"Porter's new `POST /restart` (cookie-gated: only the cookie's own session) tells the old calypso daemon why, ends it, and boots a fresh one with chell's new `--saved-token` login, which uses the token the identity saved and refuses rather than come up offline. The browser follows the boot on the greeter; a refused saved token ends at the door with the reason. On SIGTERM the daemon sends `closing` (restart, end or stop) to every surface before it exits, and a remote chell prints why it went. `porter --end` leaves `end` as the reason.","internal":false},{"hash":null,"headline":"Updated dependencies [51315ec]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [33e4f1d]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [fe4b6b4] - @fnndsc/calypso@0.19.0 - @fnndsc/menu@0.17.0 - @fnndsc/chell@5.10.0","body":"","internal":true}]},{"version":"0.4.6","date":"2026-10-03","merge":"ff157a55d5ed","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [685ed59] - @fnndsc/calypso@0.18.0 - @fnndsc/menu@0.16.0 - @fnndsc/chell@5.9.8","body":"","internal":true}]},{"version":"0.4.5","date":"2026-10-03","merge":"30fbc2abbc84","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [2826f2b]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [c1cf57e]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [51da853] - @fnndsc/menu@0.15.0 - @fnndsc/calypso@0.17.0 - @fnndsc/chell@5.9.7","body":"","internal":true}]},{"version":"0.4.4","date":"2026-10-01","merge":"0491d58506dd","bump":"patch","changes":[{"hash":"88437cc","headline":"A tab icon: the ChRIS mark on the page's own ground, for the surface and for the door.","body":"","internal":false},{"hash":null,"headline":"Updated dependencies [4864a34] - @fnndsc/menu@0.14.0 - @fnndsc/calypso@0.16.10 - @fnndsc/chell@5.9.6","body":"","internal":true}]},{"version":"0.4.3","date":"2026-10-01","merge":"5625f543f8f6","bump":"patch","changes":[{"hash":"b5bb197","headline":"The greeter settles a boot row where it stands: the outcome of a `[PENDING]` or `[RETRY]` step replaces that row instead of appending beneath it.","body":"","internal":false}]},{"version":"0.4.2","date":"2026-10-01","merge":"1b77ac182c25","bump":"patch","changes":[{"hash":"cbd71cc","headline":"A refused file read says why: the kernel names the status and reason (403 not yours to read, 404 no such file, 502 CUBE could not serve it), `/vfs` answers with them instead of 404 for everything, and an image pane that lost a slice reads the reason out.","body":"`porter --end <who>` ends one session so the next login boots on the current kernel.","internal":false},{"hash":null,"headline":"Updated dependencies [cbd71cc] - @fnndsc/calypso@0.16.9","body":"","internal":true}]},{"version":"0.4.1","date":"2026-09-27","merge":"f3d2d7ed3d72","bump":"patch","changes":[{"hash":"ef542cd","headline":"`PORTER_SOUNDS_DIR` actually answers: the mount hands the route `/sounds/press.mp3` with its leading slash, which the sound match did not allow, so every sound was proxied to the page's own.","body":"Route-level test added.","internal":false}]},{"version":"0.4.0","date":"2026-09-27","merge":"49033a576021","bump":"minor","changes":[{"hash":"c6d8161","headline":"`PORTER_SOUNDS_DIR`: a folder of sounds the porter serves in place of the page's own (`/s/<key>/sounds/<name>.mp3|wav|ogg`, bare names only), so a deployment's original LCARS beeps — never in a package — live outside the install and survive an upgrade.","body":"","internal":false}]},{"version":"0.3.5","date":"2026-09-26","merge":"a1a7cf9a2b2d","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [fbd3f0a]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [fbd3f0a] - @fnndsc/menu@0.13.0 - @fnndsc/chell@5.9.5 - @fnndsc/calypso@0.16.8","body":"","internal":true}]},{"version":"0.3.4","date":"2026-09-26","merge":"70016c84b4f0","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [f571a14]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [d1da8ac]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [0f9ae74]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [d8e160c] - @fnndsc/chell@5.9.4 - @fnndsc/menu@0.12.0 - @fnndsc/calypso@0.16.7","body":"","internal":true}]},{"version":"0.3.3","date":"2026-09-24","merge":"646a384af419","bump":"patch","changes":[{"hash":"98b839f","headline":"A session whose daemon died is no longer proxied to the dead port: a login that boots a new daemon replaces the stale entry, and a mount whose daemon does not answer follows the session to its new berth or sends the browser to the door, instead of a bare 500 ECONNREFUSED.","body":"","internal":false}]},{"version":"0.3.2","date":"2026-09-22","merge":"2356c7db39f7","bump":"patch","changes":[{"hash":"05b9b41","headline":"porter: `porter --status` marks the pid on a gone row as stale.","body":"The berth outlives a daemon killed with -9, and the bare number read as a process the listing had just made. - @fnndsc/calypso@0.16.2","internal":false}]},{"version":"0.3.1","date":"2026-09-22","merge":"c1b0be0099d8","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [dac2d96]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [dac2d96]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [50f8a4e]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [c82f514] - @fnndsc/chell@5.9.1 - @fnndsc/menu@0.11.0 - @fnndsc/calypso@0.16.1","body":"","internal":true}]},{"version":"0.3.0","date":"2026-09-22","merge":"61536c94c899","bump":"minor","changes":[{"hash":"b58f4da","headline":"porter: published.","body":"`npm install -g @fnndsc/porter` brings the whole stack beneath it, and `PORTER_CUBE_URL=… porter` is the full login experience from one install. `@fnndsc/menu` is a declared dependency, since the greeter serves its brain and ANSI modules from where menu is installed.","internal":false},{"hash":"2b18178","headline":"porter: `porter --status` asks for nothing but the state directory.","body":"It read the full configuration first and refused without `PORTER_CUBE_URL`, a fact a listing never uses.","internal":false}]},{"version":"0.2.0","date":"2026-09-21","merge":"576426874567","bump":"minor","changes":[{"hash":"3a8cd1b","headline":"A porter at the door: the mise display manager, slice 3 — the shape without the door.","body":"`apps/porter` logs an operator into one CUBE, trades the password for a token, starts or joins that identity's calypso (`chell --daemon --auth-token-stdin`, the token on stdin, four directories of its own under the porter's state) and mounts the session at `/s/<key>/`: page, assets, `/vfs` and the WebSocket wire proxied to the daemon on loopback with the attach token added by the porter, so the browser holds none. `GET /boot/<key>` streams the session's boot as server-sent events, one per line the daemon wrote, replayed for a late attacher. `POST /sessions` re-checks the password at CUBE every time, even when the session is up.\n\ncalypso: the attach token may ride the upgrade URL (`?token=`), the way `/vfs?token=` already does, so a front that holds the token for a browser can put it on the proxied upgrade and the page attaches with an empty one; and `berth_pathIn(runtimeDir, identity)` names a berth under a runtime directory that is not the process's own.\n\nNo cookie yet: this porter binds loopback. The door — login page, cookie, LOG OUT — is the next slice.","internal":false},{"hash":"4ee180c","headline":"A session outlives its door: the porter's lifecycle.","body":"porter: a restarted porter adopts the sessions its predecessor started, from their berths under the state directory, rather than starting rivals. Idle sessions — no wire open, nothing through the door for `PORTER_IDLE_HOURS` (a day, like the cookie) — are ended by a sweep every minute: the process only; the state directory stays and the next login boots warm. `porter --status` lists the state directory's sessions and whether each answers. `deploy/` carries a systemd unit (a `porter` user, `KillMode=process` so a stopped door keeps its sessions), an env file example, and a Caddyfile for TLS in front. Boot lines kept per session are capped at 2000.\n\ncalypso: a berth records the daemon's pid, so a host that did not start a daemon can still end it.\n\nchell: a daemon off a TTY tolerates EPIPE on its stdout and stderr — the porter that started it may stop first, and a session outlives its door.","internal":false},{"hash":"21f8d21","headline":"The door itself: the porter logs a browser in and argus leaves by the door it came in.","body":"porter: `GET /login` asks for a username and a password; `POST /login` (form or JSON) trades the password for a CUBE token, starts or joins the session, sets a signed HttpOnly SameSite=Lax cookie naming it (Secure behind TLS, a day long by default) and sends the browser to `/s/<key>/?door`. The cookie gates the boot stream, the mount and the wire: a browser reaches only the session its cookie names; without it, the door (302), a refusal (401) or a dropped upgrade. `POST /logout` clears the cookie and leaves the session running. `PORTER_SECRET` signs the cookie; given none, one is made up per start and said so.\n\nargus: a LOG OUT pill beside AUDIO and the theme, in the frame's hue, standing only on a page that came through a door; pressed, it tells the door to forget this browser and goes to the door's login. The session is not touched. Law: a-surface-leaves-by-the-door-it-came-in.","internal":false},{"hash":"1c169d7","headline":"The greeter: the door answers at once, and a boot is watched rather than waited for.","body":"porter: `POST /login` no longer holds the browser for a cold boot. A session already up is entered directly; one that must boot sends the browser to `/greet/<key>`, where the mise brain wakes — the same frames a terminal boot draws, paced by the page — and the daemon's boot rows arrive beneath it as they are written, ANSI and all, from the boot stream. `ready` rests the brain and hands the browser to the session; `failed` says why and offers the door again. The login page wears the same shell with the brain at rest. The porter serves the two modules it draws with from the installed wire package (`/greeter/brain.js`, `/greeter/ansi.js`); a booting identity is pending in the registry and reaches its mount only when its berth answers.\n\nmenu: `@fnndsc/menu/ansi` — the ANSI-to-HTML converter and the console palette, moved from the ARGUS console so a browser greeter renders a boot the way the console renders a transcript; argus keeps the DOM half and re-exports the rest.","internal":false},{"hash":null,"headline":"Updated dependencies [d1a1c0d]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [3a8cd1b]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [1bdf876]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [4ee180c]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [c1178a0]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [5b520c7]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [810f3ba]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [7bba167] - @fnndsc/calypso@0.16.0 - @fnndsc/chell@5.9.0","body":"","internal":true}]}]}
1
+ {"package":"@fnndsc/porter","version":"0.6.1","built":"2026-10-06T20:12:22.831Z","releases":[{"version":"0.6.1","date":"2026-10-06","merge":"e86717fcd132","bump":"patch","changes":[{"hash":"6325bc4","headline":"The door has a page to type a chell code at.","body":"`/device` puts a code field beside the username and password, as github.com/login/device does, and authorising a code also starts the user's session when none is up, so a first-ever `chell auth login` is followed by a `chell -c` that works.","internal":false},{"hash":null,"headline":"Updated dependencies [6325bc4] - @fnndsc/chell@5.11.1","body":"","internal":true}]},{"version":"0.6.0","date":"2026-10-06","merge":"1b09efadc872","bump":"minor","changes":[{"hash":"5c16c65","headline":"The door takes a token as well as a password, so a script can come through without one.","body":"A human login can mint a named door token (a JSON login asking for one, or the browser authorising a chell by one-time code on the login page); the door keeps only its hash, with the name and the day it dies (`PORTER_TOKEN_DAYS`, 30 by default), and a script presents it as `Authorization: Bearer`. A session not up boots on the login it saved. Expired and unknown tokens are refused by name, and the journal says who came through by which token.","internal":false},{"hash":"44c75f4","headline":"The porter's own command line lists, revokes and mints door tokens.","body":"`porter --tokens` shows user, name, minted, dies and last used; `porter --revoke <user> [<name>]` ends one or all of a user's; `porter --mint <user> --name <name>` mints one by the operator's hand, shown once, for a service identity or a hand-over. A running door notices a store changed under it on the token's next use, so a revocation takes effect without a restart.","internal":false},{"hash":"b4a7674","headline":"A holder can see and end their own door tokens.","body":"A token login answers whose token it was; `GET /auth/tokens` lists the identity's tokens by one of them and `DELETE /auth/token` revokes the token in hand, which is what `chell auth tokens` and `chell auth logout` call.","internal":false},{"hash":null,"headline":"Updated dependencies [b4a7674]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [8ae54c6]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [eea6238] - @fnndsc/chell@5.11.0","body":"","internal":true}]},{"version":"0.5.5","date":"2026-10-05","merge":"9b5699be2dee","bump":"patch","changes":[{"hash":"66bfa85","headline":"A login onto an older daemon restarts it the way the RESTART pill does.","body":"The old daemon is told why and waited out before the new one boots, so a terminal attaches to the new session rather than a port that is closing; and the door now reads the versions a berth carries, so a session restarted once is current and is not restarted again.","internal":false}]},{"version":"0.5.4","date":"2026-10-05","merge":"e8e51d6f6da5","bump":"patch","changes":[{"hash":"9f4c181","headline":"A login never lands on a kernel older than the door's.","body":"A session whose daemon still runs code from before the porter's last upgrade is ended at login and boots afresh on the way in, its saved state kept, so the first command you type is answered by the release that is installed.","internal":false},{"hash":null,"headline":"Updated dependencies [9f4c181] - @fnndsc/calypso@0.19.6","body":"","internal":true}]},{"version":"0.5.3","date":"2026-10-05","merge":"d2a8f2306caa","bump":"patch","changes":[{"hash":"a4aabb7","headline":"A word the porter entry does not know is refused by name instead of starting a second door.","body":"`porter --help` lists the words, `--sessions` says what `--status` says, and a restarted porter adopts the sessions it finds only once it holds its port.","internal":false}]},{"version":"0.5.2","date":"2026-10-05","merge":"ecfe0e091342","bump":"patch","changes":[{"hash":"5a0eef5","headline":"The package ships its release notes, so a session can say what changed.","body":"They are read from CHANGELOG.md at build into dist/notes.json.","internal":false},{"hash":null,"headline":"Updated dependencies [5a0eef5]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [5a0eef5]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [5a0eef5] - @fnndsc/calypso@0.19.4 - @fnndsc/chell@5.10.3 - @fnndsc/menu@0.19.0","body":"","internal":true}]},{"version":"0.5.1","date":"2026-10-04","merge":"8b4c28c80fc2","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [73c0087] - @fnndsc/menu@0.18.0 - @fnndsc/calypso@0.19.2 - @fnndsc/chell@5.10.1","body":"","internal":true}]},{"version":"0.5.0","date":"2026-10-03","merge":"b737b6d5269e","bump":"minor","changes":[{"hash":"33e4f1d","headline":"A session restarts from its own browser and stays logged in.","body":"Porter's new `POST /restart` (cookie-gated: only the cookie's own session) tells the old calypso daemon why, ends it, and boots a fresh one with chell's new `--saved-token` login, which uses the token the identity saved and refuses rather than come up offline. The browser follows the boot on the greeter; a refused saved token ends at the door with the reason. On SIGTERM the daemon sends `closing` (restart, end or stop) to every surface before it exits, and a remote chell prints why it went. `porter --end` leaves `end` as the reason.","internal":false},{"hash":null,"headline":"Updated dependencies [51315ec]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [33e4f1d]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [fe4b6b4] - @fnndsc/calypso@0.19.0 - @fnndsc/menu@0.17.0 - @fnndsc/chell@5.10.0","body":"","internal":true}]},{"version":"0.4.6","date":"2026-10-03","merge":"ff157a55d5ed","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [685ed59] - @fnndsc/calypso@0.18.0 - @fnndsc/menu@0.16.0 - @fnndsc/chell@5.9.8","body":"","internal":true}]},{"version":"0.4.5","date":"2026-10-03","merge":"30fbc2abbc84","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [2826f2b]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [c1cf57e]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [51da853] - @fnndsc/menu@0.15.0 - @fnndsc/calypso@0.17.0 - @fnndsc/chell@5.9.7","body":"","internal":true}]},{"version":"0.4.4","date":"2026-10-01","merge":"0491d58506dd","bump":"patch","changes":[{"hash":"88437cc","headline":"A tab icon: the ChRIS mark on the page's own ground, for the surface and for the door.","body":"","internal":false},{"hash":null,"headline":"Updated dependencies [4864a34] - @fnndsc/menu@0.14.0 - @fnndsc/calypso@0.16.10 - @fnndsc/chell@5.9.6","body":"","internal":true}]},{"version":"0.4.3","date":"2026-10-01","merge":"5625f543f8f6","bump":"patch","changes":[{"hash":"b5bb197","headline":"The greeter settles a boot row where it stands: the outcome of a `[PENDING]` or `[RETRY]` step replaces that row instead of appending beneath it.","body":"","internal":false}]},{"version":"0.4.2","date":"2026-10-01","merge":"1b77ac182c25","bump":"patch","changes":[{"hash":"cbd71cc","headline":"A refused file read says why: the kernel names the status and reason (403 not yours to read, 404 no such file, 502 CUBE could not serve it), `/vfs` answers with them instead of 404 for everything, and an image pane that lost a slice reads the reason out.","body":"`porter --end <who>` ends one session so the next login boots on the current kernel.","internal":false},{"hash":null,"headline":"Updated dependencies [cbd71cc] - @fnndsc/calypso@0.16.9","body":"","internal":true}]},{"version":"0.4.1","date":"2026-09-27","merge":"f3d2d7ed3d72","bump":"patch","changes":[{"hash":"ef542cd","headline":"`PORTER_SOUNDS_DIR` actually answers: the mount hands the route `/sounds/press.mp3` with its leading slash, which the sound match did not allow, so every sound was proxied to the page's own.","body":"Route-level test added.","internal":false}]},{"version":"0.4.0","date":"2026-09-27","merge":"49033a576021","bump":"minor","changes":[{"hash":"c6d8161","headline":"`PORTER_SOUNDS_DIR`: a folder of sounds the porter serves in place of the page's own (`/s/<key>/sounds/<name>.mp3|wav|ogg`, bare names only), so a deployment's original LCARS beeps — never in a package — live outside the install and survive an upgrade.","body":"","internal":false}]},{"version":"0.3.5","date":"2026-09-26","merge":"a1a7cf9a2b2d","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [fbd3f0a]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [fbd3f0a] - @fnndsc/menu@0.13.0 - @fnndsc/chell@5.9.5 - @fnndsc/calypso@0.16.8","body":"","internal":true}]},{"version":"0.3.4","date":"2026-09-26","merge":"70016c84b4f0","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [f571a14]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [d1da8ac]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [0f9ae74]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [d8e160c] - @fnndsc/chell@5.9.4 - @fnndsc/menu@0.12.0 - @fnndsc/calypso@0.16.7","body":"","internal":true}]},{"version":"0.3.3","date":"2026-09-24","merge":"646a384af419","bump":"patch","changes":[{"hash":"98b839f","headline":"A session whose daemon died is no longer proxied to the dead port: a login that boots a new daemon replaces the stale entry, and a mount whose daemon does not answer follows the session to its new berth or sends the browser to the door, instead of a bare 500 ECONNREFUSED.","body":"","internal":false}]},{"version":"0.3.2","date":"2026-09-22","merge":"2356c7db39f7","bump":"patch","changes":[{"hash":"05b9b41","headline":"porter: `porter --status` marks the pid on a gone row as stale.","body":"The berth outlives a daemon killed with -9, and the bare number read as a process the listing had just made. - @fnndsc/calypso@0.16.2","internal":false}]},{"version":"0.3.1","date":"2026-09-22","merge":"c1b0be0099d8","bump":"patch","changes":[{"hash":null,"headline":"Updated dependencies [dac2d96]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [dac2d96]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [50f8a4e]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [c82f514] - @fnndsc/chell@5.9.1 - @fnndsc/menu@0.11.0 - @fnndsc/calypso@0.16.1","body":"","internal":true}]},{"version":"0.3.0","date":"2026-09-22","merge":"61536c94c899","bump":"minor","changes":[{"hash":"b58f4da","headline":"porter: published.","body":"`npm install -g @fnndsc/porter` brings the whole stack beneath it, and `PORTER_CUBE_URL=… porter` is the full login experience from one install. `@fnndsc/menu` is a declared dependency, since the greeter serves its brain and ANSI modules from where menu is installed.","internal":false},{"hash":"2b18178","headline":"porter: `porter --status` asks for nothing but the state directory.","body":"It read the full configuration first and refused without `PORTER_CUBE_URL`, a fact a listing never uses.","internal":false}]},{"version":"0.2.0","date":"2026-09-21","merge":"576426874567","bump":"minor","changes":[{"hash":"3a8cd1b","headline":"A porter at the door: the mise display manager, slice 3 — the shape without the door.","body":"`apps/porter` logs an operator into one CUBE, trades the password for a token, starts or joins that identity's calypso (`chell --daemon --auth-token-stdin`, the token on stdin, four directories of its own under the porter's state) and mounts the session at `/s/<key>/`: page, assets, `/vfs` and the WebSocket wire proxied to the daemon on loopback with the attach token added by the porter, so the browser holds none. `GET /boot/<key>` streams the session's boot as server-sent events, one per line the daemon wrote, replayed for a late attacher. `POST /sessions` re-checks the password at CUBE every time, even when the session is up.\n\ncalypso: the attach token may ride the upgrade URL (`?token=`), the way `/vfs?token=` already does, so a front that holds the token for a browser can put it on the proxied upgrade and the page attaches with an empty one; and `berth_pathIn(runtimeDir, identity)` names a berth under a runtime directory that is not the process's own.\n\nNo cookie yet: this porter binds loopback. The door — login page, cookie, LOG OUT — is the next slice.","internal":false},{"hash":"4ee180c","headline":"A session outlives its door: the porter's lifecycle.","body":"porter: a restarted porter adopts the sessions its predecessor started, from their berths under the state directory, rather than starting rivals. Idle sessions — no wire open, nothing through the door for `PORTER_IDLE_HOURS` (a day, like the cookie) — are ended by a sweep every minute: the process only; the state directory stays and the next login boots warm. `porter --status` lists the state directory's sessions and whether each answers. `deploy/` carries a systemd unit (a `porter` user, `KillMode=process` so a stopped door keeps its sessions), an env file example, and a Caddyfile for TLS in front. Boot lines kept per session are capped at 2000.\n\ncalypso: a berth records the daemon's pid, so a host that did not start a daemon can still end it.\n\nchell: a daemon off a TTY tolerates EPIPE on its stdout and stderr — the porter that started it may stop first, and a session outlives its door.","internal":false},{"hash":"21f8d21","headline":"The door itself: the porter logs a browser in and argus leaves by the door it came in.","body":"porter: `GET /login` asks for a username and a password; `POST /login` (form or JSON) trades the password for a CUBE token, starts or joins the session, sets a signed HttpOnly SameSite=Lax cookie naming it (Secure behind TLS, a day long by default) and sends the browser to `/s/<key>/?door`. The cookie gates the boot stream, the mount and the wire: a browser reaches only the session its cookie names; without it, the door (302), a refusal (401) or a dropped upgrade. `POST /logout` clears the cookie and leaves the session running. `PORTER_SECRET` signs the cookie; given none, one is made up per start and said so.\n\nargus: a LOG OUT pill beside AUDIO and the theme, in the frame's hue, standing only on a page that came through a door; pressed, it tells the door to forget this browser and goes to the door's login. The session is not touched. Law: a-surface-leaves-by-the-door-it-came-in.","internal":false},{"hash":"1c169d7","headline":"The greeter: the door answers at once, and a boot is watched rather than waited for.","body":"porter: `POST /login` no longer holds the browser for a cold boot. A session already up is entered directly; one that must boot sends the browser to `/greet/<key>`, where the mise brain wakes — the same frames a terminal boot draws, paced by the page — and the daemon's boot rows arrive beneath it as they are written, ANSI and all, from the boot stream. `ready` rests the brain and hands the browser to the session; `failed` says why and offers the door again. The login page wears the same shell with the brain at rest. The porter serves the two modules it draws with from the installed wire package (`/greeter/brain.js`, `/greeter/ansi.js`); a booting identity is pending in the registry and reaches its mount only when its berth answers.\n\nmenu: `@fnndsc/menu/ansi` — the ANSI-to-HTML converter and the console palette, moved from the ARGUS console so a browser greeter renders a boot the way the console renders a transcript; argus keeps the DOM half and re-exports the rest.","internal":false},{"hash":null,"headline":"Updated dependencies [d1a1c0d]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [3a8cd1b]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [1bdf876]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [4ee180c]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [c1178a0]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [5b520c7]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [810f3ba]","body":"","internal":true},{"hash":null,"headline":"Updated dependencies [7bba167] - @fnndsc/calypso@0.16.0 - @fnndsc/chell@5.9.0","body":"","internal":true}]}]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fnndsc/porter",
3
- "version": "0.6.0",
3
+ "version": "0.6.1",
4
4
  "description": "PORTER: the mise display manager — logs an operator in, finds or starts their calypso, and shows them to argus",
5
5
  "type": "module",
6
6
  "main": "dist/porter.js",
@@ -19,7 +19,7 @@
19
19
  "@fastify/formbody": "^9.0.0",
20
20
  "@fastify/reply-from": "^12.6.5",
21
21
  "@fnndsc/calypso": "^0.19.6",
22
- "@fnndsc/chell": "^5.11.0",
22
+ "@fnndsc/chell": "^5.11.1",
23
23
  "@fnndsc/menu": "^0.19.0",
24
24
  "fastify": "^5.12.5",
25
25
  "ws": "^8.18.0",