Commit Graph
14801 Commits
Author SHA1 Message Date
Ruben FiszelandClaude Opus 5 1662dfbc33 fix: a failed anchor read is not a raced deploy, and take latest closes only its own drawer
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 18:20:06 +02:00
Ruben FiszelandClaude Opus 5 2d0a4f777f fix: session tabs compare the same base pair, and a consumed draft is not out of date
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 17:38:42 +02:00
Ruben FiszelandClaude Opus 5 168ef0c6f5 fix: an emptied selection is no shift anchor, and a deploy leaves no draft for the prompt to compare
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 17:15:29 +02:00
Ruben FiszelandClaude Opus 5 0a6d49800e fix: a group member can be told where their item went, and a deploy names the head's author
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 16:50:42 +02:00
Ruben FiszelandClaude Opus 5 5baae5c3d1 docs: the raw-app deploy comment says what that editor actually does with version
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 16:23:26 +02:00
Ruben FiszelandClaude Opus 5 61d13cb72e fix: the route's lineage follows an in-place deploy, and the raw-app editor's event type carries the head
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 16:22:51 +02:00
Ruben FiszelandClaude Opus 5 b95cc73857 fix: the derived base is read after the sanitizer, and a deploy that claims nothing leaves no base to compare
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 15:56:26 +02:00
Ruben FiszelandClaude Opus 5 4f3d99c65b fix: a deploy always names the head it left behind, and pins a base only when it can claim one
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 15:34:04 +02:00
Ruben FiszelandClaude Opus 5 c037b3e97b fix: a deploy claims only the version it appended to the head it read, and names the head separately
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 15:05:06 +02:00
Ruben FiszelandClaude Opus 5 04bae85e93 refactor: pin the version this deploy wrote even when one landed on top, and tighten three comment blocks
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 14:46:53 +02:00
Ruben FiszelandClaude Opus 5 8a05c7a8aa fix: the deploy-override diff takes an opening its editor can hand back
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 14:23:39 +02:00
Ruben FiszelandClaude Opus 5 03ec3fde2f fix: an app deploy pins only a version it wrote as the next draft's base
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 14:21:27 +02:00
Ruben FiszelandClaude Opus 5 a149ba9231 fix: abandoning an opening clears the drawer it still owns
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 13:50:06 +02:00
Ruben FiszelandClaude Opus 5 bd2616c5af fix: the no-op routed discard gates its answer on reading the destination, and a session draft keeps its unknown base
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 13:37:54 +02:00
Ruben FiszelandClaude Opus 5 1cd0ee680b fix: a no-op routed discard names the destination only to someone who could write there
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 12:49:13 +02:00
Ruben FiszelandClaude Opus 5 5b4d745b55 fix: a retried routed discard still names the destination, and filling the drawer takes the opening too
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 12:32:23 +02:00
Ruben FiszelandClaude Opus 5 7b490b87a8 fix: taking the diff drawer without a token claims it, and the classic app editor takes one
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 12:13:37 +02:00
Ruben FiszelandClaude Opus 5 f71262dc7f fix: the drawer owns its opening, a loaded script draft keeps no base it lacks, and a legacy occupant says who can clear it
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 11:54:01 +02:00
Ruben FiszelandClaude Opus 5 d3b87cf70b fix: a legacy draft occupies its destination, a superseded opening writes nothing, and a loaded flow draft keeps no base it lacks
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 11:15:11 +02:00
Ruben FiszelandClaude Opus 5 493448b2ce fix: a routed discard names where it landed, a superseded drawer opening is dropped, and a loaded draft keeps its base in every editor
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 10:31:49 +02:00
Ruben FiszelandClaude Opus 5 c80f3f5293 fix: a loaded raw-app draft keeps its own fork base, and an unknown head is refused
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 09:59:10 +02:00
Ruben FiszelandClaude Opus 5 201945146b fix: a NUL in a move's summary is dropped, and take latest simply adopts the head it was handed
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 09:46:54 +02:00
Ruben FiszelandClaude Opus 5 9237a93783 fix: the flow drawer's head is the version its payload came from, and its callback type says so
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 09:34:03 +02:00
Ruben FiszelandClaude Opus 5 f5c97aae13 fix: a head nobody could name is not behind, so take latest is not offered without one
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 09:20:06 +02:00
Ruben FiszelandClaude Opus 5 062adc284b feat: take latest adopts the head the diff shows, and is offered while the drawer sees the draft behind
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 09:02:51 +02:00
Ruben FiszelandClaude Opus 5 194c3218d8 fix: taking the latest moves the head each editor knows, not just the base
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 08:47:47 +02:00
Ruben FiszelandClaude Opus 5 a4da7d3ee6 fix: take latest re-reads the head at click time; type the kept head as prepared diff data
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 01:26:36 +02:00
Ruben FiszelandClaude Opus 5 19226a1783 fix: say so when a version fails to load in the diff picker
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 01:15:23 +02:00
Ruben FiszelandClaude Opus 5 1c035e44ab fix: the picker marks the version on display as head, restore compares the head, relocation follows the last move
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 01:14:59 +02:00
Ruben FiszelandClaude Opus 5 8146737342 fix: a failed version load keeps the picker on what the diff shows; one spelling for a legacy delete
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 00:55:55 +02:00
Ruben FiszelandClaude Opus 5 d5d04c2fb1 fix: a legacy discard follows the item's move record too
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 00:34:58 +02:00
Ruben FiszelandClaude Opus 5 7a345b6c7e fix: count picker load generations, and report a skipped legacy upsert as a conflict
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 00:31:09 +02:00
Ruben FiszelandClaude Opus 5 f007ce8e8e fix: a poisoned draft's path keys follow a move, legacy only bypasses routing on a delete, picker loads are generation-guarded
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 00:16:07 +02:00
Ruben FiszelandClaude Opus 5 0a1dca929b fix: a redeploy ends a route off its path, take-latest persists on raw apps, stale picker loads are dropped
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 00:00:30 +02:00
Ruben FiszelandClaude Opus 5 f9123297b8 fix: an owner move extends only the item's own route, not another user's
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 23:44:21 +02:00
Ruben FiszelandClaude Opus 5 9287a3120a fix: move records follow an account rename and deletion; a legacy draft says why it cannot move
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 23:24:01 +02:00
Ruben FiszelandClaude Opus 5 436aac162a fix: a workspace clone sanitizes a NUL-bearing draft instead of copying it unstripped
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 23:02:59 +02:00
Ruben FiszelandClaude Opus 5 73b16863c0 fix: a clone keeps only a base it can resolve; a base-unknown script deploys without a false guard
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 22:48:00 +02:00
Ruben FiszelandClaude Opus 5 29e75d27d5 fix: an unknown base stays unknown in every loader, and an owner move extends an item move
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 22:32:28 +02:00
Ruben FiszelandClaude Opus 5 733ef9c3b8 test: pin a teammate's carried draft; name the kind that refuses a draft move
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 21:55:24 +02:00
Ruben FiszelandClaude Opus 5 68cd7a4420 fix: a draft-only app move refuses the other app kind; a session keeps an unknown base unknown
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 20:51:14 +02:00
Ruben FiszelandClaude Opus 5 ee2c2abcb9 fix: session loaders keep a draft's base, and a failed relocation flush stays put
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 20:15:04 +02:00
Ruben FiszelandClaude Opus 5 ccea81f5e9 refactor: the server follows a moved draft through a move record, not client-sent row ids
A move writes old path -> new path (per workspace and kind, per owner for a
draft-only move) in its transaction; a draft save or discard addressed to a
path the caller has no draft at resolves through it and keeps the moved
draft's path keys. Creating an item at a path drops the records leaving it.
Every writer (edit routes, sessions, chat, CLI, the tab-close flush) follows
without passing an id, so the id plumbing is gone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 19:14:26 +02:00
Ruben FiszelandClaude Opus 5 1005868e41 fix: guard a base-unknown raw-app deploy against the head at load; keep the base in session hydration
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 17:21:18 +02:00
Ruben FiszelandClaude Opus 5 e9a1276f65 fix: session editors save by draft id; raw apps keep a legacy draft's base unknown
Also advance the raw-app base on deploy, relocate once per move, drop the
hoisted operator check and the unread base on drafts/list.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 17:00:32 +02:00
Ruben FiszelandClaude Opus 5 a3cea5184f fix: look up a script's head at its row path, and show flow and app version ids bare
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 16:22:56 +02:00
Ruben FiszelandClaude Opus 5 7ac3aed2ef fix: write a followed draft by id against the row's own path keys; keep base on assign and clone
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 16:18:43 +02:00
Ruben FiszelandClaude Opus 5 ae6d37fdf8 fix: follow a moved draft on tab close, and deploy a followed flow at its new path
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 16:03:00 +02:00
Ruben FiszelandClaude Opus 5 1d09ab4fe5 fix: a moved draft's path keys follow it, and a refused rename names the draft's owner
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 16:03:00 +02:00
Ruben FiszelandClaude Opus 5 ec18392e75 chore: drop the draft_id_seq grant; the draft upsert runs on the raw pool
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-14 16:02:51 +02:00