Commit Graph

544 Commits

Author SHA1 Message Date
Levi Neuwirth a8f1283581 docs: frame tab-width rendering parity
Define the fixed cross-frontend tab-stop contract, GPU source projection and mapping rules, core display-width consolidation, minimap behavior, and acceptance gates.
2026-07-22 14:25:19 -04:00
Levi Neuwirth 40111dc2b0
Merge pull request #136 from levineuwirth/locals-query-handoff
Record landed locals-query processing
2026-07-22 17:49:41 +00:00
Levi Neuwirth 6ad3b88854 docs: record landed locals-query processing
Mark PR #134 as shipped in the durable handoff, framing, and side-quest
backlog. Remove the completed volatile lane and advance the canonical recovery
anchor to the merge commit.
2026-07-22 13:30:07 -04:00
Levi Neuwirth 8cbb9f4377
Merge pull request #134 from levineuwirth/locals-query-processing
Process Tree-sitter locals queries
2026-07-22 17:24:49 +00:00
Levi Neuwirth e5db4a98f8 test: enforce locals-query coverage
Assert that every bundled local-sensitive highlight query has a non-empty,
compilable locals query. Clarify the upstream-parity worst-case complexity of
lexical reference resolution in the framing document.
2026-07-22 13:05:33 -04:00
Levi Neuwirth 08ea6a3e12 docs: record locals-query pull request
Link PR #134 from the durable handoff and active-work lane now that the
implementation is published for review.
2026-07-22 12:31:18 -04:00
Levi Neuwirth cdeb5fb7cd docs: record locals-query implementation lane
Replace the obsolete fail-closed locals note with the settled lexical-facts
contract and record the feature branch, verification, and recovery commands in
the active-work ledger.
2026-07-22 12:29:39 -04:00
Levi Neuwirth 47ffe5dcff syntax: process bundled locals queries
Compile grammar locals metadata, resolve lexical definitions and references
once per settled layer, and apply local property predicates in both highlight
producers. Restore non-shadowed JavaScript builtins while suppressing local
shadows, with lexical, viewport, render, and edit-freshness regressions.
2026-07-22 12:28:31 -04:00
Levi Neuwirth 42a28b90c7 docs: frame locals-query processing
Define grammar locals metadata, lexical resolution semantics, shared local
predicate filtering, settle-time caching, producer coverage, and acceptance
criteria for shadowed versus non-shadowed builtins.
2026-07-22 12:03:37 -04:00
Levi Neuwirth 8bd82981f5
Merge pull request #133 from levineuwirth/modeline-handoff
Record landed modeline detection
2026-07-22 15:47:15 +00:00
Levi Neuwirth 9b8b312848 docs: record landed modeline detection
Advance the durable baseline to PR #132, remove the completed volatile lane,
and record the shared language pin, bounded modeline contract, Vterm Stage 2
landing, remaining deferrals, and current roadmap state.
2026-07-22 11:30:45 -04:00
Levi Neuwirth 1dd47fcad1
Merge pull request #132 from levineuwirth/modeline-detection
Detect language from modelines
2026-07-22 15:24:25 +00:00
Levi Neuwirth b45e5ee5ec Merge canonical main into modeline detection
Integrate landed Vterm Stage 2 before the approved modeline merge. Preserve the
active modeline lane in the volatile ledger and record the full integrated gate
results.
2026-07-22 10:56:35 -04:00
Levi Neuwirth 86fc1bccae
Merge pull request #130 from levineuwirth/vterm-tui
feat(vterm): compose terminal views in the TUI
2026-07-22 14:48:04 +00:00
Levi Neuwirth 506912a069 docs(vterm): record current-main integration gates
Record the resolved mode-system integration head, exact post-integration
verification, and isolated M4 timeout reruns before the authorized merge.
2026-07-22 10:29:54 -04:00
Levi Neuwirth 3f0252fb97 Merge canonical main into vterm-tui
Integrate mode-system wiring and handoff updates before PR #130 lands.
Preserve per-frontend terminal dispatch while resolving major-mode keymaps,
and expose mode, terminal, and LSP statusline providers together.
2026-07-22 10:28:56 -04:00
Levi Neuwirth 88a371efdb docs: checkpoint modeline implementation
Record the implementation head, completed acceptance contract, full gate
results, and pull-request handoff for modeline detection.
2026-07-22 10:02:54 -04:00
Levi Neuwirth f8d05d2134 feat: detect language from modelines
Parse bounded Emacs and Vim modelines, normalize common aliases, and give
explicit file metadata precedence over inferred language. Pin one fresh-load
language decision for syntax, LSP, pairing, comments, and initial major mode,
while preserving the LSP path guard and explicit mode overrides.

Cover supported forms, rejection boundaries, precedence, unknown modes,
shebang and modeline pinning, reopen behavior, and pathless buffers.
2026-07-22 10:02:20 -04:00
Levi Neuwirth d5e59a9dcf docs: approve modeline detection framing
Record user approval of Revision 2 and mark implementation active in the
isolated modeline lane.
2026-07-22 09:44:35 -04:00
Levi Neuwirth f521413bce docs: checkpoint revised modeline framing
Record the review-complete Revision 2 framing head and approval boundary in
the active-work ledger.
2026-07-22 09:41:25 -04:00
Levi Neuwirth 6b4f3c3b38 docs: correct Vim modeline framing
Match Vim's real direct and set-form tokenization, reject nonexistent colon
assignments, clarify suffix scanning and trust, extend aliases, and pin the
shebang-edit regression in acceptance.
2026-07-22 09:41:06 -04:00
Levi Neuwirth 49efa805b5 docs(vterm): record PR 130 review round 2
Update the durable handoff and active-work ledger with the second-review
fix checkpoint and exact final gate evidence.

Co-authored-by: OpenAI Codex <codex@openai.com>
2026-07-22 09:10:30 -04:00
Levi Neuwirth b9a7e40855 fix(vterm): harden view anchors and interactive authority
Clamp anchors into partially evicted wrapped lines, require authenticated
interactive origins, and avoid per-mouse cell snapshots. Restore dispatcher
rationale, named context errors, and focused regressions for the corrected
contracts.

Co-authored-by: OpenAI Codex <codex@openai.com>
2026-07-22 09:09:44 -04:00
Levi Neuwirth 5a39ac4a9c docs: record modeline framing lane
Advance the canonical base after the mode-system handoff merge and preserve
the draft modeline framing branch, checkpoint, scope, and recovery command.
2026-07-22 09:05:49 -04:00
Levi Neuwirth 47a7f4cefd docs: frame modeline language detection
Define bounded Emacs and Vim modeline parsing, alias normalization,
explicit precedence, one pinned language decision shared by syntax and LSP,
and the acceptance contract for load-time mode detection.
2026-07-22 09:05:02 -04:00
Levi Neuwirth d5d9b9c1ca
Merge pull request #131 from levineuwirth/mode-system-handoff
Record landed mode system
2026-07-22 12:50:12 +00:00
Levi Neuwirth aafa47514c docs: record landed mode system
Move mode-system wiring from the active ledger into the durable handoff,
refresh the side-quest priorities, and preserve the macOS acceptance lessons
from the final CI review round.
2026-07-22 08:40:35 -04:00
Levi Neuwirth b4b925df49
Merge pull request #129 from levineuwirth/mode-system-wiring
Wire major modes through key dispatch
2026-07-22 12:38:16 +00:00
Levi Neuwirth 2e332b579c docs(vterm): record PR 130 review round 1
Align the durable handoff with the approved escape-prefix contract, record the performance and lifecycle hardening, update the Stage 2 verification map, and publish exact final gate evidence in the active-work ledger.
2026-07-22 08:29:33 -04:00
Levi Neuwirth 1b4d022fd1 test: preserve mode segments with long paths
Widen the daemon acceptance grid so each split can show a macOS temporary
path and the following mode segment without protected-right clipping.
2026-07-22 08:28:57 -04:00
Levi Neuwirth 8702791de9 fix(vterm): honor terminal escape and view contracts
Require the fixed C-c escape before editor-local terminal bindings, reject context-implicit Lua operations from document windows, and make controller replacement atomic per frontend. Borrow screen rows during view projection instead of deep-cloning retained history, preserve view anchors through zero-area layouts, and remove redundant detach paths.

