Commit Graph

97 Commits

Author SHA1 Message Date
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
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
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
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
7dc31f48a7 Sprint 2 Step 36: Lock warnings in UI 2026-02-07 06:19:10 -07:00
Bill
8f39c8edfb Sprint 2 Step 35: Optimization lock annotations 2026-02-07 05:31:36 -07:00
Bill
9e080bebfe Sprint 2 Step 33: Export via generator 2026-02-06 23:47:18 -07:00
Bill
0bbfc36ebe Sprint 2 Step 32: Import via tree-sitter 2026-02-06 23:41:36 -07:00
Bill
7a943da12d Sprint 2 Step 31: Tree-sitter integration 2026-02-06 23:35:12 -07:00
Bill
3e338b35a6 Sprint 2 Step 30: Emacs ↔ MPS synchronization 2026-02-06 23:30:34 -07:00
Bill
9f2373f335 Sprint 2 Step 29: AST ↔ File synchronization 2026-02-06 23:19:58 -07:00
Bill
d499a930da Sprint 2 Step 28: File operations via RPC 2026-02-06 23:12:59 -07:00
Bill
06227401ef Sprint 2 Step 27: File operations via Emacs 2026-02-06 23:07:48 -07:00
Bill
78efb99f63 Sprint 2 Step 26: Orchestrator ↔ Emacs RPC 2026-02-06 22:43:07 -07:00
Bill
767c4557f5 Sprint 2 Step 25: AST ↔ Elisp projection 2026-02-06 22:27:19 -07:00
Bill
5f0c74dec2 Sprint 2 Step 24: Orchestrator spawns Emacs 2026-02-06 22:15:46 -07:00
Bill
dfa40b7802 Sprint 2 Step 22: Undo/Redo UI 2026-02-06 21:48:25 -07:00
Bill
3b80ff4250 Sprint 2 Step 21: Undo/Redo journal 2026-02-06 21:45:02 -07:00
Bill
b0b917eed1 Sprint 2 Step 20: Mutation via UI 2026-02-06 21:37:45 -07:00
Bill
91e52e28d2 Sprint 2 Step 19: Connect ImGui to orchestrator 2026-02-06 21:30:12 -07:00
Bill
db9990620b Sprint 2 Step 18: AST mutation via RPC 2026-02-06 21:02:01 -07:00
Bill
44634bf4fe Sprint 2 Step 17: JSON-RPC server 2026-02-06 20:44:07 -07:00
Bill
dfb8409dd9 Sprint 2 Step 16: Orchestrator process 2026-02-06 20:22:37 -07:00
Bill
d46aec55ee Sprint 2 Step 15: Projection toggle 2026-02-06 20:14:51 -07:00
Bill
41ab6c3022 Sprint 2 Step 14: AST → text viewport 2026-02-06 20:10:59 -07:00
Bill
37e504b448 Sprint 2 Step 13: Text viewport 2026-02-06 20:07:25 -07:00
Bill
6e74281096 Sprint 2 Step 12: Dear ImGui shell scaffolding 2026-02-06 20:04:12 -07:00
Bill
f094c14ea7 Sprint 2 Step 11: Python generator - Annotation output 2026-02-06 19:56:57 -07:00
Bill
95c56f35cb Sprint 2 Step 8: Python generator base with Module/Function support 2026-02-06 19:35:48 -07:00
Bill
8ca6eccd56 Sprint 2 Step 7: Schema validation 2026-02-06 19:31:38 -07:00
Bill
665c96b648 Sprint 2 Step 6: JSON deserialization and round-trip verification
fromJson(json) reconstructs heap-allocated AST from JSON. createNode factory
handles all 33 concepts. deleteTree for cleanup. Test verifies save→load→save
produces byte-identical JSON for the full Calculator model.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 19:14:45 -07:00
Bill
5579a4747f Sprint 2 Step 5: JSON serialization with nlohmann/json
toJson(ASTNode*) recursively serializes the AST to JSON with id, concept,
properties, and children structure. Added childRoles() to ASTNode for
enumeration. FetchContent pulls nlohmann/json v3.11.3. Test serializes the
full Calculator model and verifies every node in the JSON output.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 19:11:48 -07:00
Bill
71cd903fa8 Sprint 2 Step 4: annotation concepts (DerefStrategy, OptimizationLock, LangSpecific)
Adds the three annotation types from SemAnno. Test builds SimpleFunctionExample
with @deref(batched), exercises OptimizationLock on Module, LangSpecific on
Variable, and DerefStrategy's derefTime child link.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 19:04:37 -07:00
Bill
25b9d5c480 Sprint 2 Step 3: all Statement, Expression, Type, and Parameter concepts
Ports all 33 SemAnno concepts from MPS into C++ headers grouped by category.
Test builds the exact Calculator model from Phase1Test.mps as a 27-node C++
object graph and verifies every property, child link, and parent chain.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 19:01:35 -07:00
Bill
0f90bec21f Sprint 2 Step 2: child links, Function and Variable concepts
Adds generic child link support to ASTNode (addChild/setChild for multi/single-
valued roles, getChildren/getChild/allChildren for traversal). Function and
Variable as first child concepts of Module. Test builds Module->Function tree,
walks parent/child pointers in both directions, verifies single-valued replace.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 18:54:18 -07:00
Bill
586914df4e Sprint 2 Step 1: base ASTNode class and Module concept
Adds the C++ editor stack foundation with ASTNode (id, conceptType, parent pointer, virtual dtor) and Module as the first concrete concept (name, targetLanguage). Header-only, compiles with C++20, test passes all assertions.

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