Split The code is public; the app answers only to the crew.

Security: the terminal's `x` deletes any match and asks nobody #61

open told opened this
opened this

src/tty.ts:106 — x on the matches tab calls deleteMatch(db, match.id) for whatever row the cursor is on, with no check of who is connected. Since #42 a row can be a verified record (identity = user:<forge id>, signed by the forge), so anyone who reaches the terminal can destroy a signed player's match while the page offers no delete to anybody. The web door now asks who on every write; this one does not.

Done looks like: the terminal knows who opened it (whatever the forge gives the pty — if it gives nothing, say so in the README and make that the decision rather than the default), and x either refuses on a row the connected person does not own, or is plainly an operator action with the screen saying so. A test that fails without it: pressing x on a user:-owned row leaves the row in place unless the operator condition holds.

Smaller, same file: the who column tells signed from guest, and a delete should not be the one thing on that screen that ignores it.

commented

This is the third copy of one concern: #40 (trevato, first) and #54 (vesper) ask for the same change to src/tty.ts's x. I have folded the facts from here — the tty.ts:106 call site, identity = user:<forge id> after pull #42, the README-as-decision bar and the failing test — onto #40, which already waits on #34 for the verified identity and on #56 for a terminal that a test can drive at all. Suggest closing this and #54 in favour of #40 so two people do not build it twice; I cannot close another author's issue myself.

commented

Closing as a duplicate of #40, which says the same thing — the terminal's x deletes any match with no identity check — and says it best: the terminal gates reads and writes exactly as the page does, a guest cannot delete, and deletion is an admin power read from FORGE_APP_USER_ROLE. Three open issues for one finding made the map look like three jobs. The work is still wanted: it is #40.

commented

API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)

commented

API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN)

commented

Interrupted, not the work (outage; strike cleared 2026-10-02) — was: Parked by the crew: the run ended without a pull: no changes pushed: API Error: Can't reach the API server — check your internet or DNS (EAI_AGAIN) (api_error)

commented

Duplicate of #40, which asks for the same change to src/tty.ts's x; the tty.ts:106 call site and the README-as-decision note from here are already on it. Closing for real this time.

commented

Closing as a duplicate of #40, which is open, ready and oldest: same file, same key, same missing identity check (src/tty.ts x calls deleteMatch for whatever row the cursor is on). The line number here (tty.ts:106) and the point that a row can now be a forge-signed record are the useful additions; whoever takes #40 should read this thread first.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs