Releases: saworbit/didi
Releases · saworbit/didi
Release list
v2.0.0
What's Changed
🔐 Security
🧪 Tests and Contracts
- Require a line to start with else before the colon rule fires by @saworbit in #375
- Check the filesystem before the editor writers report a result by @saworbit in #376
- Free the engine output logger instead of only dropping its reference by @saworbit in #377
- Let a field trial be run by a client other than Claude by @saworbit in #378
- Stop script_check_syntax reporting autoloads as errors by @saworbit in #386
- Let Didi enable its own addon by @saworbit in #385
- Teach the engine the uid a written scene carries by @saworbit in #390
- Scope session attach and the dashboard to this server's project by @saworbit in #391
- Let resource_create point at another resource by @saworbit in #392
- Let a capture select the editor main screen it needs by @saworbit in #393
- Stop the slow trickle IPC test racing the deadline it measures by @saworbit in #394
- Let an agent call a project's own methods by @saworbit in #395
- Enforce the input schema tools/call publishes by @saworbit in #409
- Spend a confirmation token only on the mutation it authorises by @saworbit in #410
- Name the canonical tool in the test lab message by @saworbit in #412
- Publish the engine version so reflection can compare against it by @saworbit in #414
- Answer offline reads honestly instead of substituting or failing by @saworbit in #411
- Keep Unicode identifiers whole in every symbol scanner by @saworbit in #429
- Enforce the schemas the tools publish by @saworbit in #430
- Arm the overwrite gate on the target, not the flag by @saworbit in #431
- Read every project text file, and say what was not read by @saworbit in #432
- Give every semantic failure a code by @saworbit in #433
- Stop calling third-party addon files orphans by @saworbit in #434
- Stop calling local work a fallback by @saworbit in #435
- Read the target before describing a mutation by @saworbit in #436
- Answer the request edges below tools/call the way the spec says by @saworbit in #453
- Enforce the input schemas the server publishes by @saworbit in #456
- Name the repository the sandbox uses, and refuse one that only encloses the project by @saworbit in #457
- Check resource_create property names against the type by @saworbit in #454
- Read the replacement before patching a method, and keep it where it was by @saworbit in #452
- Refuse a number no float property can hold by @saworbit in #455
- Say the semantic failures in the bridge, and tell a wrong type from a missing path by @saworbit in #458
- Name the scene every live scene answer is about by @saworbit in #459
- Answer a path-validation failure with the error envelope by @saworbit in #474
- Refuse a resource type Godot cannot load, and say which engine was checked by @saworbit in #475
- Keep didi's own state out of the project inventory by @saworbit in #476
- Require a target before instantiating a node by @saworbit in #477
- Check a project setting name against the engine before persisting it by @saworbit in #478
- Say which subtree, which group names, and whose connection by @saworbit in #479
- Make the call-method dry run answer about the call by @saworbit in #480
- Give every tool parameter a description by @saworbit in #481
- Make scene_get_hierarchy answer the question it was asked by @saworbit in #495
- Give every error a data floor and fill it in one place by @saworbit in #496
- Check the value before writing it to the project by @saworbit in #497
- Resolve a oneOf branch before saying what it needs by @saworbit in #498
- Run the repository check in the apply preview by @saworbit in #499
- Say in tools/list which names are legacy by @saworbit in #500
- Name the read that works when the sandbox refuses one by @saworbit in #501
- Decide each tool annotation on its own by @saworbit in #517
- Advertise the mode a tool answers with by @saworbit in #518
- Publish the argument closure and the fields handlers return by @saworbit in #519
- Say no to a prompt argument that goes nowhere by @saworbit in #520
- Make a board findable, and say which part of a bad URI was wrong by @saworbit in #521
- Name the scene root the scene tools accept by @saworbit in #522
- Publish an output schema wherever something checks it by @saworbit in #523
- Stop the harness failing for reasons that are not the test by @saworbit in #524
- Give the schema-enforcement test its own project by @saworbit in #540
- Answer a bad path with a code, and check it by resolving by @saworbit in #539
- Answer a task state conflict with a conflict by @saworbit in #541
- Say which kind of detached this is by @saworbit in #542
- Make the protocol edge say what is true by @saworbit in #543
📚 Documentation
🏗️ Build, CI and Tooling
- Add the vibe-testing harness that found #396-#408 by @saworbit in #413
- Record what the first vibe session's probes now show by @saworbit in #415
- Keep the second vibe session's censuses and repros by @saworbit in #428
- Carry the vibe session that found #437-#450 by @saworbit in #451
- Carry the 2026-09-12 vibe session's harness by @saworbit in #473
- Open the error envelope in a census of its own by @saworbit in #494
- Sweep the discovery surface, not only the answers by @saworbit in #516
- Capture the seventh vibe session's probes by @saworbit in #538
- Send a valid handshake from the packaging smoke by @saworbit in #545
Full Changelog: v1.8.0...v2.0.0
v1.8.0
What's Changed
🔐 Security
- Fuzz the three decoders that read bytes Didi did not write by @saworbit in #349
- Remove a CodeQL config that did nothing by @saworbit in #359
- Release 1.8.0 by @saworbit in #369
🐛 Fixes
- Fix four reported bugs: child stdin, orphaned test processes, resource_create paths, dead capability by @saworbit in #362
🧪 Tests and Contracts
- Prove the loop composed, not in halves by @saworbit in #360
- Let a field trial run itself, and say which build answered it by @saworbit in #364
- Clear abandoned checkpoint fixtures instead of piling them up by @saworbit in #365
- Stop the offline analyses crawling the project twice by @saworbit in #366
- Stop a viewport diff building the same luma plane four times by @saworbit in #367
- Let the offline capability test fill the registry it reads by @saworbit in #368
- Stop the field trial seed launching a file that is not a program by @saworbit in #370
📚 Documentation
- docs: record field trial 03 results by @saworbit in #332
- Stop probing a deprecated jsonschema attribute by @saworbit in #361
🏗️ Build, CI and Tooling
- deps: bump jsonschema from 4.25.1 to 4.26.0 by @dependabot[bot] in #340
Full Changelog: v1.7.0...v1.8.0
v1.7.0
What's Changed
🔐 Security
- Make the repository legible as a maintained one by @saworbit in #339
- Sign every release, and give the pipeline a rehearsal by @saworbit in #341
- Release 1.7.0 by @saworbit in #348
🐛 Fixes
🧪 Tests and Contracts
- Stop the tests badge rendering as literal text by @saworbit in #342
- Stop building three operating systems to check a page of prose by @saworbit in #347
📚 Documentation
🔎 Other Changes
- Derive the launch test bounds from what they are testing by @saworbit in #284
- Fail the construction when the post-initialize bind is missing by @saworbit in #286
- Read the wait handle rather than the exit code for process liveness by @saworbit in #288
- Take a stack when the engine dies instead of an exit code by @saworbit in #289
- Put the crash handler back on top after the engine takes it by @saworbit in #290
- Wait for the imported texture before opening the smoke scene by @saworbit in #291
- Do not fail the run when the engine dies on its own thread by @saworbit in #292
- Arm the crash capture by default and say so when the engine dies by @saworbit in #295
- Open the smoke scene after the documentation pass, not on top of it by @saworbit in #296
- Require a positive fingerprint before retrying an engine crash by @saworbit in #297
- Tell a caller what happened to the engine and what to do next by @saworbit in #298
- Give the perceptual hash all 64 bits it claims by @saworbit in #300
- Keep the signal handler to a flag and wake the stdio loop by @saworbit in #299
- Build the signal test extension only when tests are on by @saworbit in #301
- Keep the test stdin alive as long as the reader that is reading it by @saworbit in #303
- Record today's three fixes and document the build options by @saworbit in #302
- Add managed editor checkpoints and bounded crash recovery by @saworbit in #304
- Let the operating system reap the managed editor by @saworbit in #306
- docs: complete managed recovery guidance by @saworbit in #307
- Add the Control Room, an MCP Apps dashboard served over stdio by @saworbit in #308
- Add ui_list_controls so a control can be found before it is clicked by @saworbit in #309
- Stop live failures from publishing the session endpoint by @saworbit in #310
- Refresh the documents the Control Room and ui_list_controls overtook by @saworbit in #311
- Validate the modern request envelope and scope MCP Apps per request by @saworbit in #315
- Drive the newest build in the end to end tests, not the first one found by @saworbit in #316
- Make a modern request name the runtime session it means by @saworbit in #317
- Hold a route per session so two tasks can drive two editors by @saworbit in #318
- Drive the newest build in the Godot harness, not the one named build by @saworbit in #319
- Constrain issue 285 retries and keep the crash evidence by @saworbit in #320
- didi: read real editor dirty state in scene_close on Godot 4.7+ by @saworbit in #321
- didi: resolve UIDs through ResourceUID, not the binary uid cache by @saworbit in #322
- didi: verify audit uid findings against the running editor by @saworbit in #323
- didi: verify missing_file findings, and restore offline dispatch by @saworbit in #324
- Report when the bridge is from a different build by @saworbit in #333
- Make every spelling of the 2D viewport reach the 2D viewport by @saworbit in #334
- Stop reporting @onready as the Godot 3 form by @saworbit in #335
- Write Godot literals in resource_create, or refuse and say which property by @saworbit in #336
- Let a probe read a number off a property, and say when none did by @saworbit in #337
- Instance a packed scene into the edited scene by @saworbit in #338
Full Changelog: v1.6.0...v1.7.0
v1.6.0
What's Changed
- Finish constructing the objects we build by @saworbit in #212
- Build the field trial harness by @saworbit in #202
- Fix #214: script_patch_method with symbol_type variable deletes the declaration by @saworbit in #222
- Fix #224: scene_set_property declares no JSON type for value, so clients guess a by @saworbit in #226
- Record the second field trial by @saworbit in #219
- Stop reporting success for changes that did not happen by @saworbit in #220
- Design the loop, and build the fix half of it by @saworbit in #221
- Fix #216: scene_set_property rejects whole numbers for float properties, so anch by @saworbit in #223
- Fix #225: Type-mismatch errors name the property's type but never the value's, s by @saworbit in #228
- Let the body alone decide whether merging closes an issue by @saworbit in #229
- Keep the blank lines after a patched symbol by @saworbit in #230
- Stop reporting a retention gap on a first read from cursor 0 by @saworbit in #231
- Say a TileMapLayer has no TileSet, and let engine rejections keep their status by @saworbit in #233
- Read imported asset UIDs out of .import metadata by @saworbit in #232
- Add script_create and stop resource_create writing to any path by @saworbit in #234
- Let a game session be seen, and refuse a viewport with no size by @saworbit in #235
- Take vectors, colours and resource paths as property values by @saworbit in #236
- Ignore out-of-source build trees by @saworbit in #238
- Keep a client off the connection recycle boundary by @saworbit in #237
- Rename a symbol where Godot serializes it, and say where it did not by @saworbit in #239
- Watch a running game for conditions that must stay true by @saworbit in #240
- Cast many rays in one dispatch by @saworbit in #241
- Ask whether a body fits, not whether a line is clear by @saworbit in #242
- Give Didi a mark, a wordmark, and the assets they generate from by @saworbit in #243
- Read a ShaderMaterial's uniforms by @saworbit in #244
- Set a shader uniform, undoably by @saworbit in #245
- Describe a VisualShader as nodes and links by @saworbit in #246
- Show the mark in BRAND.md instead of only describing it by @saworbit in #247
- Stop rebuilding C++ when only the brand docs change by @saworbit in #248
- Ask what a camera can see by @saworbit in #249
- Report the value a shader uniform actually has by @saworbit in #251
- See depth and orientation instead of guessing them by @saworbit in #252
- Show a proposal before making it by @saworbit in #253
- Document the calls the reference gets wrong by @saworbit in #254
- Say why the transport gave up by @saworbit in #255
- Say whether the engine is still there by @saworbit in #256
- Check a proposal before the project sees it by @saworbit in #257
- Ask again when a call that changes nothing loses its connection by @saworbit in #261
- An in-editor console for the bridge by @saworbit in #262
- Bring the documentation in line with the editor console by @saworbit in #264
- Run a proposal, and put it in place once it passes by @saworbit in #263
- Documentation audit: fix an unreachable guide and a plan that disagreed with the code by @saworbit in #265
- Say which node painted which pixel by @saworbit in #266
- Say why the engine answer is unknown by @saworbit in #267
- Stop deleting the board when the save cannot replace it by @saworbit in #271
- Keep paths wide until the last moment on Windows by @saworbit in #272
- Keep build trees out of the index and drop it after a write by @saworbit in #273
- Give every docs page a home and one changelog section per category by @saworbit in #274
- Wait out a held blackboard lock instead of erroring by @saworbit in #275
- Stop the two class reference copies racing each other by @saworbit in #276
- Drive a running game and report where it stopped responding by @saworbit in #277
- Do not blame a proposal for what the copy already said by @saworbit in #278
- Measure the baseline before the proposal, and cancel both watches on shutdown by @saworbit in #281
- Release 1.6.0 by @saworbit in #282
Full Changelog: v1.5.0...v1.6.0
v1.5.0
What's Changed
- Move GitHub Actions to Node 24 runtimes by @saworbit in #8
- Pin ccache action to its Node 24 release by @saworbit in #9
- ci: remove unused macOS Homebrew tap by @saworbit in #40
- fix: preserve patch comments and JSON-RPC null results by @saworbit in #39
- fix: close high-risk IPC, MCP, and overwrite gaps by @saworbit in #41
- fix: close native protocol and runtime safety gaps by @saworbit in #42
- fix: close quick correctness gaps by @saworbit in #43
- fix: close offline correctness gaps by @saworbit in #44
- feat: deliver phase 5 deep domains by @saworbit in #45
- Phase 6: enterprise safety and mutation controls by @saworbit in #52
- docs: publish post-phase-6 roadmap by @saworbit in #63
- docs: record Phase 7 feasibility blockers by @saworbit in #64
- Derive published tool counts from the built binary by @saworbit in #83
- Reap orphaned session descriptor tombstones by @saworbit in #84
- Add tool annotations and structured results by @saworbit in #85
- Resolve the Phase 7 governance choice as partial delivery by @saworbit in #86
- Recover Phase 7A groundwork onto main without the Godot 4.7 requirement by @saworbit in #87
- Point the Godot 4.7 amendment at the archive tag by @saworbit in #91
- Repair the live signal bridge harness and record tri-engine evidence by @saworbit in #92
- Run the Godot integration harness on PowerShell 5.1, and record the activation blocker it found by @saworbit in #93
- Quarantine the runtime route only on transport failure by @saworbit in #94
- Correct the signal bridge evidence and record the production admission gate by @saworbit in #95
- Bring the documentation set up to date with what shipped today by @saworbit in #96
- Detect Windows in the integration harness on PowerShell 5.1 by @saworbit in #97
- Publish outputSchema for tools with an observed result shape by @saworbit in #98
- Accept the runtime_read_output amendment with tri-engine feasibility evidence by @saworbit in #99
- Correct the runtime_read_output amendment and record its implementation constraints by @saworbit in #100
- feat: add runtime_read_output for live engine output capture by @saworbit in #101
- docs: withdraw the Godot 4.7 engine floor amendment by @saworbit in #102
- feat: deliver the four signal tools as Phase 7 partial delivery by @saworbit in #103
- fix: bring the demo addon back in line and keep it there by @saworbit in #104
- docs: replace the editor-dock design with a researched one by @saworbit in #105
- feat: implement server/discover, making Didi dual-era by @saworbit in #106
- feat: serve MCP revision 2026-07-28 result shapes by @saworbit in #107
- feat: route mutation confirmation to a human via elicitation by @saworbit in #108
- feat: add YOLO mode for unattended runs by @saworbit in #109
- fix: require every Python test module to run in CI by @saworbit in #110
- Convert Windows project paths through UTF-8 helpers by @saworbit in #123
- Parse GDScript declarations the same way everywhere by @saworbit in #124
- Replace offline files atomically instead of truncating in place by @saworbit in #125
- Emit real Godot types from the tres and test lab generators by @saworbit in #126
- Classify mutations and open world tools from what they actually do by @saworbit in #127
- Handle JSON-RPC batches and release the session on stdio EOF by @saworbit in #128
- Parse the compiler diagnostic formats Godot and Roslyn actually emit by @saworbit in #129
- Tighten C# declaration detection and drop per file path syscalls by @saworbit in #130
- Stop copying frames and rebuilding the base64 table on every call by @saworbit in #131
- Match resource paths exactly and scan the project once by @saworbit in #132
- Read multiline tscn properties in the offline hierarchy parser by @saworbit in #133
- Stop treating an idle IPC connection as a disconnect by @saworbit in #134
- Allow math on values the expression itself built by @saworbit in #135
- Return the real node path and close abandoned UndoRedo actions by @saworbit in #150
- Make the main-loop pump reentrancy safe and defer the quit by @saworbit in #157
- Emit compact payloads and stop dropping launch arguments by @saworbit in #158
- Apply owner only controls before the IPC endpoint accepts by @saworbit in #159
- Release the session lock when a route is quarantined by @saworbit in #160
- Restore and report what a failed live mutation actually did by @saworbit in #161
- Convert the path producers to UTF-8, not just the readers by @saworbit in #162
- Make the published contract match the shipped surface by @saworbit in #163
- Add CTest registration, install rules and a sanitizer option by @saworbit in #164
- Restore the IPC idle timeout that recycles the pipe instance by @saworbit in #165
- Run live Godot in CI and put tests in front of release packaging by @saworbit in #166
- Reflect every engine class from the pinned Godot API dump by @saworbit in #167
- Give each stage of an IPC frame its own deadline by @saworbit in #168
- Let scene_get_hierarchy answer with less than the whole tree by @saworbit in #169
- Report perceptual similarity alongside the pixel diff by @saworbit in #170
- Stop the split frame IPC test racing the deadline it measures by @saworbit in #172
- Add project_audit_assets for orphans, broken references and dead signals by @saworbit in #171
- Reconnect before sending when the server recycled an idle connection by @saworbit in #173
- Give the live harness a real startup budget and say what it saw by @saworbit in #174
- Add project_analyze_impact for rename and delete blast radius by @saworbit in #175
- Collect used signal names once instead of per declared signal by @saworbit in #176
- Skip re-reading files the resource index already read unchanged by @saworbit in #177
- Add audio_list_buses, live and offline by @saworbit in #178
- Add audio_configure_bus for volume, mute and solo by @saworbit in #179
- Deliver runtime_read_profiler as Phase 7C partial delivery by @saworbit in #180
- Deliver runtime_inject_input as Phase 7C partial delivery by @saworbit in #181
- Deliver physics_raycast_query and nav_query_path as Phase 7B partial delivery by @saworbit in #182
- Deliver anim_list_tracks and anim_play_track as the second half of Phase 7B by @saworbit in #183
- Implement Phase 7 viewport controls by @saworbit in #184
- Deliver Phase 7 tile and grid tools by @saworbit in #185
- fix: harden Phase 7 delivery contracts by @saworbit in #186
- feat: trace static node path impacts by @saworbit in #187
- feat: diagnose Godot import metadata health by @saworbit in #188
- Reject unknown and malformed command line options by @saworbit in #190
- Add a code of conduct and finish the community health files by @saworbit in #191
- Package the addon from the build directory by @saworbit in #195
- ci: bump hendrikmuhs/cc...
v1.4.0
What's Changed
- Complete Phase 1 live Godot substrate by @saworbit in #1
- Phase 2: deliver live project wiring by @saworbit in #2
- Phase 3: authenticated runtime sessions and bounded evaluation by @saworbit in #3
- docs: reconcile Phase 3 release guidance by @saworbit in #4
- chore: remove agent workflow artifacts by @saworbit in #5
- Phase 4: project verification, reimport, and viewport diffing by @saworbit in #6
- Fix Windows release packaging on current runners by @saworbit in #7
New Contributors
Full Changelog: https://github.com/saworbit/didi/commits/v1.4.0