fix(gui): reduce choice builder full-reload usage#1136
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughThe PR implements context-aware in-place rendering for file-opening settings in ChoiceBuilder and its subclasses. The Changes
Possibly related PRs
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying quickadd with
|
| Latest commit: |
7c7cc51
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://942dbe94.quickadd.pages.dev |
| Branch Preview URL: | https://fsm-phase4-reduce-choicebuil.quickadd.pages.dev |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
src/gui/ChoiceBuilder/choiceBuilder.ts (1)
30-37: Clear stale file-opening container references on fallback/full-render paths.
fileOpeningSectionContainercan retain a detached element reference across redraw branches. Resetting it explicitly makes section-mode detection safer for future call paths.♻️ Suggested hardening
this.reloadController = new ModalReloadController({ modalEl: this.modalEl, contentEl: this.contentEl, render: () => { + this.fileOpeningSectionContainer = null; this.contentEl.empty(); this.display(); }, }); @@ - if (!contextLabel) return; + if (!contextLabel) { + this.fileOpeningSectionContainer = null; + return; + }Also applies to: 139-143
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/gui/ChoiceBuilder/choiceBuilder.ts` around lines 30 - 37, The fileOpeningSectionContainer reference can persist a detached DOM node across redraw branches; update the ModalReloadController render callback (where reloadController is created) and the other fallback/full-render paths (the branches around the display logic referenced at lines ~139-143) to explicitly null/clear fileOpeningSectionContainer before repopulating the UI: inside the render: () => { ... } and in the fallback/full-render branches set this.fileOpeningSectionContainer = null (or empty container) prior to calling this.contentEl.empty() / this.display() so section-mode detection always sees a fresh container reference.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@src/gui/ChoiceBuilder/choiceBuilder.ts`:
- Around line 30-37: The fileOpeningSectionContainer reference can persist a
detached DOM node across redraw branches; update the ModalReloadController
render callback (where reloadController is created) and the other
fallback/full-render paths (the branches around the display logic referenced at
lines ~139-143) to explicitly null/clear fileOpeningSectionContainer before
repopulating the UI: inside the render: () => { ... } and in the
fallback/full-render branches set this.fileOpeningSectionContainer = null (or
empty container) prior to calling this.contentEl.empty() / this.display() so
section-mode detection always sees a fresh container reference.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 46b5caf5-10ba-41a1-8d32-f3e0718eb2dd
📒 Files selected for processing (4)
plans/issue-1130-fsm-modal-reload.mdsrc/gui/ChoiceBuilder/captureChoiceBuilder.tssrc/gui/ChoiceBuilder/choiceBuilder.tssrc/gui/ChoiceBuilder/templateChoiceBuilder.ts
* Revert "fix(gui): reduce choice builder reload churn (#1136)" This reverts commit 818272a. * Revert "fix(gui): reduce macro settings modal reload churn (#1135)" This reverts commit a1a6271. * Revert "fix(gui): reduce ai settings modal reload churn (#1134)" This reverts commit ae0f7a1. * Revert "test(gui): harden modal reload queue replay (#1133)" This reverts commit 9373144. * Revert "fix(gui): preserve modal edit position during settings reload (#1132)" This reverts commit 11bda19.
# [2.12.0](2.11.0...2.12.0) (2026-03-05) ### Bug Fixes * **capture:** preserve canvas tab indentation on configured writes ([#1125](#1125)) ([0a1578e](0a1578e)) * disallow capture targets with .base extension ([cb39ed4](cb39ed4)) * **field-suggestions:** opt-in inline values from fenced code blocks ([#1128](#1128)) ([8597905](8597905)) * **gui:** preserve modal edit position during settings reload ([#1132](#1132)) ([11bda19](11bda19)) * **gui:** reduce ai settings modal reload churn ([#1134](#1134)) ([ae0f7a1](ae0f7a1)) * **gui:** reduce choice builder reload churn ([#1136](#1136)) ([818272a](818272a)) * **gui:** reduce macro settings modal reload churn ([#1135](#1135)) ([a1a6271](a1a6271)) * harden existing-tab matching and document issue workflow ([#1108](#1108)) ([7b12d3b](7b12d3b)) * make template path resolution deterministic ([3297d54](3297d54)) * normalize capture title for non-markdown targets ([964d672](964d672)) * preserve capture-format spacing for insert-at-end ([#1119](#1119)) ([8bb8ed4](8bb8ed4)) * preserve explicit capture target file extensions ([57e43ff](57e43ff)) * preserve insert-at-end order for non-newline captures ([#1120](#1120)) ([e7cbbf2](e7cbbf2)) * resolve template file-name paths without duplicate default folder ([7bfd41b](7bfd41b)) * resolve vault-relative template paths using root folders ([81216de](81216de)) ### Features * add AI request logging API and reduce assistant log noise ([#1110](#1110)) ([2c36800](2c36800)) * automate docs version snapshot during release ([#1111](#1111)) ([1571846](1571846)) * **capture:** fully support capture into canvas cards ([#1124](#1124)) ([a53f889](a53f889)) * **cli:** add native QuickAdd Obsidian CLI handlers ([#1129](#1129)) ([8102d47](8102d47)) * **format:** support mapped VALUE suggester display text ([#1127](#1127)) ([b8ec56c](b8ec56c)) * **macro:** add editor cursor navigation commands ([101d5f6](101d5f6)) * support .base template files for template choices ([11e6490](11e6490)) ### Reverts * **gui:** remove modal reload refactor series ([#1137](#1137)) ([3ba1a73](3ba1a73)), closes [#1136](#1136) [#1135](#1135) [#1134](#1134) [#1133](#1133) [#1132](#1132)
|
🎉 This PR is included in version 2.12.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Reduce remaining full modal reload usage in shared ChoiceBuilder open-file controls by rerendering only the file-opening section in place.
This is phase 4 of the FSM/reload stabilization stream after #1132, #1133, #1134, and #1135.
What changed:
choiceBuilder__fileOpeningSectionWhy:
Validation:
Refs #1130
Summary by CodeRabbit