SIGN IN SIGN UP

v5.0.56: Rewrite test runner, fix run() safety, add 6 test suites, update docs

Major test infrastructure overhaul:
- Rename TestRunner → TestRunnerExt (follows NameExt convention)
- Non-blocking RunTests() default (one test per frame via RunTestsDeferredPerTest)
- Add RunTestsSync() for MCP/immediate results
- File-based test discovery via importlib (loads .py from dev/test_embody/)
- Inject TD globals into loaded test modules

Core fixes:
- Replace f-string run() calls with lambda closures (safer, avoids stale refs)
- Fix isOpEligibleToBeExternalized — simplified logic (was always true for tagged ops)
- Enable file logging by default
- Handle missing table rows gracefully during delete cleanup
- Fix ParameterTracker log call (lowercase → uppercase)

TDN improvements:
- Wrap position/size/color/comment setters in try/except
- Simplify _getClaudiusVersion (read from module directly)
- Fix _isPaletteClone signature (staticmethod → instance method)

New test suites: CRUD operators, delete cleanup, annotations, performance,
rename/move lifecycle, tag lifecycle. Updated all test imports to new runner path.

Docs: Added POPs, file logging, extension naming, renaming conventions, creating
Python files for TD. Gitignore cleanup (__pycache__, test_sandbox, logs, etc).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
D
Dylan Roscover committed
3cc0621fdbca599da5aca15b2ec2482b0efea280
Parent: 5f74ef2