Repository navigation
fix(native): make the broken Swift controls from the UI audit work - #441
Merged
Merged
Conversation
- Compare: the symbol search popup now sits above the empty-state card, so its rows take clicks; results carry the web's leading plus icon. - Payees and other paged LocalDataTables: an end marker asks for the next page again after each page, so the table no longer stops at 50 of 53. - Analysis workspace: the Refine card renders without a result, as on the web, so Prepare and Calculate have sections to open; Present is enabled. - Forecast diagnostics: take the web layout from draft PR #440 (accuracy table with method colours, rank badges and MAE sparklines; multicolour ensemble weight bars). - Tooltips: the anchor view is transparent to the mouse, so it cannot take a click meant for the control (Planned header menu). - Insights: a tab click selects the tab at once, before the route change. - Disclosures: a click anywhere on the title row toggles, like <details>. Claude-Session: https://claude.ai/code/session_018QJtaJarBqP17meJGcCBkv
EraPartner
marked this pull request as ready for review
November 14, 2026 08:29
This was referenced Nov 14, 2026
Merged
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
Batch 1 of the 2026-11-14 Swift vs TypeScript UI audit: the Swift controls that were broken. The TS app is the reference.
zIndexwas set inside an innerVStack, so the empty-state card (a later sibling of that stack) drew over the popup and took its clicksResearchCompareView: raise the whole search block while the popup is open; rows get the web's leadingPlusicon (leadingSymbolonResearchSymbolSearchView)onAppear, which fires once per row; a missed request was never repeated (exact trigger not reproduced: inference)LocalDataTable: an end marker with a new identity per page asks again viaonRowAppear(last)whilehasMoreanalysis-prepare/analysis-calculatesections) was only built with a result; the web always renders it. Present was.disabledwithout a result; the web link is always enabledAnalysisWorkspaceView: Refine card always present; Present enabledProgressViewper weightHomeForecastDiagnostics.swiftand the newComponents/VisionTable.swiftfrom draft PR #440 unchanged (accuracy table with method colour dots, rank badges, MAE sparkline column; multicolour weight bars). Checked againstCashFlowForecastDiagnostics.tsx(METHOD_COLORS, column order,w-44,h-1.5)NSViewis now transparent to the mouse (hitTest→ nil); Planned modifier order matches Payees/Owes. UnverifiedStatisticsModel.selectTabsets the tab at once on click. UnverifiedDisclosureGrouptoggles only on its chevron; web<details>toggles on the whole summaryVisionDisclosureGroupStyle(whole title row is the button, tertiary chevron that rotates), set once at the shell rootOther rows checked and left alone: S-102 (monitor picker disabled) and S-106 (Restore disabled) follow the same enable rules as TS (
eligible.length === 0,!restoreFile). The difference is the Demo state, not code.PR #440: this branch is based on
main, not on #440. Only #440's forecast-diagnostics file and itsVisionTablecomponent were taken over, byte for byte, so #440 should rebase cleanly over them. No other #440 file was touched.Type of change
fix— bug fixChecklist
bun scripts/native-lint.ts:native-lint ok(string-literal-compare 701, baseline 716)swiftjob (no Swift toolchain in the cloud container)Verification
Residual risk & follow-ups
DisclosureGroupon screen (print paths that use their own renderer are unchanged). VoiceOver no longer hears the native expanded/collapsed state.Generated by Claude Code