Skip to content

Qt-removal R7.5f: remove stale phase promises from user-visible text#155

Merged
dovvnloading merged 1 commit into
mainfrom
qt-removal/r7-5f-stale-placeholder-text
Jul 26, 2026
Merged

Qt-removal R7.5f: remove stale phase promises from user-visible text#155
dovvnloading merged 1 commit into
mainfrom
qt-removal/r7-5f-stale-placeholder-text

Conversation

@dovvnloading

Copy link
Copy Markdown
Owner

Final R7.5 parity sub-increment, closing the phase (a–g). Previous: #147, #148/#149/#150, #151, #152/#153, #154.

Problem

Several disabled controls and one backend notification told users a capability would arrive in an internal project phase (R3/R4/R5/R6) that had already shipped and closed — the app promised "coming in R4" when R4 was long done and the feature still wasn't there.

Scope was derived by grepping the codebase rather than from the plan's "4 R4 placeholders" shorthand, which undercounted it. Eight strings across six files, including a stale R6 promise on DocumentNodeView's Export item and a backend notification in plugins.py's executePlugin fallthrough — neither of which an "R4" search would have found.

Change

Phase-free replacements:

Location New text
ChatNodeView — Key Takeaway, Explainer Note "AI note generation isn't available yet"
DocumentNodeView — Export "Document export isn't available yet"
AppBar — provider mode select "Switching provider modes isn't available yet"
Composer — attach "Attachments aren't available yet"
Composer — model/provider "Model selection isn't available here yet - configure models in Settings"
plugins.py — executePlugin fallthrough node creation "isn't available yet"
HtmlNodeView — popout keeps the real security reason, drops the internal plan-doc citation
SceneCanvas — placeholder node body "Placeholder node"

Every new claim was checked against the code before being written, to avoid replacing one false statement with another. Model selection is genuinely reachable in Settings for all three providers (setOllamaModelAssignment, saveApiConfiguration/loadApiModels, setLlamaCppChatModelPath), so the one string that points somewhere is accurate. Provider-mode switching exists nowhere — set_current_mode is only called by bootstrap_provider_state at startup — so that string deliberately offers no workaround.

Five coupled test assertions updated to match.

Test plan

  • 885 backend / 1208 frontend tests pass, 0 lint errors, typecheck/build clean
  • Burn-down gate unchanged at 152/84/68 (text-only, no Qt files touched)
  • Adversarial review verified each new string against the code — confirmed all five remaining deferrals are genuinely unimplemented (no takeaway/explainer backend symbols; capabilities.attachments still False; downloadTextFile imported only by ChatNodeView/CodeNodeView) and that the HtmlNodeView rewording matches the actual sandbox posture (sandbox="allow-scripts", no allow-same-origin)
  • Review caught one miss, now fixed: SceneCanvas's PlaceholderNodeView rendered "placeholder — real nodes land in R3" as body text — the most visible instance, reachable by double-clicking empty canvas and as the fallback for any unrecognized node kind. The initial sweep covered title attributes and quoted strings but not JSX text content.
  • Final sweep confirms zero user-visible phase references remain in web_ui/src/app/ or backend/; remaining hits are code comments, docstrings, and test-failure messages (internal history, out of scope)

Several disabled controls and one backend notification told users a
capability would arrive in an internal project phase (R3/R4/R5/R6) that
had already shipped and closed - promising "coming in R4" when R4 was
long done and the feature still wasn't there.

Scope was derived by grepping the codebase rather than from the plan's
"4 R4 placeholders" shorthand, which turned out to undercount it. Eight
strings across six files, including a stale R6 promise on
DocumentNodeView's Export item and a backend notification in
plugins.py's executePlugin fallthrough - neither of which an "R4" search
would have found.

Replacements are plain and phase-free:

- ChatNodeView (Key Takeaway, Explainer Note): "AI note generation
  isn't available yet"
- DocumentNodeView (Export): "Document export isn't available yet"
- AppBar (provider mode select): "Switching provider modes isn't
  available yet"
- Composer (attach): "Attachments aren't available yet"
- Composer (model/provider): "Model selection isn't available here yet
  - configure models in Settings"
- plugins.py fallthrough: node creation "isn't available yet"
- HtmlNodeView (popout): keeps the real security reason, drops the
  internal plan-doc citation
- SceneCanvas placeholder node body: "Placeholder node"

Every new claim was checked against the code before being written, to
avoid replacing one false statement with another. Model selection is
genuinely reachable in Settings for all three providers
(setOllamaModelAssignment, saveApiConfiguration/loadApiModels,
setLlamaCppChatModelPath), so the one string that points somewhere is
accurate. Provider-mode switching exists nowhere - set_current_mode is
only called by bootstrap_provider_state at startup - so that string
deliberately offers no workaround.

Adversarial review caught one miss: SceneCanvas's PlaceholderNodeView
rendered "placeholder - real nodes land in R3" as body text, the most
visible instance of all, reachable by double-clicking empty canvas and
as the fallback for any unrecognized node kind. The initial sweep
covered title attributes and quoted strings but not JSX text content.

Five coupled test assertions updated to match.

885 backend / 1208 frontend tests pass, typecheck/lint/build clean,
burn-down gate unchanged at 152/84/68.

Closes R7.5 (a-g).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@dovvnloading
dovvnloading merged commit 11776d5 into main Jul 26, 2026
2 checks passed
@dovvnloading
dovvnloading deleted the qt-removal/r7-5f-stale-placeholder-text branch July 26, 2026 23:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant