Commit Graph

596 Commits

Author SHA1 Message Date
Bill
5cf7bf575f Step 97: annotation gutter markers 2026-02-09 10:25:58 -07:00
Bill
5fdb21d74d Step 94a: AST source spans 2026-02-09 10:22:13 -07:00
Bill
f84258bffc Step 96: LSP server configuration 2026-02-09 10:14:40 -07:00
Bill
5f30fd5044 Step 95: diagnostic squiggles 2026-02-09 10:10:25 -07:00
Bill
360a9fa26a Step 94: Whetstone diagnostics layer 2026-02-09 10:05:58 -07:00
Bill
ede4166af3 Step 93: LSP hover and signature help 2026-02-09 10:02:03 -07:00
Bill
0916026448 Step 92: LSP auto-completion 2026-02-09 09:59:25 -07:00
Bill
e3439b2a3d Step 91: LSP diagnostics integration 2026-02-09 09:55:48 -07:00
Bill
9083e05471 Step 90: LSP client core 2026-02-09 09:49:29 -07:00
Bill
94a77b6890 Step 89: file watching and auto-reload 2026-02-09 09:40:47 -07:00
Bill
23e3758cca Step 88: drag-and-drop open 2026-02-09 09:38:57 -07:00
Bill
a1efe93ba3 Step 87: welcome screen 2026-02-09 09:37:12 -07:00
Bill
9f8ee09b4c Step 86: multi-tab editing 2026-02-09 09:35:00 -07:00
Bill
6da8b36347 Step 85: filesystem tree explorer 2026-02-09 09:29:01 -07:00
Bill
c195128034 Step 84: native file dialogs 2026-02-09 09:26:54 -07:00
Bill
c9553590e7 Step 83: add new tree-sitter grammars 2026-02-09 09:22:03 -07:00
Bill
c040f6f936 Step 82: minimap 2026-02-09 09:14:47 -07:00
Bill
8bad31e94c Step 81: code folding 2026-02-09 09:12:34 -07:00
Bill
225e0f50a0 Step 80: selection and clipboard 2026-02-09 09:10:01 -07:00
Bill
c66d80c0e8 Step 79: auto-indent and smart editing 2026-02-09 09:07:53 -07:00
Bill
b18e41c6d0 Step 78: line numbers and gutter 2026-02-09 09:06:07 -07:00
Bill
65b714547f Step 77: custom code editor renderer 2026-02-09 09:04:12 -07:00
Bill
a65e0b13ee Step 76: LayoutManager with docking layout presets (Sprint 4 start)
Three preset layouts (VSCode/Emacs/JetBrains) with panel visibility,
size ratios, dirty flag for rebuild, and file-based persistence.
Also includes revised sprint4_plan.md and new sprint5_plan.md.
10/10 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 08:22:02 -07:00
Bill
dc94ad7274 Sprint 3 complete: Phases 3g+3h (Steps 68-75), all 75 steps done
Phase 3g — Optimization Pipeline (17/17 tests):
  Step 68: TransformEngine — constant folding, dead code elimination, OptimizationLock warning
  Step 69: StrategyAwareOptimizer — annotation-constrained (@Reclaim allows, @Owner blocks duplication, @Deallocate blocks reorder, @Allocate blocks dynamic)
  Step 70: StrategyValidator — post-optimization invariants (use-after-free, leak, aliasing)
  Step 71: IncrementalOptimizer — transform journal, undo by ID, provenance tracking

