Repository navigation
fix(client): align term, smart-tag and settings icons with the design system - #343
Conversation
The contract row menu's "New term" item led with `sell`, the price-tag glyph, where the design system (Contracts.jsx) and every other term surface — the term dialog, the record's Terms count, the term-changed event and the term history chart — use the typeset `§`. That same misuse is why the contract record moved its smart-tag glyph to `local_offer`: `sell` already meant Terms in its counts strip. With terms on `§`, the contract host returns to `sell` for smart tags, matching the account and property records and the AccountSmartTagsSection default; `local_offer` stays the transaction-tag glyph. The design system's Contracts.jsx counts strip was aligned to `sell` in the same change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyMiAsjC8g6gxvnRddT1Ks
Fifteen settings rows and one group carried icons the design system's catalogue (system-settings-data.js) does not use, among them the price-tag `sell` on the terms cap. The client now takes the design system's icon for every row both sides declare. The design system lacked five Contracts rows the client already ships (terms cap, smart-tags cap, the ending-soon and upcoming-transactions windows, and the upcoming-transactions cap); they were added there in the same change. The terms cap uses `gavel`: the icon font has no `§` ligature, and the row must not read as a tag. The upcoming-transactions cap moved to `receipt_long` so it no longer shares `format_list_numbered` with the contracts-in-summary cap in the same group. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyMiAsjC8g6gxvnRddT1Ks
|
I don't think this PR caused it:
My guess is a timing race: the detail view's async sections re-render the menu between Generated by Claude Code |
|
✅ PR was reviewed by Security Agent. No security-relevant changes detected: Approved. Generated by Claude Code |
|
✅ PR was reviewed by Accessibility Agent and no issues were found: Approved. Scope checked (frontend changes present, icon-only): the "New term" row action now uses the literal Generated by Claude Code |
|
✅ PR was reviewed by Senior Architect Agent and no blocking issues were found: Approved. Scope: client-only icon changes, so there is no API, DTO, migration or auth impact. Checked against the live tree:
Non-blocking nit: the new Generated by Claude Code |
|
❌ Senior Tester Agent review of PR #343 found one gap and one minor item. I did not run the suite (no code behaviour changed); this is a read of the diff and the surrounding tests. What is sound
1. Missing regression guard for the smart-tag half of the fix (principle: untested behaviour change)
2. Minor: two intents in the PR have no test
Notes, no action required
Generated by Claude Code |
|
✅ "PR was reviewed by Senior Frontend Agent and no issues were found: Approved." Verified against design-system artifact version 1792697499-128a (frontend scope only):
Non-blocking nit:
Generated by Claude Code |
The review found nothing guarding the smart-tag half of the glyph fix: the harness override was the only test naming the section's icon, and dropping it left a revert to local_offer passing. A source lint now pins the counts-strip glyph and that ContractDetailView takes the section's sell default rather than overriding it. The section's doc comment no longer claims transaction tags always use local_offer; the transaction detail panel shows them under sell, as the design system does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SyMiAsjC8g6gxvnRddT1Ks
|
Responses to the review round, addressed in
Generated by Claude Code |
|
✅ PR was reviewed by Senior Tester Agent and no issues were found. This is a re-review of head 1dcdd7d against my earlier findings. I read the diff and did not run the suite.
Generated by Claude Code |
Summary
Terms and smart tags. The New term item in the contract row menu used
sell(price tag). The design system (Contracts.jsx) and every other term surface (term dialog, Terms count, term-changed event, term history chart) use the typeset§. Fixed. Becausesellhad already meant Terms in the contract record, smart tags there had been moved tolocal_offer. They are back onsell, the same as on accounts, properties and theAccountSmartTagsSectiondefault.§(gavelwhere only a font ligature works, e.g. settings rows)selllocal_offerSystem settings. 15 rows and 1 group icon differed from the design system's catalogue (
system-settings-data.js). The client now uses the design system's icon wherever both sides declare the row, so all 66 rows match.gavel, because the icon font has no§ligature.receipt_long, so it no longer shares an icon with the contracts-in-summary cap in the same group.Design-system artifact: versions 37 and 38.
Type of Change
Testing Steps
⋯menu → New term shows§.sell.dotnet test Odyssey.Client.Tests: 3730 passed, 0 failed.New_term_carries_the_term_glyph, covers the menu glyph.SettingRowIconTestsconfirms every new settings icon exists in the bundled font.Related Issues
None.
🤖 Generated with Claude Code
https://claude.ai/code/session_01SyMiAsjC8g6gxvnRddT1Ks