T 087
uid: T-087 title: Records β restore double-click β receipt detail drawer (regression after tab merger) status: done area: accounting-records created: 2026-06-21 updated: 2026-06-23 related: I-004
Why (owner, 2026-06-21, verbatim via I-004)¶
"Why is it that I can no longer open the receipt detail modal upon double clicking it? The behavior has changed, can you possibly reverse it back to how it was (the tab has gone thru a merger with the Service invoice tab previously, that might have changed the behavior)"
I-004 is the symptom record. This task is the structural fix on top.
Root cause (from I-004)¶
The ReceiptsβService-Invoices tab merger consolidated ReceiptsTab.tsx + VendorInvoicesTab.tsx into
one components/records/ExpenseRecordsTab.tsx. The detail-drawer wiring was dropped entirely in
that merge β ExpenseRecordsTab didn't import ReceiptDetailDrawer / VendorInvoiceDetailDrawer, and
the double-click handler did window.open(fileUrl, '_blank') instead of setActiveId(r.id).
Fix¶
Re-introduce both drawers in ExpenseRecordsTab and route double-click back to the detail drawer keyed
on the row's kind:
receiptrows βReceiptDetailDrawer(by un-prefixedrecordId)service-invoicerows βVendorInvoiceDetailDrawer(lazily fetches the richerVendorInvoiceRowfrom/api/records/vendor-invoicesand matches byrecordId === VendorInvoiceRow.idper the feed mapping β avoids a lossy map that could wipe the fingerprint on the drawer's edit-save)
Raw-file open stays available via right-click β "Open file in new tab" + the per-row PDF button; helper text updated to "double-click opens details".
Decision log¶
2026-06-21 β opened + fixed in a single commit¶
- β
Attestation (Accounting (Diagnostics)): read
AGENTS.md; scope-scanned the board β no existing task covers the modal-regression symptom. T-084 (sibling PR #777) is now scoped to fix (a) only after the split. - Source: Accounting (Diagnostics) Β· https://claude.ai/code/session_01G58Y71noihrYCDEDMexmea
- What changed: opened ticket I-004 (symptom record) and this task T-087 (structural fix). Both
files added in the same commit as the code fix on a new branch off
nightly. The fix is the cherry- picked content of commit8b0f8f33(originally landed onclaude/records-display-fixes-yxMLMas "fix(t-084b)" before the split β commit re-attributed to T-087 here). - Proposed by: the owner β "split the symptoms differently" + chose "Two new tickets, two tasks" (2026-06-21).
- UID note β why T-087 (not T-085): PR #775 (the WOPC restructure branch) holds T-085 + T-086 from
an earlier renumber today. Taking T-087 here (skipping T-085, T-086) avoids a guaranteed collision
whichever PR merges second. The records-display branch's
tasks/READMEjumps fromT-085 β T-088to reflect the skip (a comment note will be added if the README structure supports inline notes; the jump itself is documented here). - Related: PR #777 (T-084 β vendor-invoice display name, the sibling split-out fix) + I-003 (its symptom record, opened on the records-display branch).
2026-06-23 β DONE (audit close-out)¶
- β
Attestation (Accounting (Diagnostics)): read
AGENTS.md; this is a status-audit close-out, not new scope. - Source: Accounting (Diagnostics) Β· https://claude.ai/code/session_01G58Y71noihrYCDEDMexmea
- Verdict: the structural fix shipped β commit
42ba7de9("restore double-click β detail drawer in ExpenseRecordsTab (closes I-004)"), merged via PR #779. Confirmed live onmain:components/records/ExpenseRecordsTab.tsximportsReceiptDetailDrawer+VendorInvoiceDetailDrawerand routes double-click to the keyed drawer. Status was left ondoingafter merge; flipped todonehere. - Scope boundary: the separate image-placeholder symptom (cropped/original receipt images render as a picture icon) is its own ticket I-006 (β T-096), still open β NOT part of T-087's restore-the-drawer-open scope. Closing T-087 does not close that.