fix(datagrid): the filter bar, the pane menu's name, and the three red suites on main - #3044
Merged
Merged
Conversation
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.
mainhas been red since 2026-09-20. Five separate failures, one per commit here.The filter bar opened empty (#3026)
FilterPanelViewdrawscoordinator.selectedTabFilterState, which lives onQueryTabManager.tabs, but the view only observedcoordinator. It got away with that because it also carried two closure properties, and a closure is never equal to another one, so SwiftUI re-evaluatedbodyon every parent render. #3026 removed those two closures. SwiftUI can now compare the view's own stored properties, finds them unchanged and skipsbody.So the row
onAppearadds reached the model and never reached the screen. Measured with OSLog on a sample-database launch:PANEL onAppear filters=0 columns=3 visible=true,COORD addFilter done count=1, and the rendered bar holding Clear and Apply with no row between them and no enable-all checkbox in the header.The user-facing shape: ⌘⇧F opens an empty filter bar with nothing to type into, focus stays in the object list, and the filter text becomes type-select there. Typing
ArtistId IS NOT NULLover Album selects Artist and opens it.The fix names the store the view actually renders.
The trailing pane's commands menu had no name (#3041)
trailing-pane-menupublished AppKit's fallback name for an unnamed pull-down: "More" locally and the empty string on the CI runner, for the same build. The ellipsis draws no text, so that was the only name VoiceOver had for Inspector Options, Assistant Options and History Options.Measured on macOS 27, four placements in order:
.labelStyle(.iconOnly)on theLabel, the same style on theMenu,.accessibilityLabelinside the label closure (howResultSetMenunames its pull-down), and.accessibilityLabelon theMenu. None of them reach it..accessibilityElementdoes, and it has to be.contain:.ignorenames the button and takes the menu's own items out of the tree with it, so nothing can reach Fields or JSON.Both regressions are in unreleased code, so they fold into the existing
[Unreleased]entries rather than adding "Fixed" lines.Three tests and a workflow
DefaultSortInitialQueryTestsasserted that the unsorted first-load path leaves the query byte-identical. #3026 madeprepareTableTabFirstLoadrebuild the browse query unconditionally, which is deliberate and what the two sibling tests already assert. The assertions now check the invariant the test names: noORDER BY, not sorting, the live page size.CooperativePoolBlockingTestsbudgeted 0.9s of wall clock foractiveProcessorCount + 4blockers sleeping 300ms each. On the runner that measures libdispatch bringing worker threads up one at a time, not the shape under test: 2.00s and 2.26s on two failing runs, with the concurrency high-water mark at the fullblockerCountboth times. The peak is the whole property, so the clock goes.iOS Tests failed 3 of the last 12 runs with
Failed to launch app ... (ipc/mig) server diedon a second simulator clone. Every test in every run, passing and failing, executed on "Clone 1 of iPhone 17 Pro": the extra clone only booted, and booting a second iOS 26 simulator on a 3-core runner is what killed it.-parallel-testing-enabled NOcosts nothing and removes the failure mode.Verification
Run locally against a sample database, on macOS 26.6.2 with Xcode 26.4.1.
DefaultSortInitialQueryTestsCooperativePoolBlockingTestsFilterBarReturnUITestsFilterPersistenceUITestsTrailingPaneSurfaceUITestsswiftlint --strictclean on every changed Swift file,actionlintclean on the workflow.