Skip to content

fix(workstation): surface failed issue/PR detail fetches instead of dropping them - #2036

Merged
gfargo-horizon-agent[bot] merged 2 commits into
mainfrom
agent/coco-1770-coco-1863-ws-9-fix-workstation-failed-is
Aug 2, 2026
Merged

fix(workstation): surface failed issue/PR detail fetches instead of dropping them#2036
gfargo-horizon-agent[bot] merged 2 commits into
mainfrom
agent/coco-1770-coco-1863-ws-9-fix-workstation-failed-is

Conversation

@gfargo-horizon-agent

@gfargo-horizon-agent gfargo-horizon-agent Bot commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

What

The two debounced issue/PR detail hydration effects in useDetailHydration.ts discarded a failed forge.getIssueDetail / forge.getPullRequestDetail result without writing anything to context. Because nothing was written, the triage preview pane stayed on the "Loading…" placeholder forever, and the effect's cache-skip guard (which only checked the success cache) never re-fired on re-cursor, so there was no retry either.

Why

Closes #1863
Plane: OSS-1770

How

  • Added issueDetailErrorByNumber / pullRequestDetailErrorByNumber caches to LogInkContext, mirroring the existing detail caches.
  • Both hydration effects in useDetailHydration.ts now write the forge's message into the error cache on failure (frame-tagged like the success path), and the cache-skip guard treats a cached error the same as a cached detail (stops silent infinite re-fetching).
  • formatIssueTriagePreview / formatPullRequestTriagePreview (previewPane.ts) accept an optional error and render it in place of the "Loading…" placeholder when a detail fetch failed; detail/index.ts's two preview-panel renderers thread the cached error through.
  • useForgeTriageWorkflowActions.ts's post-mutation cache invalidation now clears the matching error-cache entry alongside the detail-cache entry, so a resolved transient failure (e.g. rate limit) retries after the user acts on the row.
  • Blame / file-history / commit-note hydration effects are untouched — they use a different loading-flag convention and aren't part of this bug.

Testing

  • build passes (npm run build)
  • tests pass / added (npm run test:jest targeted + full npm test suite — 419/419 suites, 0 failures; added preview-pane cases for the error branch)
  • lint clean (npm run lint)
  • CI: pending

🤖 Generated by the harbor agent loop. Reviewed by a human before merge.

Closes #1863

…ropping them

The debounced issue/PR detail hydration effects discarded a failed
forge fetch without writing anything to context, so the triage
preview pane stayed on the "Loading…" placeholder forever and
re-cursoring the row never retried (the effect's cache-skip guard
only checked the success cache). Cache the failure message alongside
the detail (mirroring the #1633 list-loader treatment) so the
preview pane can render it, and clear the cached error on mutation
invalidation so a resolved transient failure retries.

@gfargo-horizon-agent gfargo-horizon-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🔎 Agent review (sonnet) — CONCERNS

REVIEW: CONCERNS
RESOLVES: full

The PR faithfully implements the approved plan — dual error caches, both hydration effects, preview formatters, invalidation mirroring, and new tests all verified against origin/main, and build/lint/tests pass locally. One inconsistency with the codebase's established ascii-mode convention is worth a follow-up but isn't blocking.

1 concern — 1 inline on the diff

Comment thread src/workstation/chrome/previewPane.ts Outdated
Reviewer flagged that the emoji bypasses the theme.ascii fallback
convention used elsewhere in this surface, and formatIssueTriagePreview/
formatPullRequestTriagePreview don't receive theme to guard it. Simplest
fix is to drop the glyph — the "Failed to load details:" prefix already
makes the line self-explanatory.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

@gfargo-horizon-agent gfargo-horizon-agent Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

🔎 Agent re-review (sonnet, delta) — LGTM

REVIEW: LGTM
RESOLVES: full

The revise commit (0e35107) cleanly drops the hardcoded ⚠ glyph from both preview-pane error lines, exactly resolving the prior finding with a minimal, side-effect-free diff. No new problems introduced.

@gfargo-horizon-agent
gfargo-horizon-agent Bot merged commit 34fd6ad into main Aug 2, 2026
11 checks passed
@gfargo-horizon-agent
gfargo-horizon-agent Bot deleted the agent/coco-1770-coco-1863-ws-9-fix-workstation-failed-is branch August 2, 2026 14:11
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.

WS-9: fix(workstation): failed issue/PR detail fetches are dropped with no message and no retry

0 participants