From 6ce119dffe9767368f9134d8e5e35668a0fac12e Mon Sep 17 00:00:00 2001 From: Ed_ Date: Wed, 3 Jun 2026 00:54:07 -0400 Subject: [PATCH] conductor(checkpoint): Fix markdown_helper.py for imgui-bundle >=1.92.801 complete --- conductor/tracks.md | 4 ++ .../plan.md | 42 +++++++++++-------- 2 files changed, 29 insertions(+), 17 deletions(-) diff --git a/conductor/tracks.md b/conductor/tracks.md index 9edf95a3..b584b110 100644 --- a/conductor/tracks.md +++ b/conductor/tracks.md @@ -354,3 +354,7 @@ This file tracks all major tracks for the project. Each track has its own detail - [x] **Track: Clean Install Test** `[checkpoint: d14ae3b]` *Link: [./tracks/clean_install_test_20260603/](./tracks/clean_install_test_20260603/), Spec: [./../../docs/superpowers/specs/2026-06-02-clean-install-test-design.md](./../../docs/superpowers/specs/2026-06-02-clean-install-test-design.md), Plan: [./../../docs/superpowers/plans/2026-06-02-clean-install-test.md](./../../docs/superpowers/plans/2026-06-02-clean-install-test.md)* *Goal: Add opt-in pytest test (`RUN_CLEAN_INSTALL_TEST=1`) that clones the repo to tmp_path, runs `uv sync`, launches `sloppy.py --enable-test-hooks`, verifies Hook API responds. Catches "works on my machine" failures. Added `clean_install` marker to `pyproject.toml`. Created `tests/test_clean_install.py` (114 lines, uses `urllib.request` from stdlib per tech-stack.md dependency minimalism rule - deviation from plan). Skipped by default. Marked with `@pytest.mark.clean_install`.* + +- [x] **Track: Fix markdown_helper.py for imgui-bundle >=1.92.801** `[checkpoint: 7a34edf]` +*Link: [./tracks/markdown_helper_language_api_compat_20260603/](./tracks/markdown_helper_language_api_compat_20260603/)* +*Goal: First thing the clean install test caught. `ed.TextEditor.LanguageDefinitionId` enum was removed in `imgui-bundle>=1.92.801`. Replaced with version-compat shim helpers `_get_language_id(name)` and `_set_editor_language(editor, lang_obj)` that detect the API at runtime (1.92.5 enum vs 1.92.801+ factory). Also added parallel `_editor_lang_cache` to track current language tag per editor (robust to API name differences like "C++" vs "cpp"). Verified: test passes in opt-in mode (1.92.801), shim still works in local 1.92.5 env, follow-up commit `b306f8f` corrected test URL `/api/mma_status` -> `/api/gui/mma_status` (actual endpoint per `src/api_hooks.py:181`).* diff --git a/conductor/tracks/markdown_helper_language_api_compat_20260603/plan.md b/conductor/tracks/markdown_helper_language_api_compat_20260603/plan.md index 845f3028..0e2f287a 100644 --- a/conductor/tracks/markdown_helper_language_api_compat_20260603/plan.md +++ b/conductor/tracks/markdown_helper_language_api_compat_20260603/plan.md @@ -1,24 +1,32 @@ # Implementation Plan: Fix markdown_helper.py for imgui-bundle >=1.92.801 -## Phase 1: Red - Confirm bug +## Phase 1: Red - Confirm bug [checkpoint: pre-existing 7a34edf] - [x] Task 1.1: Run `tests/test_clean_install.py` in opt-in mode (RUN_CLEAN_INSTALL_TEST=1) - confirm AttributeError on TextEditor.LanguageDefinitionId - [x] Task 1.2: Capture full traceback for git note -## Phase 2: Green - Apply version-compat shim -- [ ] Task 2.1: Add module-level `_get_language_id(name)` helper to markdown_helper.py -- [ ] Task 2.2: Add module-level `_set_editor_language(editor, lang_obj)` helper -- [ ] Task 2.3: Add module-level `_get_editor_language_name(editor)` helper -- [ ] Task 2.4: Replace `_lang_map` initialization to use `_get_language_id(...)` -- [ ] Task 2.5: Replace lines 128, 134, 135, 136 with shim calls -- [ ] Task 2.6: Handle the "none" fallback case (return None, skip set call) -- [ ] Task 2.7: Syntax check (ast.parse) +## Phase 2: Green - Apply version-compat shim [checkpoint: 7a34edf] +- [x] Task 2.1: Add module-level `_get_language_id(name)` helper to markdown_helper.py +- [x] Task 2.2: Add module-level `_set_editor_language(editor, lang_obj)` helper +- [x] Task 2.3: Replace `_lang_map` initialization to use `_get_language_id(...)` +- [x] Task 2.4: Replace set/get language calls with shim calls +- [x] Task 2.5: Add parallel `_editor_lang_cache` to track current language tag per editor +- [x] Task 2.6: Handle the "none" fallback case (return None, skip set call) +- [x] Task 2.7: Syntax check (ast.parse) -## Phase 3: Verify -- [ ] Task 3.1: Run `tests/test_clean_install.py` in opt-in mode - should pass (1 passed, clone+sync+launch+hook API) -- [ ] Task 3.2: Run local markdown-related tests (if any) to ensure no regression in 1.92.5 env -- [ ] Task 3.3: Import test for the new helpers (both APIs should work) +## Phase 3: Verify [checkpoint: 7a34edf] +- [x] Task 3.1: Run `tests/test_clean_install.py` in opt-in mode - 1 passed in 16.56s +- [x] Task 3.2: Shim import test in local 1.92.5 env - works +- [x] Task 3.3: Shim import test in cloned 1.92.801 env - works (no AttributeError) -## Phase 4: Commit -- [ ] Task 4.1: Atomic commit with descriptive message -- [ ] Task 4.2: Git note with root cause analysis -- [ ] Task 4.3: Update tracks.md to register this fix track +## Phase 4: Test URL fix [checkpoint: b306f8f] +- [x] Task 4.1: Test still failed with 404 on /api/mma_status +- [x] Task 4.2: Searched actual endpoints in src/api_hooks.py +- [x] Task 4.3: Correct URL is /api/gui/mma_status (line 181) +- [x] Task 4.4: Updated test, re-ran, PASSED + +## Phase 5: Commit + Register +- [x] Task 5.1: Atomic commit (7a34edf) with descriptive message + git note +- [x] Task 5.2: Atomic commit (b306f8f) for test URL fix + git note +- [x] Task 5.3: Update tracks.md to register this fix track +- [ ] Task 5.4: conductor(checkpoint) commit +- [ ] Task 5.5: Clean up demo dir + stale log files