Repository navigation
fix(native): card glass, virtual tables and the last UI audit rows (batch 4) - #445
Merged
Merged
Conversation
EraPartner
force-pushed
the
claude/project-thread-y00lyp
branch
from
November 14, 2026 12:27
a77c626 to
44a70ae
Compare
EraPartner
marked this pull request as ready for review
November 14, 2026 12:49
EraPartner
enabled auto-merge (squash)
November 14, 2026 12:49
EraPartner
disabled auto-merge
November 14, 2026 12:54
…UI audit rows (batch 4, part 1) - Card fill gradients follow CSS premultiplied interpolation (Full effects sheen) - Card inset highlight fades within a corner radius, not 12% of the height - Remove the topbar sidebar trigger (second sidebar icon) - Background query line under the topbar, as AppLayout places it - Transactions: pencil and box outside the focusable row; bulk bar above search - Planned strip: 2/4/8 columns by breakpoint - Net worth By account as an inset list; asset card grid keeps a lone card in column one - Analysis workspace: saved cards in a two-column aside under the editor - Command palette orders every group by its best cmdk score Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QJtaJ8FGv29hoMcZ1ASbV
…axis (batch 4, part 2) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QJtaJ8FGv29hoMcZ1ASbV
…n layout (batch 4, part 3) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QJtaJ8FGv29hoMcZ1ASbV
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QJtaJ8FGv29hoMcZ1ASbV
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018QJtaJ8FGv29hoMcZ1ASbV
EraPartner
force-pushed
the
claude/project-thread-y00lyp
branch
from
November 14, 2026 12:54
caf591e to
15a29f9
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by EraPartner · project thread
Summary
This is batch 4 (the last one) of the 2026-11-14 Swift vs TypeScript UI audit. It also covers Tor's three notes on #444: the card glow, virtual tables and the second sidebar icon. The TS app is the reference throughout.
Tor's notes
CAGradientLayermixes stop colours without premultiplying alpha. CSS mixes them premultiplied. Betweenhighlight/0.04(near white) andsurface/0.78, the raw mix runs through a bright, half-opaque grey: a diagonal sheen over the top left of everyglass-regularcard. Tor's screenshot reads about 60/255 there, and the CSS curve gives about 25. Separately, the inset highlight rim was lit down 12 % of the card's height on both sidesVisionCardLayerView.premultipliedStopssplits each segment into 12 premultiplied sub-stops. The rim fades out within one corner radius, as0 1px 0 … insetdoes, and each edge fades to its own colour at alpha 0 instead of toclear. Test:CardGradientTestsLocalDataTablealready supportedbodyMaxHeight, but only Net worth (520) and Insights payees (700) used it. Transactions drew its rows in the page scroll, so the header scrolled awayVirtualDataTabledefault), Owes recent 320 (was a non-clipping.frame(maxHeight: 420)), holding history 400 (max-h-[400px], was the whole table inside a ScrollView).PageScrollObserverignores scrollers nested in the page scroller, so a table body no longer drives the topbar veilSidebarTriggeralways visible, next to the sidebar header's collapse buttonAudit rows
BackgroundQueryIndicatordoc). The 2 pt query line moved from the window top to the topbar's bottom edge, where AppLayout puts itevent.target === event.currentTarget), so the pencil's mouse-down no longer focuses and selects the rowgrid-cols-2 sm:grid-cols-4 lg:grid-cols-8by window width. The adaptive 104 pt grid made 10 columns for 8 daysList/ListRowinset list:rounded-card,bg-card/70,border/60,divide-border/50, rows 44 pt /px-4 py-2.5, body type, total as the last rowloneChildSpans: false); a plainlg:grid-cols-2has no only-child span<aside>with Reusable / Saved analyses side by side (lg:grid-cols-2)valuestring and ordered by its best item, as cmdk does. Before, the dynamic groups were pinned above the page groupsactions,justify-end)rowHeight={57})grid-cols-2 sm:grid-cols-4, label over valuesmbutton; symbol in mono body, name in footnotefloor(width / 90). Dropdown row borders and detail pills not changedChecked and left as they are (the Swift code matches the TS source): S-28 (drift chip text and Reconcile are in both; the dates differ by data), S-38 (gain/loss bars are the TS rule), S-47 (the same amber nudge; TS probably showed its loading/failed caption), S-53 (per-app state), S-75 (the name is a link in both), S-85 (both cards are in TS), S-92 (
VisionSegmentedControlis theSegmentedControlport), S-100 (Refine card is always rendered), S-105 (max-w-4xl,w-64rail andw-48selects already match).Still open, needs the Mac: K4 exact hues, S-50 watchlist pills (the metrics path is in-process and tested; cause not found), S-16 Home column gap.
Type of change
fix— bug fixChecklist
bun scripts/native-lint.ts:native-lint okdocs/reference/native-parity/shell-and-settings.md(topbar without trigger, query line, nested scrollers)Verification
Residual risk
tableScrollPositions). It survives only while the screen stays mounted.🤖 Generated with Claude Code
https://claude.ai/code/session_018QJtaJ8FGv29hoMcZ1ASbV