Add focused child-input coverage for unescaped bound keys and C-c C-c, plus controller, zero-area, context-error, and clone-free projection assertions.

Co-authored-by: OpenAI Codex <codex@openai.com>
2026-07-22 08:28:18 -04:00
Levi Neuwirth 4c382ae797 fix: harden mode acceptance startup
Give the daemon its normal five-second handshake window before switching
the mode-system acceptance client to short frame polling. Document reload
and session-persistence boundaries and correct stale describe-key guidance.
2026-07-22 08:18:18 -04:00
Levi Neuwirth 6725e9a598 docs(active-work): record Vterm Stage 2 PR
Record the published branch checkpoint and PR #130 as the active review lane. Preserve the explicit no-merge-without-authorization boundary.
2026-07-21 21:40:48 -04:00
Levi Neuwirth d2fca0c3ad docs(active-work): record gated Vterm Stage 2 lane
Replace the obsolete framing-only recovery entry with the integrated branch head, exact verification evidence, and portable worktree command.
2026-07-21 21:39:17 -04:00
Levi Neuwirth da8f6aeae4 fix(vterm): harden integrated Stage 2 behavior
Resolve post-main integration drift in authenticated routing, terminal view projection, Lua installation, and inherited acceptance callers. Preserve the terminal statusline provider alongside the landed Themes provider and record the final Stage 2 gate evidence.

Co-authored-by: OpenAI Codex <codex@openai.com>
2026-07-21 21:38:08 -04:00
Levi Neuwirth 692c3c5fdc docs: record mode system review lane
Record the portable branch, pull request, implementation checkpoint,
verification, and cross-machine recovery command for mode-system wiring.
2026-07-21 20:27:03 -04:00
Levi Neuwirth 99cd7ec240 feat: wire major modes through key dispatch
Store a detected major mode on each buffer and expose it through Lua.
Resolve mode-scoped bindings in dispatch, describe-key, and help links,
including exact encoded mode context after entering the help buffer.

Initialize modes once at buffer load, preserve explicit overrides and
clears across switches, and publish the mode through a per-window
statusline provider. Add daemon acceptance for the complete mode lifecycle.
2026-07-21 20:25:48 -04:00
Levi Neuwirth 0ddff24589 Merge canonical main into vterm-tui
Integrate config-registry and handoff updates landed after the Stage 2
framing branch was cut.
2026-07-21 20:18:53 -04:00
Levi Neuwirth dc9225778a test(vterm): prove Stage 2 TUI integration
Add cross-surface Lua, shared-view, clipboard, authenticated routing,
BEL, resize, and real-host PTY acceptance. Ensure terminal-local keymaps
run before raw child transport and document the criterion-to-test map.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 20:16:23 -04:00
Levi Neuwirth a548850423 docs: require truthful authorship attribution
Remove the standing instruction to claim Claude co-authorship and clarify
that commit trailers and PR attribution must reflect actual contributions.
2026-07-21 19:49:05 -04:00
Levi Neuwirth 424f82be5f docs: frame mode system wiring
Record approved decisions and acceptance criteria for major-mode storage,
dispatch, introspection, initialization, and statusline integration.
2026-07-21 19:49:05 -04:00
Levi Neuwirth f1a2f755a5
Merge pull request #128 from levineuwirth/handoff-2026-07-20
docs: refresh cross-machine continuity
2026-07-21 23:25:44 +00:00
Levi Neuwirth 0dacac7e8d feat(vterm): compose terminal views in the TUI
Render exact per-frontend terminal snapshots inside split-window content rects,
route terminal key, paste, focus, and mouse input through durable controllers,
and preserve logical row anchors across reflow, selection, and scrollback.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 19:21:50 -04:00
Levi Neuwirth 0a846d91ce feat(vterm): bind exact frontend terminal contexts
Resolve terminal commands and buffer switches against the authenticated invoking
frontend, publish copied selections to that frontend, and wire daemon rendering,
resize, focus, paste, bell, and detach lifecycle through exact view identities.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 19:20:00 -04:00
Levi Neuwirth 30464bcffd docs: absorb the config registry (#127) into the handoff
Merges canonical main up to 2e37c04 and records the second of the two
arcs that landed while this lane was open. Vterm Stage 1 (#126) was
already recorded; this adds the config registry and reconciles every
claim the two merges falsified.

Handoff §1: main pointer moved to 2e37c04, and a config-registry entry
covering the parts a future agent cannot re-derive from the code --- the
always-store rule and why the "equal-value set is a no-op" reading
silently voids a buffer-local pin; the two-scope model and the
no-ambient-buffer contract on get(name); explicit-dispose-only listener
lifetime and the absence of any MetaMethod::Gc; the InitCompleteFlag
freeze that kept editor.rs untouched; and the strict-registry /
lenient-wrapper split that preserves trim_on_save("yes") and
interval_ms(1500.7).

Handoff §5 gains two lessons. Tab width is a rendering-parity bug, not
a config gap: five sites across two crates with two different values,
and no tab expansion at all on the GPU main text path, so
editor.tab-width is the obvious-looking first adopter and is not one.
And "a test that never runs passes" --- pmacs.editor.save() is the raw
save while buffer.before-save fires inside the buffer.save COMMAND, and
save() no-ops on an unmodified buffer, which made two review-round tests
vacuous until the buffer was dirtied and the command invoked.

Handoff §6: the three config-registry-blocked deferrals are resolved
(the per-buffer auto-pair toggle shipped as editing.auto-pair), replaced
by the registry's own named deferrals --- persistence, list-settings, a
settings completion source, table-valued settings, the unmigrated scalar
setters, and a scope = "global" flag, since set_local is currently
accepted for autosave.interval-ms where a per-buffer value is
meaningless.

active-work.md: base pointer and recovery assertion moved to 2e37c04;
the Vterm Stage 2 lane is told to cut from current main rather than
643d1e1; a closed-since-last-snapshot section records the merged lane
and the parallel-lane result --- two arcs in sibling worktrees with the
shared files assigned one lane each in advance rebased with zero
conflicts, which is worth repeating and states its precondition.

side-quest-backlog.md: both original north-star items have now shipped,
so the board is re-ranked to locals-query processing, mode-system wiring
(promoted --- every editor resolve still passes &[], making it the
largest remaining scoping gap), and tab-width parity. The config-registry
entry is struck and tab width is split out of it, since listing tab
width as a config consequence is what made it look like a cheap adopter.

Documentation only: the diff against main touches no runtime code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-21 19:16:27 -04:00
Levi Neuwirth 1aa19c3bb5 Merge remote-tracking branch 'githubsucks/main' into handoff-2026-07-20 2026-07-21 19:11:36 -04:00
Levi Neuwirth 7c3953563c feat(vterm): add strict Lua and daemon foundations
Install strict owned terminal specification parsing, fresh global state tables,
default-name uniquification, durable view/controller lifecycle, and the builtin
terminal command/statusline surface. Route daemon key and mouse input by the
authenticated source and add non-replaying per-frontend BEL baselines.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 19:10:45 -04:00
Levi Neuwirth 2e37c0484e
Merge pull request #127 from levineuwirth/config-registry
feat(config): typed configuration registry with buffer-local scope
2026-07-21 23:06:45 +00:00
Levi Neuwirth 39e07cbf9b feat(vterm): expose atomic screen projections
Publish retained row metadata, alternate-screen identity, cursor, title, and
cells through the same synchronized-output generation gate. This gives each
Stage 2 view one coherent projection without borrowing or mirroring mutable
screen state.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 19:06:14 -04:00
Levi Neuwirth 1b32f81033 feat(vterm): establish Stage 2 view authority contracts
Add exact frontend/window/buffer view identities, logical-cell selections,
durable controller ownership, lifecycle cleanup, default-name uniquification,
and a nested authenticated interactive-command origin shared with Lua. These
contracts let the terminal core and TUI lanes proceed without inventing
parallel state.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-21 18:56:15 -04:00