Conversation
Coverage
|
|
🔗 Preview: https://blit-n89ed9tgj-indent.vercel.app |
pcarrier
force-pushed
the
fs
branch
2 times, most recently
from
July 24, 2026 17:28
7d15061 to
fe2e83c
Compare
pcarrier
added a commit
that referenced
this pull request
Jul 25, 2026
One squashed branch: the blit IDE grown from PR #85's fs/git/lsp foundations, plus the server KV store that makes editor state host-owned. UI (js/ui): - Left dock (Files / Commit log / Problems) as pure views over ref-counted IdeSessions; follows the focused pane's root and a terminal's live cwd (re-roots on cd outside, reveals inside). - IDE tiles — editor / staged / unstaged / untracked / worktree diffs / commit — placed in BSP panes or the non-BSP view, always in the focused pane; drag-and-drop into any pane; per-pane back/forward navigation history; recoverable background dock with read-only zoomed-out previews; auto-backgrounding on displacement. - CodeMirror editor: CAS saves with conflict/external-change banners, autosave on blur/hide/teardown, per-file cursor+scroll memory, on-demand language loading (@codemirror/language-data), LSP squiggles + F12/⇧F12/⌘-click navigation with re-establish retries. - All tile chrome (filename, view switcher, dirty state, actions) lives in the status bar, not per-tile headers. - Commit log renders the DAG; commit tiles show the full patch and jump into live files; diffs open the editor from the line gutter. Server KV store (docs/design/kv.md; crates/remote kv codecs, crates/server redb-backed store, js/core client surface): - Host-local CAS byte map, BLAKE3-128 preconditions, prefix watches, budgets with refusal-over-eviction; FEATURE_KV bit 9, 0x70 opcodes. - Consumers: parked dirty buffers (unsaved edits survive reload, crash, and save-conflicts, restored with the dirty flag), a tab registry giving every open tile a deterministic short id used by URL hashes (tile=conn:id, a=pane:t:conn:id — the encoded-assignment format is gone), and workspace roots moved out of the gateway config into a CAS'd per-server document (gateway list seeds it, then remains only for servers without the store). Protocol/server also: FS_SEARCH fuzzy file search, git DAG log pagination, LSP warm backends with the unified status discipline, and the blake3_128 helper shared across stores. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
pcarrier
added a commit
that referenced
this pull request
Jul 26, 2026
One squashed branch: the blit IDE grown from PR #85's fs/git/lsp foundations, plus the server KV store that makes editor state host-owned. UI (js/ui): - Left dock (Files / Commit log / Problems) as pure views over ref-counted IdeSessions; follows the focused pane's root and a terminal's live cwd (re-roots on cd outside, reveals inside). - IDE tiles — editor / staged / unstaged / untracked / worktree diffs / commit — placed in BSP panes or the non-BSP view, always in the focused pane; drag-and-drop into any pane; per-pane back/forward navigation history; recoverable background dock with read-only zoomed-out previews; auto-backgrounding on displacement. - CodeMirror editor: CAS saves with conflict/external-change banners, autosave on blur/hide/teardown, per-file cursor+scroll memory, on-demand language loading (@codemirror/language-data), LSP squiggles + F12/⇧F12/⌘-click navigation with re-establish retries. - All tile chrome (filename, view switcher, dirty state, actions) lives in the status bar, not per-tile headers. - Commit log renders the DAG; commit tiles show the full patch and jump into live files; diffs open the editor from the line gutter. Server KV store (docs/design/kv.md; crates/remote kv codecs, crates/server redb-backed store, js/core client surface): - Host-local CAS byte map, BLAKE3-128 preconditions, prefix watches, budgets with refusal-over-eviction; FEATURE_KV bit 9, 0x70 opcodes. - Consumers: parked dirty buffers (unsaved edits survive reload, crash, and save-conflicts, restored with the dirty flag), a tab registry giving every open tile a deterministic short id used by URL hashes (tile=conn:id, a=pane:t:conn:id — the encoded-assignment format is gone), and workspace roots moved out of the gateway config into a CAS'd per-server document (gateway list seeds it, then remains only for servers without the store). Protocol/server also: FS_SEARCH fuzzy file search, git DAG log pagination, LSP warm backends with the unified status discipline, and the blake3_128 helper shared across stores. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
pcarrier
added a commit
that referenced
this pull request
Jul 26, 2026
One squashed branch: the blit IDE grown from PR #85's fs/git/lsp foundations, plus the server KV store that makes editor state host-owned. UI (js/ui): - Left dock (Files / Commit log / Problems) as pure views over ref-counted IdeSessions; follows the focused pane's root and a terminal's live cwd (re-roots on cd outside, reveals inside). - IDE tiles — editor / staged / unstaged / untracked / worktree diffs / commit — placed in BSP panes or the non-BSP view, always in the focused pane; drag-and-drop into any pane; per-pane back/forward navigation history; recoverable background dock with read-only zoomed-out previews; auto-backgrounding on displacement. - CodeMirror editor: CAS saves with conflict/external-change banners, autosave on blur/hide/teardown, per-file cursor+scroll memory, on-demand language loading (@codemirror/language-data), LSP squiggles + F12/⇧F12/⌘-click navigation with re-establish retries. - All tile chrome (filename, view switcher, dirty state, actions) lives in the status bar, not per-tile headers. - Commit log renders the DAG; commit tiles show the full patch and jump into live files; diffs open the editor from the line gutter. Server KV store (docs/design/kv.md; crates/remote kv codecs, crates/server redb-backed store, js/core client surface): - Host-local CAS byte map, BLAKE3-128 preconditions, prefix watches, budgets with refusal-over-eviction; FEATURE_KV bit 9, 0x70 opcodes. - Consumers: parked dirty buffers (unsaved edits survive reload, crash, and save-conflicts, restored with the dirty flag), a tab registry giving every open tile a deterministic short id used by URL hashes (tile=conn:id, a=pane:t:conn:id — the encoded-assignment format is gone), and workspace roots moved out of the gateway config into a CAS'd per-server document (gateway list seeds it, then remains only for servers without the store). Protocol/server also: FS_SEARCH fuzzy file search, git DAG log pagination, LSP warm backends with the unified status discipline, and the blake3_128 helper shared across stores.
Server-owned state, streamed as ordered diffs, beyond the terminal grid — and an IDE built on it. Protocol families: filesystem sync with CAS writes (FS_*, bit 6), git introspection (GIT_*, bit 7), language intelligence via server-terminated LSP (LSP_*, bit 8), and a host-local CAS KV store (KV_*, bit 9; docs/design/kv.md) — redb-backed, BLAKE3-128 preconditions, prefix watches. IDE (js/ui): a left dock (Files / Commit log / Problems) that follows the focused pane's root and the terminal's cwd; editor/diff/commit tiles in BSP panes with drag-and-drop, per-pane nav history, and a background dock of read-only previews; a CodeMirror editor with CAS saves, autosave, LSP navigation, all chrome in the status bar, and a Ctrl+? shortcut overlay covering it all. Live LSP: the editor streams its buffer to the server as the LSP byte source (LSP_BUFFER), so diagnostics, completion, and signature help track keystrokes instead of saves — CM6 autocomplete (Tab/Enter accept, Ctrl+Space explains itself when it can't answer) and an active-parameter tooltip, backed by two new query kinds (docs/design/lsp.md). Server-side editor state: unsaved buffers park in the KV store and survive reload/crash/save-conflicts; every open tile gets a deterministic short id, so URL hashes are tile=conn:id instead of encoded assignments; declared workspace roots live in a CAS'd per-server document, shared by every client of that host. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Explorer file operations (docs/design/fs-write.md FS_OP, which the protocol and server already carried): a right-click menu with inline create-file / create-folder rows, rename-in-place (slashes move, with parent creation — rename and move are one op), a two-step delete, and drag-a-row-onto-a-directory move. Creating a file opens its editor; every result streams back through the watcher. Failures flash in the panel. Codec fix this surfaced: fsCompressLiteral emitted a bare size prefix for empty input, but an LZ4 block needs one 0x00 token even for zero output — lz4_flex rejects the bare form and the server dropped the whole message, so empty-file writes (and LSP_BUFFER releases) vanished silently. Pane focus: cycling with Ctrl+[ / ] now stops the event outright (an editor would also indent on non-mac, a terminal would forward ESC), and focusing an editor pane focuses CodeMirror's editable content — the comma-list selector returned the first match in document order, which is the scroller, leaving the editor without keyboard focus or a visible cursor. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Server-owned state, streamed as ordered diffs, beyond the terminal grid — and an IDE built on it.
Protocol families: filesystem sync with CAS writes (
FS_*, bit 6), git introspection (GIT_*, bit 7), language intelligence via server-terminated LSP (LSP_*, bit 8), and a host-local CAS KV store (KV_*, bit 9; docs/design/kv.md) — redb-backed, BLAKE3-128 preconditions, prefix watches.IDE (js/ui): a left dock (Files / Commit log / Problems) that follows the focused pane's root and the terminal's cwd; editor/diff/commit tiles in BSP panes with drag-and-drop, per-pane nav history, and a background dock of read-only previews; a CodeMirror editor with CAS saves, autosave, LSP navigation, all chrome in the status bar, and a Ctrl+? shortcut overlay covering it all.
Live LSP: the editor streams its buffer to the server as the LSP byte source (
LSP_BUFFER), so diagnostics, completion, and signature help track keystrokes instead of saves — CM6 autocomplete (Tab/Enter accept, Ctrl+Space explains itself when it can't answer) and an active-parameter tooltip, backed by two new query kinds (docs/design/lsp.md).Server-side editor state: unsaved buffers park in the KV store and survive reload/crash/save-conflicts; every open tile gets a deterministic short id, so URL hashes are
tile=conn:idinstead of encoded assignments; declared workspace roots live in a CAS'd per-server document, shared by every client of that host.🤖 Generated with Claude Code