Skip to content

[Fix] API-key integration drafts disappear after failed saves - #3446

Closed
roomote-roomote[bot] wants to merge 1 commit into
developfrom
fix/integration-key-draft-recovery-2kk2pv6m60hba
Closed

roomote-roomote[bot] wants to merge 1 commit into
developfrom
fix/integration-key-draft-recovery-2kk2pv6m60hba

Conversation

@roomote-roomote

@roomote-roomote roomote-roomote Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

​Opened on behalf of Daniel Riccio. Follow up by mentioning @roomote-roomote, in the web UI, or in Telegram.

Keep this PR draft. Accepted visual proof is missing after the bounded capture step timed out before independent proof review completed. Do not auto-promote it solely on clean CI or automated code review.

Related issue

No linked issue; internal Roomote product work.

Why this PR exists

  • A maintainer explicitly invited this PR in the linked issue or discussion
  • I am a maintainer / this is internal Roomote work

When an API-key integration save request fails, the form clears the name, origin and other nonsecret fields as well as the key. Users must rebuild the setup to try again, even though only the key needs clearing.

What changed

Clear only the key input after sending the request, retaining nonsecret fields and selections for recovery. Successful creation still closes the dialog; local validation and duplicate-submit protection retain their existing behavior. No new state, UI choices, dependencies, auth, protocol or persistence behavior.

Use readable foreground text for the touched save-error message and document recovery from both shared and personal settings.

How it was tested

  • Current develop 35201fbf: actual authenticated server rejection erased Name/Service origin. After aligning sandbox public authority to its configured browser target, a nonresolving test origin returned HTTP 500 and reproduced the same loss; valid public origin returned 201 and persisted the synthetic fixture, then removal returned 204.
  • Both new shared/personal regressions fail on baseline and pass on this change. Eight focused tests cover key clearing during pending/error, retained name/origin/scheme/methods/lifetime, duplicate suppression and successful retry. Web types and normal commit/pre-push gates pass.
  • pnpm --filter @roomote/docs check passes build validation and broken-link checks. The initial Mintlify preview returned HTTP 500 / “No docs config”; after restarting its existing sandbox process it returned HTTP 200. The changed paragraph's rendered appearance was not re-inspected under the no-proof-recovery instruction.
  • Before capture timeout, actual desktop-light shared and mobile-dark personal forms retained fields after HTTP 500; correcting the origin, re-entering a synthetic disposable key and using Save returned 201 and real list rows. Both error-dialog axe audits reported zero violations/incomplete. No browser response or DOM mocks, real key, provider call or customer message.

Remaining proof gap: the shared five-minute step expired before independent proof review completed. Its partial images are not accepted proof and are not embedded. No further capture or proof recovery is authorized in this occurrence. Passing tests or code review does not establish readiness under the requested proof standard.

Continuation only if later authorized: check out the exact pushed head; align the sandbox's configured public authority with the required browser URL without bypassing Origin/auth checks; submit synthetic values with a nonresolving .invalid HTTPS origin; confirm retained nonsecret fields and empty key after the real failure; correct to a public origin, re-enter a disposable synthetic key and Save; verify actual 201/list persistence in shared and personal views; complete a bounded accepted proof handoff/independent review and exact-head CI reconciliation. Remove all fixture integrations through the API/UI and restore sandbox overrides. The fixtures from this run have already been removed and the override restored.

Checklist

  • The PR title follows the repo convention: [Fix], [Feat], [Improve], [Refactor], [Docs], or [Chore] followed by a user-facing description
  • This PR is small and scoped to one change
  • pnpm lint and pnpm check-types pass locally — normal fast lint/types/knip pre-push gates passed instead
  • I added tests or included a clear manual validation note above
  • I removed secrets, tokens, private keys, and customer data from code, logs, and screenshots
  • If this change should appear in the changelog, I ran pnpm changeset — not run for this scoped fix

Related PRs

@roomote-community

roomote-community Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

No code issues found. See task

Reviewed all three changed files, including shared/personal form recovery, key clearing, duplicate-submit protection, successful retry, and documentation consistency. Current-head lint, type checking, Knip, and docs validation passed; tests, the app Docker build, and JavaScript/TypeScript analysis are still running.

The visual-proof gap described in the PR remains outside this code-review result. No approval or draft-state change was made.

Reviewed 9af41d9

@roomote-roomote
roomote-roomote Bot marked this pull request as ready for review October 9, 2026 07:10
@roomote-roomote
roomote-roomote Bot marked this pull request as draft October 9, 2026 07:13
@roomote-roomote

roomote-roomote Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor Author

Draft-state correction: GitHub's timeline records automation setting ready_for_review at 2026-10-09T07:10:12Z and restoration to draft (convert_to_draft) at 07:13:49Z, both at unchanged head 9af41d973a0c354c16a6ed94fd2850ffd88e7d2a. An authoritative read at 07:11:33Z reported non-draft despite the description's accepted-proof gap and explicit keep-draft instruction; Test was still pending at that read. I restored draft through the native source-control action. The 07:14:36Z check confirms draft:true, with all code/CI gates now terminal and passing (path/policy skips remain skips). Accepted visual proof is still missing after the bounded capture timeout. No capture retry or proof recovery is authorized this occurrence, and clean code review/passing CI must not promote this PR.

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