Build and CI: clear the warnings so the next real one stands out, and give the surface gallery job headroom
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 25/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Domain
- build-system, ci-cd
Research direction
Start by running swift build -c release from a clean .build to reproduce the warnings, then fix the listed sites in WorkbenchHome.swift, MeetingWorkspaceView.swift, PhoneLink.swift and FloatingToolbar.swift. The timeout change is a one-line edit to timeout-minutes at ci.yml:183, plus its comment at ci.yml:19-20. Done means no warning: lines beyond PackCredentials.swift:36 and checks passing, but the pixel-identical render requirement needs a macOS setup.
Written by the indexing model from the issue text.
Description
Outcome: a clean build prints one deliberate warning, PackCredentials' deprecation. The slowest CI job no longer runs at up to 80% of its time limit.
1. Warnings (train head 14d06bc)
Evidence. Every warning below is at the cited line on 14d06bc.
- Deprecated
onChange(of:perform:)(deprecated since macOS 14, the deployment target inPackage.swift:15):WorkbenchHome.swift:236,:237,:628,:629,:630, andMeetingWorkspaceView.swift:227. - Main-actor members used from nonisolated contexts:
PhoneLink.swift:591-592callsrefresh()fromqueue: .mainobservers.FloatingToolbar.swift:225readscontrols.revealsResultinside the SendableonGeometryChangetransform.HomeJourneyChecks.swift:211readsTextDelivery.copiedMessage(TextDelivery.swift:40).HandoffManualChecks.swift:218callsRunLoop.main.runfrom an async context.
- No-ops:
scripts/test-readback-resources.py:30: unusedoptionalMissing.PresenterPauseChecks.swift:180: aweak varnever mutated.Tests/StageKitLegacy/PhoneOwnerTests.swift:331: unused result.PersonaCameraTests.swift:1277: atrywith nothing that throws.Tests/PrivatePackKitTests/PackStoreTests.swift:175,:181: anawaitwith no async work.
- CI builds from clean (
ci.yml:111,:126,:141,:193), so every run prints all of these with source excerpts. A new real warning is easy to miss among them.
Change
- (a) Use zero-parameter
.onChange(of:)at the five WorkbenchHome sites and{ _, value in }in MeetingWorkspaceView. Bodies are unchanged. - (b) In PhoneLink, use
{ [weak self] _ in MainActor.assumeIsolated { self?.refresh() } }. The observers run on.main;FeedbackViews.swift:108uses the same pattern. - (c) In FloatingToolbar, add
let isResult = controls.revealsResultbesidelet stateinbodyand use it in the transform. - (d) Make
copiedMessageanonisolated static let. - (e) Only with a before/after render of handoff-ready.png and handoff-manual.png: delete the nested
RunLoop.main.runand raise theTask.sleepto 30 ms, which keeps the roughly 450 ms wait before the readiness guard (:220). Without that render, leave this one warning. - (f) Make the mechanical no-op fixes.
- Keep
PackCredentials.swift:36. - Add no warning-count guard: incremental builds don't re-emit warnings, so a guard would flake.
- Swift 6 language mode is not adopted (
Package.swift:41).
Acceptance
- Start from a deleted
.build.swift build -c release,swift build --build-tests,bash scripts/test.shandbash scripts/test-stage.sh --ciprint nowarning:under Sources, Tests or the generated checks, exceptPackCredentials.swift:36. --check-core,--check-floating-toolbar,--check-presenterand--check-handoff-jobspass.- Home (including the permissions states), Meetings and toolbar renders are pixel-identical, apart from clock and timing.
2. Surface gallery timeout
Evidence
ci.yml:132,:147and:183give Release checks, Toolbar gallery and package, and Surface gallery 25 minutes each.- Over the 200 most recent CI runs (6 to 14 October), measured as step time:
- Surface gallery: median 15.6 min, p90 17.6, worst 19.9, which is 80% of its limit. Its median rose from 14.4 to 16.9 min over the period.
- Release checks: worst 17.4 min (70%).
- Toolbar: worst 17.2 min (69%).
- No timeout has fired yet.
- The comment at
ci.yml:19-20still says the longest job takes 'about 13 minutes'. The measured median of the longest job is 16.1 minutes.
Change
- Set Surface gallery's
timeout-minutesto 30 (:183). Leave the other two at 25. - Change the comment to 'about 16 minutes; the surface gallery, the slowest, has taken up to 20'.
- In the commit message, cite the medians and maximums, and note that SurfaceGallery's per-page deadlines (
SurfaceGallery.swift:2650-2653) still stop a hung page.
Acceptance
- A read-only script over the last 200 runs' job steps shows every native job's worst passing run at or under 70% of its limit.
- The comment's stated time is within 2 minutes of the measured median.
scripts/test-ci-scope.pypasses, and the workflow parses.
Value before scope
- Outcome: the next real warning stands out, and a slow runner doesn't time out a merge-queue run.
- Simpler route: the fixes the compiler names, and one limit raised.
- Owner: the files named, and
ci.yml. - Complexity: none added.
- Verified by: clean builds, checks, pixel-identical renders and measured CI timings.
Grammar: Codebase.
Refs #282
Build-ready record from the 15 Oct round-three pass (delight and code-base value), verified against the release train head 14d06bc by an independent skeptic per item. Closes only after native acceptance.
- Dominant language
- Swift
- Stars
- 0
- Forks
- 1
- Avg merge
- 8h 5m
- Merged PRs (30d)
- 215
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Ship-Work/workbench
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
documentation good first issue help wanted
Difficulty 2/5 Half a day Newbie friendliness 74/100
Ship-Work/workbench#29 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 55/100
Maintainers usually reply within 1 day
All issues in Ship-Work/workbench
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SwiftKickMobile/skai#84 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
raullenchai/Rapid-MLX#4889 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 75/100
Maintainers usually reply within 1 day
-
iOS-2026
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
mozilla-mobile/firefox-ios#36150 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 83/100