Skip to content

Preview proposal changes on saved board objects across experiences - #2872

Merged
Chris0Jeky merged 2 commits into
codex/2808-overhaul-integrationfrom
codex/2808-board-proposal-overlays
Sep 10, 2026
Merged

Preview proposal changes on saved board objects across experiences#2872
Chris0Jeky merged 2 commits into
codex/2808-overhaul-integrationfrom
codex/2808-board-proposal-overlays

Conversation

@Chris0Jeky

Copy link
Copy Markdown
Owner

Proposals could be previewed in Chat and Review, but users still had to match the described changes to board objects themselves. Preview on board now opens a checked, read-only layer over the saved board in both renderers and all four experiences. Existing card/column targets are marked, while the diff describes new or hidden objects; saved board data remains unchanged.

The panel verifies board/proposal identity, effective revision, status and update time across the checked diff and operation payload. Execution parameter IDs take precedence over display IDs. Account, board, refresh/access failures and a short server-relative freshness window retract the preview. Open Review returns to the exact proposal; approval and Apply stay in Review. This continues #2808 and is stacked on #2870.

Verification: full frontend 6,368 passed with three existing skips before final target/access refinements; final scoped 49 passed, and 63 combined overlay/audio tests passed after integrating the corrected parent. Typecheck, production build, scoped ESLint, doc links and governance passed. A real API Chromium journey passed in15.8seconds across Classic/Studio/Companion/Unified, both renderers and375px, with no overflow or serious/critical axe findings, unchanged saved cards/columns, zero browser mutation calls, explicit close, Review navigation and403 recovery. Initial synthetic fixture errors were corrected and failed logs retained. Only validation append text conflicted during the parent merge; both sections were retained and runtime matches the independently reviewed feature commit.

Independent Luna review found no HIGH/CRITICAL defect. MEDIUM follow-through: Close currently relies on route unmount to invalidate a pending request, leaving a brief response/route race; a synchronous close invalidation regression is tracked under #2808. No provider quality, physical-device, actual Apply or production deployment acceptance is claimed. OUTSTANDING_TASKS.md owner decisions remain unchanged.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 10, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-10T01:25:19.666762Z b262c8e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@Chris0Jeky Chris0Jeky moved this from Pending to Review in Taskdeck Execution Sep 10, 2026
@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Board proposal overlays are implemented in #2872, stacked on #2870. Local full/scoped/browser evidence is in the PR; no board writes or approval/apply were added. Independent review has no HIGH/CRITICAL finding. MEDIUM follow-through: synchronously invalidate an in-flight preview on Close, rather than waiting for the route unmount, and add a close-during-load regression. This is a short UI race and is tracked with the other #2808 interaction refinements instead of expanding the current review cycle.

Source interaction #2870 full suites passed. Its MEDIUM deep-offset SQL scan cost is being addressed in the next source scalability slice, alongside the original-library metadata-query follow-through; upload413 error fidelity is also in progress. The umbrella remains open.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b262c8ecc6

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +81 to +85
function closeProposalPreview() {
proposalMarkers.value = {}
const query = { ...route.query }
delete query.proposalId
void router.replace({ query })

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Invalidate in-flight previews before closing

When the user clicks Close while load() is awaiting its two GETs, this handler clears only the parent marker map and waits for the asynchronous router.replace() to unmount the child. A response that lands first still matches the child's unchanged generation and can emit markers again after they were cleared; if navigation is delayed or aborted, those supposedly closed markers persist. Invalidate the child request synchronously as part of closing rather than relying on route-driven unmount.

Useful? React with 👍 / 👎.

Comment on lines +2879 to +2883
<router-link
v-if="activeProposal.boardId && !isArchivedHistory && ['PendingReview', 'Approved'].includes(normalizeProposalStatus(activeProposal.status))"
class="tk-meta"
:to="{ path: `/workspace/boards/${activeProposal.boardId}`, query: { proposalId: activeProposal.id } }"
>Preview on board</router-link>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Hide board-preview links for expired proposals

For a PendingReview or Approved proposal whose expiresAt has passed, this condition still exposes Preview on board even though the Review code already classifies it as read-only and BuildProposalDiffAsync rejects expired proposals. The destination therefore offers only a refresh that fails. Add the existing isProposalExpired(activeProposal) guard here and the equivalent proposal.isExpired/expiry guard in ReviewProposalDetails.vue:172.

Useful? React with 👍 / 👎.

Comment on lines +85 to +88
<h2>Proposed board changes</h2>
<button type="button" :disabled="loading || !available" @click="load">{{ loading ? 'Checking proposal…' : 'Refresh board preview' }}</button>
<RouterLink :to="{ path: '/workspace/review', query: { boardId: board.id }, hash: `#proposal-${proposalId}` }">Open Review</RouterLink>
<button type="button" @click="emit('close')">Close preview</button>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Route the preview panel copy through locale catalogs

When Italian or Spanish is selected, this new board panel remains entirely in English because its labels and explanatory copy are hardcoded rather than read through vue-i18n. Board and Review are already extracted surfaces, and ADR-0054 requires future user-visible strings on them to be added to all three catalogs, so this introduces a mixed-language core flow. Add board/review catalog keys for the panel and the new Review links instead of embedding English literals.

Useful? React with 👍 / 👎.

Base automatically changed from codex/2808-source-interaction-followthrough to codex/2808-overhaul-integration September 10, 2026 02:42
@Chris0Jeky
Chris0Jeky merged commit b262c8e into codex/2808-overhaul-integration Sep 10, 2026
34 of 35 checks passed
@github-project-automation github-project-automation Bot moved this from Review to Done in Taskdeck Execution Sep 10, 2026
@Chris0Jeky
Chris0Jeky deleted the codex/2808-board-proposal-overlays branch September 10, 2026 02:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant