mirror of
https://github.com/luxfi/safe-wallet.git
synced 2026-10-30 15:19:21 +00:00
* feat: redesign transaction signing history as Audit Log Replace the vertical stepper signing history with a timeline-based Audit Log panel. Each event shows a contextual icon (created/signed/executed), actor address with click-to-copy, and a standardized timestamp. The header consolidates the confirmation count (reusing TxConfirmations), share link, and explorer button in one row. A disabled explorer button with tooltip is shown for queued transactions not yet on-chain. - Remove mock signer origin data (not yet supported by API) - Clean up dead TxShareBlock/TxExplorerLink exports and orphaned CSS - Add 14 unit tests covering label logic, banners, clipboard, and a11y WA-1902 * feat: extend Audit Log to module and incoming transactions Extend the Audit Log panel to cover all transaction types, not just multisig. Module-executed transactions show a Created row (initiator EOA resolved via on-chain RPC lookup) and an Executed row (module name/address). Incoming and other simple executed transactions show a single Executed row with the on-chain sender. - Add module and incoming tx branches to TxSigners - Hide duplicate Created/Executed/hash rows from Summary via hideAuditLogFields prop when the Audit Log is visible - Hide "Executed via module" section when Audit Log covers it - Add tx hash copy button and reorder header icons (link, hash, explorer) - Extract useCopyToClipboard hook to DRY clipboard logic - Rename LinkIcon import to ExplorerFallbackIcon for clarity - Add moduleExecutionDetailsBuilder to test builders - Add 5 new tests for module and incoming tx audit log WA-1902 * chore: remove tx hash copy button from Audit Log header The transaction hash is accessible from the block explorer page, so the hash copy icon in the Audit Log header is redundant. Remove it and restore the hash row in the Summary panel. WA-1902 * chore: remove transaction hash field from transaction details panel The tx hash is already accessible via the explorer link icon, making this field redundant. * tests: remove transaction hash assertions from Cypress tx history tests The transaction hash field was removed from the transaction details panel, so these assertions are no longer valid. * fix: show audit log alerts for all signers while tx is in queue The proposer warning and threshold alert were hidden for the last signer who could sign-and-execute, because canExecute made isConfirmed true prematurely. Now the threshold alert uses actual confirmation count and the proposer alert only checks for execution. * feat: add Audit Log to messages and extract shared components - Add MsgAuditLog component for message details, replacing MsgSigners in the details panel with a timeline-style audit log matching transactions - Extract shared AuditRow, useCopyToClipboard, formatAuditDateTime, and ActionType into components/common/AuditLog to eliminate ~99 lines of duplication between TxSigners and MsgAuditLog * chore: polish audit log timeline visuals - Remove top padding from columns 2 and 3 for horizontal alignment - Increase spacing after header divider (mb 1.5 → 2) - Use background.main for timeline icon, remove border - Match timeline line color to icon background * refactor: rename hideAuditLogFields to showAuditLogFields Use a positive boolean to match the convention of sibling props (showMultisend, showDecodedData). * chore: address code review feedback on audit log - Use browser locale instead of hardcoded en-US for date formatting - Add .catch() to clipboard write to handle permission errors * fix: hide dash placeholder in audit log when no address is available * chore: address QA feedback on audit log polish and consistency - Migrate RecoverySigners to use AuditRow timeline pattern - Extract shared AuditLogHeader component, eliminating 3x duplication - Standardize alert spacing (mt: 2) and text pattern across all consumers - Add 'pending' (clock) and 'expired' (error) action types with proper icons - Move expired order warning into TxSigners, suppress contradicting info alerts - Fix empty actorRow DOM rendering on last timeline items --------- Co-authored-by: Hanzo Dev <[email protected]>