Commit Graph

236 Commits

Author SHA1 Message Date
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