Skip to content

fix(platform): keep skill editor visible after saving - #4405

Open
yannickmonney wants to merge 1 commit into
mainfrom
fix/skill-editor-successful-save
Open

yannickmonney wants to merge 1 commit into
mainfrom
fix/skill-editor-successful-save

Conversation

@yannickmonney

@yannickmonney yannickmonney commented Oct 5, 2026 •

Copy link
Copy Markdown
Contributor

A successful skill save cleared the local form after awaiting query invalidation. When normalized saved data stayed unchanged, or detail refreshed before the library, no effect reseeded it and the editor went blank.

Render saved values directly whenever there is no local draft. Successful saves now keep Description, Labels, Visibility and Instructions visible and leave Save clean, while refusals preserve the draft.

Validation:

  • 44 tests pass across six targeted skill component/hook files, one worker under /opt/node/bin/node.
  • New regressions use the real SkillsSettings parent, skill query/save hooks, React Query and HTTP adapters: unchanged normalized saves, both detail/library refresh orders, refusal, untouched reopen without PUT. The unchanged implementation fails the no-op and detail-first cases.
  • Real Chromium confirms the normalized no-op and changed saves preserve the editor and clean Save; visual-aspect-analyzer baseline 100 / final 100, zero defects. Screenshots and reports are retained in the task delivery box.
  • Scoped type check (changed sources and parent consumers), type-aware oxlint, oxfmt, manual register gate and conflict-marker gate pass.
  • The manual automation register has a unique anchor; git merge-tree checked 75 open heads against the change and main. No new conflicts or duplicate anchors; 31 heads already conflict with main.

LIGHT phase only; existing dependencies. HTTP fixtures use an in-memory door, not the file store or a live backend. Actions was reported stalled under incident 3q1yb5m7ltvb; checks will be watched without rerunning workflows. Independent nonauthor review remains required.

Closes #3642

Current-main rebase

Replayed the previously accepted source 3381e04bcd2086edafdb621ff71588c135fb2789 onto main d1373d84cd56972501403f62145ec52e6f65d44a, including the merged shared CI repair in #4625. The accepted feature payload and all current-main changes are preserved in one atomic commit. Configured commit and conflict checks pass; earlier behavioral proof remains recorded above. All seven native required checks and full merge-group validation remain required for this new source.

Maintenance replay: preserves the accepted feature payload on main fd277c4, including merged #4649, #4650 and #4655. Retains the exact independently accepted one-line shared CLI inventory repair from #4654 (252f0df), pending native merge on main. The #4282 task-register union, where applicable, retains the accepted feature row and current-main rows. Existing behavioral evidence remains recorded above; no fresh full-feature/full-workspace or hosted-green claim. All seven native required contexts and full merge-group validation remain mandatory.

@yannickmonney

Copy link
Copy Markdown
Contributor Author

TALE-186 / TALE-359 dispatch report (PR-comment fallback)

Implemented #3642 in 59a087781b225fb0f3566cef04d9466410a7c3b9: the editor renders the saved document whenever no local draft exists, so clearing the draft after successful invalidation cannot blank the pane.

Verification: 44 tests pass across six targeted skill suites with one worker; the new real-parent/hooks/React Query/HTTP regressions fail on unchanged main for the normalized no-op and detail-first refresh, and pass with this fix. Both refresh orders, refused-save draft retention, and untouched reopen without PUT are covered. Scoped types, type-aware oxlint, oxfmt, manual register and conflict-marker gates pass. Chromium confirms no-op and changed saves remain visible and clean; visual analyzer baseline 100 / final 100, zero defects. The register anchor is unique across 75 open PR heads; merge-tree shows no newly introduced conflicts (31 heads already conflict with main).

CI watch: 21 checks pending, seven expected candidate-source skips, no failures observed. Actions incident 3q1yb5m7ltvb was reported in dispatch; no workflows rerun. LIGHT phase only, existing dependencies, no live backend or production testing. Independent nonauthor review remains pending.

workspace_status returned unavailable / not_granted, so task comments could not be posted to TALE-186 or TALE-359 through the connector. This comment is the requested fallback. Evidence and patch are in /agent/output/37df1b13-3b70-4cbc-a743-2e19e621c30a/.

@yannickmonney

Copy link
Copy Markdown
Contributor Author

Independent exact-head verdict for TALE-935 / TALE-186 / TALE-359

Reviewed 59a087781b225fb0f3566cef04d9466410a7c3b9 on PR #4405 independently of author Codex #9.

Verdict: the #3642 save-visibility fix passes; the full brief cannot be marked clean because stale-write protection is still absent at this head. No new blocking defect found in the four-file change. The stale-write gap predates this PR and is separately addressed by open PR #4192 (issue #3933); this is not a claim that #4405 introduced it.

Observed:

  • Successful normalized no-op saves (trailing description space trimmed) retain Description, Labels, Visibility and Instructions with saved values and disabled Save, including both detail-before-library and library-before-detail refresh orders.
  • Changed saves retain the saved editor in both refresh orders; a second edit enables Save without reopening.
  • Refused saves retain the draft and persisted document. Untouched reopen retains the values with zero PUTs.
  • Outstanding stale overwrite: open the original document, edit its body locally, publish a newer server body, refresh detail, then save the old draft. The independent HTTP probe expects Newer server body. but receives Write clearly. Local.. The pane preserves the old draft while its saved baseline advances, and the save at skill-detail-pane.tsx:158 carries no version validator. The real adapter sends no If-Match, and the app PUT route only forwards If-None-Match; the file-layer conditional protection therefore cannot reject this stale edit. In-memory reproduction is corroborated by the production request path; no live file-store test is claimed.
  • Register anchor: git merge-tree --write-tree against all 79 other open PR heads. The new heading occurs exactly once and is outside every conflict region. All 21 register conflicts also exist against current origin/main (8e4c6a40b); no new anchor collision.

Local verification using existing dependencies:

  • Pane suites: 24/24 pass, one worker under /opt/node/bin/node.
  • Pane read-recovery consumer: 5/5 pass, one worker.
  • Independent probes: 2/2 normalized no-op refresh-order cases pass; stale-overwrite safety assertion fails as described above.
  • Scoped type-aware oxlint: exit 0. Scoped oxfmt: all three TypeScript files pass. Scoped TypeScript (changed files, pane dialog, settings parent, UI setup and their imports): exit 0. Diff whitespace check passes.
  • Review-only Vite server.fs.allow permits the existing font asset. The first stock-timeout run under concurrent local static checks timed out and contaminated subsequent cases; the passing rerun uses a 30-second test timeout and 10-second Testing Library async timeout. Production source was unchanged.

CI: pending, stalled incident 3q1yb5m7ltvb. Read checks only; no rerun, push, merge or status change.

Posting fallback: workspace_status returned unavailable / not_granted, so TALE-186 and TALE-359 task comments could not be posted through the granted workspace service. This PR comment is the requested fallback for both tasks. The verdict, logs, review-only config and reproduction are retained in TALE-935's delivery box.

@yannickmonney
yannickmonney force-pushed the fix/skill-editor-successful-save branch from 59a0877 to 3381e04 Compare October 9, 2026 06:36
@yannickmonney
yannickmonney force-pushed the fix/skill-editor-successful-save branch from 3381e04 to 7c05469 Compare October 9, 2026 14:09
@yannickmonney
yannickmonney force-pushed the fix/skill-editor-successful-save branch from 7c05469 to fdec8ed Compare October 9, 2026 15:23
@yannickmonney
yannickmonney added this pull request to the merge queue Oct 9, 2026

This branch has not been deployed

No deployments
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.

bug(platform): successful skill saves can leave the editor blank until it is reopened

1 participant