Phase 3h — Integration & Validation (26/26 tests):
  Step 72: Pipeline — end-to-end parse→infer→validate→optimize→generate for Python/C++
  Step 73: Error handling — empty ASTs, null roots, nonexistent IDs, unannotated code
  Step 74: Performance benchmarks — 1000-fn AST 1ms, JSON round-trip 4ms, 50 transforms+undo 1ms
  Step 75: APIDocGenerator — structured docs for 23 components across 6 categories

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 07:35:37 -07:00
Bill
650e8557ae Phase 3f complete: Advanced Memory Management (Steps 64-67)
Step 64: AnnotationValidator — @Deallocate missing-intent, @Owner(Single) alias detection, parent/child conflict (5/5 tests)
Step 65: MemoryStrategyInference — language defaults, per-function pattern analysis, confidence scores (5/5 tests)
Step 66: CrossLanguageProjector — deep-copy AST projection, annotation-aware CppGenerator (shared_ptr/unique_ptr) (5/5 tests)
Step 67: Optimization annotations — HotCold, Inline, Pure, ConstExpr with C++ attribute generation (9/9 tests)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:57:58 -07:00
Bill
7fb9e89e25 Phase 3e complete: Agent API Extend (Steps 59, 61-63)
Step 59: WebSocketAgentServer with session management, JSON-RPC routing, MockWebSocketTransport (10/10 tests)
Step 61: ASTMutationAPI with setProperty, updateNode, deleteNode, insertNode, journal, OptimizationLock warning (6/6 tests)
Step 62: ContextAPI with getInScopeSymbols, getCallHierarchy, getDependencyGraph (6/6 tests)
Step 63: BatchMutationAPI with atomic applySequence and reverse-order rollback (5/5 tests)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 20:57:39 -07:00
Bill
e92e904a6d 3d finished 2026-02-08 16:31:20 -07:00
Bill
bb7981d4d7 Phase 3d complete: editor infrastructure (Steps 55-58)
Step 55: WelcomeScreen (actions, recent files, tips, visibility) - 7/7 tests
Step 56: ElispCommandBuilder + MockEmacsConnection (escaping, daemon lifecycle) - 6/6 tests
Step 57: BufferManager (multi-file open/close/switch, language/modified tracking) - 7/7 tests
Step 58: EditorMode (per-language indent, comment toggle, bracket pairs, snippets) - 8/8 tests

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:27:22 -07:00
Bill
16cc60b36c Wire up GUI: functional editor with VSCode Dark theme and docking layout
Rewrote main.cpp from Step 12 scaffold to full editor shell. Added tree-sitter
linking to whetstone_editor target. Fixed WMOD_ prefix to avoid Windows SDK
MOD_SHIFT/MOD_ALT macro conflicts. Editor now has editable text area, live AST
view, syntax-highlighted preview, generated code tab, find/replace, keybinding
profile selector, and status bar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:21:22 -07:00
Bill
5190e12b89 Phase 3c complete: syntax highlighting and configurable keybindings (Steps 52, 54)
Step 52: SyntaxHighlighter walks tree-sitter CST to produce colored
token spans (keyword, string, comment, number, function, parameter,
type, operator, etc.) for Python, C++, and Elisp.

Step 54: KeybindingManager with swappable profiles — VSCode (default),
JetBrains, and Emacs. Each profile maps 25+ actions (file, edit,
search, nav, view, code, build) to key combos. Supports custom
overrides and reverse lookup.

Design direction: editor targets VSCode/JetBrains look-and-feel.
Keybinding profile selectable at startup. VSCode is default.

Phase 3c totals: 37/37 tests pass across 5 steps (50-54).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 16:12:10 -07:00
Bill
742c33d813 Phase 3c: Classical editing mode (Steps 50-53)
Implement TextASTSync and TextEditor — the core text editing layer
that bridges raw text and the structured AST. TextASTSync provides
bidirectional text-AST sync with debounce via TreeSitterParser and
generators. TextEditor wraps a text buffer with edit operations,
undo/redo that tracks AST state, find/replace, and selection.

New files: TextASTSync.h, TextEditor.h, step50_test.cpp
Updated: step51/53 tests (replaced stubs with real includes),
CMakeLists.txt (tree-sitter linking), PROGRESS.md
Fixed: step53 find-position off-by-one, canRedo assert logic

19/19 tests pass (step50: 8, step51: 5, step53: 6)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 15:45:59 -07:00
Bill
41166812b0 Phase 3b: Real tree-sitter integration (Steps 45-49)
Replace TreeSitterParser stubs with real tree-sitter C bindings for
Python, C++, and Elisp parsing. Add tree-sitter core via vcpkg and
language grammars via FetchContent. Implement CST-to-AST converters
with auto-annotation, memory pattern detection, error recovery, and
ParseResult/ParseDiagnostic types. All 34 tests pass (6+7+6+8+7).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 09:06:50 -07:00
Bill
7c0b0c759e Sprint 3 Step 60: AST query API implementation
- Implement ASTQueryAPI class with tree walking, JSON output,
  findNodesByType, findNodesByProperty, findNodesWithAnnotation
- Add nlohmann_json link for step60_test in CMakeLists.txt
- Add PROGRESS.md for cross-session continuity tracking

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:54:18 -07:00
Bill
89bcf805bc Fix editor hang when launched without orchestrator
The JsonRpcClient was reading from stdin on startup, blocking forever
when no orchestrator process was piped in. Now defaults to disconnected
state and skips RPC calls, falling back to sample content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:25:12 -07:00
Bill
e08fc9e0e0 Add build infrastructure, installer scripts, and fix build errors
- Create vcpkg.json manifest with all editor dependencies
- Create CMakePresets.json for Windows (MSVC) and Linux (GCC)
- Create Inno Setup installer script (setup.iss) with file associations
- Create Windows build helper (build.ps1) with vcpkg auto-install
- Create Linux build/install scripts (build.sh, install.sh)
- Vendor imgui SDL2 backend locally (removed from vcpkg imgui 1.91+)
- Switch CMakeLists.txt from FetchContent to vcpkg find_package
- Fix ElispGenerator missing pure virtual overrides for memory annotations
- Fix Orchestrator::findNodeById const-correctness
- Fix orchestrator_main.cpp loadFile/saveFile type mismatches
- Fix main.cpp SDL_GL_SwapBuffers -> SDL_GL_SwapWindow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 22:15:50 -07:00
Bill
d0a039e567 Sprint 2 Step 38: OptimizationLock warnings 2026-02-07 10:53:35 -07:00
Bill
ea79d2b484 Sprint 2 Step 37: Agent batch mode 2026-02-07 10:49:48 -07:00
Bill
e6044f92e4 Sprint 2 Step 36: Agent API 2026-02-07 10:46:17 -07:00
Bill
5404fa24b0 Sprint 2 Step 35: C++ generator — memory strategies 2026-02-07 10:42:49 -07:00
Bill
6f8c2341dd Sprint 2 Step 34: C++ generator — basic output 2026-02-07 10:38:03 -07:00
Bill
4515443860 Sprint 2 Step 33: Elisp round-trip 2026-02-07 10:32:35 -07:00
Bill
4ff40064c7 Sprint 2 Step 32: Tree-sitter import integration 2026-02-07 09:44:31 -07:00
Bill
b00610508b Step 71 TDD test: Incremental optimization with rollback
Tests IncrementalOptimizer: transforms recorded in history, undoLast
restores original AST, undo specific transform by ID while keeping
others, and provenance tracking (node knows which transform created it).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:32:59 -07:00
Bill
5ba255cbca Step 70 TDD test: Cross-strategy validation
Tests StrategyValidator: use-after-free detection for @Deallocate(Explicit),
leaked allocation detection, @Owner(Single) aliasing detection, clean code
passes validation, violations include node IDs for diagnostics.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:32:11 -07:00
Bill
26cf9bc9fb Step 69 TDD test: Strategy-aware optimization
Tests StrategyAwareOptimizer: @Reclaim(Tracing) allows free restructuring,
@Owner(Single) blocks duplication/aliasing, @Deallocate(Explicit) blocks
reordering around dealloc, @Allocate(Static) blocks dynamic allocation.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:31:30 -07:00
Bill
01a094f28e Step 68 TDD test: Transformation engine
Tests TransformEngine: constant folding (3+4->7), dead code elimination
after return, OptimizationLock produces warning but doesn't block, and
no-op when nothing to transform. Defines TransformEngine interface.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:30:51 -07:00
Bill
89778c4b02 Step 67 TDD test: Optimization annotations
Tests HotColdAnnotation, InlineAnnotation, PureAnnotation, ConstExprAnnotation
classes exist. Tests C++ generation: @Hot->__attribute__((hot)),
@Cold->__attribute__((cold)), @Inline(Always)->always_inline,
@Pure->[[nodiscard]], @ConstExpr->constexpr.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:30:09 -07:00
Bill
1a1416472b Step 66 TDD test: Cross-language memory projection
Tests Lossless Projection Logic: Python @Reclaim(Tracing)->C++ shared_ptr,
C++ @Deallocate(Explicit)->Python wrapper, @Owner(Single) preserved in
Python metadata, round-trip annotation preservation, @Lifetime(RAII)->
unique_ptr. Defines CrossLanguageProjector interface.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:29:33 -07:00
Bill
52b59428f2 Step 65 TDD test: Memory strategy inference
Tests MemoryStrategyInference: Python->@Reclaim(Tracing), C++ gets
suggestions, inference does NOT auto-apply to AST, suggestions have
confidence scores and reasons, Elisp->@Reclaim(Tracing).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:28:51 -07:00
Bill
880ecda73e Step 64 TDD test: Memory annotation validation
Tests AnnotationValidator: valid @Reclaim(Tracing) passes,
@Deallocate(Explicit) without dealloc -> Missing Intent error,
@Owner(Single) aliasing -> error, conflicting parent/child annotations,
and valid @Lifetime(RAII) passes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 08:28:18 -07:00