Skip to content

ci: macOS UI smoke for 0.6.2 (do not merge) - #3414

Draft
richiemcilroy wants to merge 74 commits into
mainfrom
ci/macos-ui-smoke-062
Draft

richiemcilroy wants to merge 74 commits into
mainfrom
ci/macos-ui-smoke-062

Conversation

@richiemcilroy

Copy link
Copy Markdown
Member

Draft used to run the new macOS UI smoke job against #2987 and the recording controls click-through fix (#3357) on a Blacksmith runner with a logged-in desktop. It compares this branch's app with main's: menu bar and tray screenshots, a click test under the recording controls, and the main and settings windows in several languages. Not for merging; the pieces land through their own PRs.

Move the Cap menu onto AppKit: the model in `menus.rs` gains Check for
Update, Preferences…, Help destinations, Open File… and Import Media…, and
`platform.rs` patches the standard items after gpui installs the bar —
About becomes `orderFrontStandardAboutPanel:` (the gpui action and its
panel plumbing are gone), autoenables is off so the model owns the enabled
state, and the File menu gets the NSDocumentController-backed Open Recent
list fed by `add_recent_document` on every editor open.

Check for Update resolves to three states (check / download / restart)
and is now rewritten in the live `NSMenuItem` by row position rather than
reinstalling the menu bar, so an open menu survives a status change; the
version and the macOS download percentage ride an `NSMenuItemBadge` on
macOS 14+, and the other platforms only rebuild when the state changes.

Bumps the app to objc2 0.6.5 / objc2-app-kit 0.3.2 / block2 0.6 and
migrates the native code to those bindings.
Give the tray its own AppKit menu: a mode picker (the current mode as a
section header with the mode icons on macOS 14+, the ✓-ticked Recording
Mode submenu on older macOS and on Windows), record/take-screenshot rows,
Previous ▸ with cover-cropped thumbnails, Import Media…, Settings and
Upload Logs, plus the version and the SF Symbols for each row.

The Previous thumbnails reuse the Recents thumbnail cache for JPEG
sources instead of decoding full-resolution originals, which is what the
warm-scan tests cover, and the header follows the palette's highlighted
row in italic.
Fix the tray row's Settings glyph (`gear`, not `gearshape`) and the macOS
26 window symbol, document the File menu (Open File…, Import Media…, Open
Recent), the Help destinations and the live update row.
# Conflicts:
#	.github/workflows/ci.yml
#	apps/chrome-extension/src/offscreen/recorder.test.ts
#	apps/desktop-gpui/kernels/Cargo.toml
#	apps/desktop-gpui/kernels/src/thumbnail.rs
#	apps/desktop-gpui/src/app_windows.rs
#	apps/desktop-gpui/src/camera_blur_portable.rs
#	apps/desktop-gpui/src/controls_window.rs
#	apps/desktop-gpui/src/editor_edits.rs
#	apps/desktop-gpui/src/editor_window.rs
#	apps/desktop-gpui/src/library.rs
#	apps/desktop-gpui/src/main.rs
#	apps/desktop-gpui/src/main_window.rs
#	apps/desktop-gpui/src/menus.rs
#	apps/desktop-gpui/src/mode_select_window.rs
#	apps/desktop-gpui/src/platform.rs
#	apps/desktop-gpui/src/settings_window.rs
#	apps/desktop-gpui/src/target_thumbnails.rs
#	apps/desktop-gpui/src/tray.rs
#	apps/media-server/src/__tests__/lib/media-routes-real-world.integration.test.ts
#	apps/media-server/src/__tests__/lib/recording-verification.integration.test.ts
#	apps/media-server/src/__tests__/lib/storage-upload.test.ts
#	apps/media-server/src/__tests__/routes/lifecycle.test.ts
#	apps/media-server/src/lib/media-video.ts
#	apps/media-server/src/lib/recording-packet-proof.ts
#	apps/media-server/src/lib/recording-timing.ts
#	apps/media-server/src/routes/video.ts
#	apps/mobile/app/(tabs)/upload.tsx
#	apps/mobile/src/screens/dashboard-upload-visibility.test.tsx
#	apps/web/__tests__/unit/add-folder-videos.test.ts
#	apps/web/__tests__/unit/analytics-chart-dates.test.ts
#	apps/web/__tests__/unit/desktop-recording-source.test.ts
#	apps/web/__tests__/unit/finalize-desktop-recording.test.ts
#	apps/web/__tests__/unit/folder-access.test.ts
#	apps/web/__tests__/unit/loom-import-start.test.ts
#	apps/web/__tests__/unit/media-processing-workflows.test.ts
#	apps/web/__tests__/unit/media-server-progress.test.ts
#	apps/web/__tests__/unit/mobile-email-session.test.ts
#	apps/web/__tests__/unit/notification-read-state.test.ts
#	apps/web/__tests__/unit/s3-bucket-connections.test.ts
#	apps/web/__tests__/unit/segment-playlist-route.test.ts
#	apps/web/__tests__/unit/video-pipeline-recovery.test.ts
#	apps/web/__tests__/unit/video-processing-recovery.test.ts
#	apps/web/actions/folders/folder-access.ts
#	apps/web/actions/loom.ts
#	apps/web/actions/notifications/mark-as-read.ts
#	apps/web/actions/spaces/get-space-videos.ts
#	apps/web/app/(org)/dashboard/analytics/components/ChartArea.tsx
#	apps/web/app/s/[videoId]/_components/utils/parse-transcript-vtt.ts
#	apps/web/lib/desktop-recording-source-checkpoint.ts
#	apps/web/lib/desktop-recording-source.ts
#	apps/web/lib/loom-import-start.ts
#	apps/web/lib/loom-import-upload.ts
#	apps/web/lib/loom-media-dispatch.ts
#	apps/web/lib/video-pipeline-recovery.ts
#	apps/web/lib/video-processing-recovery.ts
#	apps/web/workflows/finalize-desktop-recording.ts
#	apps/web/workflows/import-loom-video.ts
#	crates/enc-ffmpeg/src/mux/ogg.rs
#	crates/enc-ffmpeg/src/video/h264.rs
#	crates/enc-ffmpeg/src/video/h264_packet.rs
#	crates/enc-ffmpeg/src/video/packed_yuv.rs
#	crates/project/src/caption_timing/projection_tests.rs
#	crates/project/src/configuration.rs
#	crates/project/src/configuration/style_resolution_tests.rs
#	crates/recording/src/instant_recording/linux_camera.rs
#	crates/recording/src/screenshot.rs
#	crates/rendering/src/frame_pipeline.rs
#	crates/rendering/src/lib.rs
#	crates/scap-targets/src/platform/linux.rs
#	packages/database/types/metadata.ts
#	packages/sdk-recorder/__tests__/recorder-options.test.ts
#	packages/sdk-recorder/src/index.ts
#	packages/web-backend/src/S3Buckets/S3ConnectionPool.ts
#	scripts/prepare-gpui-dependency.sh
#	scripts/prepare-gpui-dependency.test.mjs
@vercel

vercel Bot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
cap-status Ready Ready Preview Oct 26, 2026 6:41pm UTC

@socket-security

socket-security Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedcargo/​objc2@​0.6.4 ⏵ 0.6.57910093100100

View full report

This branch was successfully deployed

2 active deployments
Preview – cap-web — b71e83c6 Deployed Oct 26, 2026 by vercel[bot]
Preview – cap-status — b71e83c6 Deployed Oct 26, 2026 by vercel[bot]
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.

2 participants