Skip to content

[Frontend][Inbox] A dropped scope-replacement response latches isScopeReplacement with no retry affordance (from PR #2584 review) #2591

Description

@Chris0Jeky

Non-blocking residual from the fresh-context review of PR #2584 (closes #2501, Paper Inbox scope-replacement truth), tracked here rather than fix-cycled. References are at that PR's round-1 head c3258be.

LOW, latched replacement state with no retry affordance. After #2584, useInboxOrchestrator clears isScopeReplacement only when captureStore.fetchItems reports that it applied the response (~379-381). When the response is dropped (superseded request id) nothing clears the flag and nothing re-triggers a load. If the superseding request then succeeds (listError null, loadingList false), PaperTriageTable falls through every branch: the count span is hidden (!scopeReplacement), the Loading block needs loadingList, the empty state needs !hasItems, and the list renders hidden, so the user sees an empty table body under the count-free eyebrow with no Retry until they re-navigate or capture something.

Reachability today: the only production fetchItems caller other than the orchestrator is captureStore.batchTriage's unscoped post-POST refresh, reachable only through batchAction, which only LegacyInboxView destructures, and Legacy never renders isScopeReplacement; so it needs a Paper-theme toggle mid-batch to be seen. It becomes directly reachable the moment Paper gains a batch action or any second fetchItems call site.

Fix direction: when a scope-replacement load resolves as not applied, either re-issue the load for the current scope or clear the flag once a later applied load for the same scope lands; add a deferred-promise spec for the dropped-then-succeeded ordering.

Refs #2501, #2022, #2570, PR #2584.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    frontendPrimary implementation impact in Vue/TypeScript UI and client runtime.tech-debtDebt cleanup or deferred engineering quality work with limited product-surface change.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions