Skip to content

Feat: macOS title bar and screen reader checks in the gate, and a Kotlin/Native macOS cell - #63

Merged
b-re-w merged 11 commits into
extendedfrom
feat/macos-chrome-ax-checks
Oct 24, 2026
Merged

b-re-w merged 11 commits into
extendedfrom
feat/macos-chrome-ax-checks

Conversation

@b-re-w

@b-re-w b-re-w commented Oct 18, 2026

Copy link
Copy Markdown
Member

Closes #62. Needs thisisthepy/compose-multiplatform-core-extended#148 (both macOS windows on the common chrome and accessibility API) and the scene PR (ComposeWindowHost hands its semantics to the platform) merged; CORE_EXTENDED_REF then moves to the merged extended commit. Draft until then. It is pinned to JetBrains#148's head for now, so the chrome checks run and the screen reader check shows what is missing.

GraalVM macOS cell (hello-awtfree)

  • The text field gets a name for screen readers (contentDescription = "Your name"); the button is named by its text.
  • HELLO_TITLE_BAR=Simple opens the plain title bar; unset is Normal.
  • The self-check gains step 4 (platformChecks, macOS Platform.kt): it asks the window in process (AppKitWindowPlatform.accessibilitySnapshot(), the objects AppKit's accessibility server answers clients from) and fails on any finding of macosChromeFindings (three system buttons, content under the bar, no title drawn, caption height and button room matching the buttons' frames, corner radius from the measured table) or macosAccessibleContentFindings (an AXTextField "Your name" and an AXButton "click me"). It prints what the system's AX API answered an outside client, with the error code.
  • check-one-executable.sh on macOS requires chrome: ok (Normal) and accessibility: ok, runs the executable again with Simple, requires chrome: ok (Simple), and on macOS 26 requires Normal's close button further in than Simple's.

Kotlin/Native macOS cell (new job One executable (Kotlin/Native, macos-arm64))

  • extended/native-desktop/hello-awtfree-kn: the same content and text check (hello-awtfree/src/shared) in native-macos's window via MacosWindowPlatform, linked by Gradle (Kotlin 2.4.10) with org.thisisthepy.kotlin.native.desktop against the core fork's macosArm64 Compose; wrong-size frames come from the window's own present check.
  • Same gate script, same checks.
  • extended/ci/core-compose keys its cache by the trees the Compose build reads, not by commit, so moving CORE_EXTENDED_REF for window changes reuses the built Compose.

Needs a human on real hardware: VoiceOver reading and acting on both executables.

b-re-w and others added 2 commits October 18, 2026 12:55
… told, and a Kotlin/Native macOS cell

hello-awtfree's self-check on macOS walks its own accessibility elements in
process (a hosted runner trusts no outside client) and fails unless the system
buttons are there, the content runs under the bar, no title is drawn, the caption
matches the buttons' frames, the corner radius is the measured table's, and the
field and the button are found by role and name. The gate runs it with the Normal
and the Simple title bar and, on macOS 26, requires Normal's buttons further in.
The system AX API's answer is printed with its error code.

"One executable (Kotlin/Native, macos-arm64)" links the same content
(hello-awtfree/src/shared) in native-macos with the native desktop plugin against
the core fork's macosArm64 Compose and runs the same gate. The core Compose cache
is keyed by the sources the build reads rather than by commit.

FR-19.4, FR-19.7, NFR-8. Closes #62.
@b-re-w
b-re-w marked this pull request as ready for review October 24, 2026 02:57
@b-re-w
b-re-w merged commit 98281f2 into extended Oct 24, 2026
32 checks passed
@b-re-w
b-re-w deleted the feat/macos-chrome-ax-checks branch October 24, 2026 06:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant