Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
99c6c6f
test: give the bundled-CLI product tests their own host-free target
teamleaderleo Sep 22, 2026
9bcab48
ci: teach the product guards about the cmux-cli-tests scheme and lane
teamleaderleo Sep 23, 2026
3c8b361
test: remove app-host dependencies from CLI product tests
teamleaderleo Sep 23, 2026
f04f04c
Merge remote-tracking branch 'origin/main' into codex/pr13795-unwind
teamleaderleo Sep 23, 2026
a1da9c3
ci: bound the suite coverage diagnostic job
teamleaderleo Sep 23, 2026
9f50dd2
test: cover targeted CLI product admission and required verdicts
teamleaderleo Sep 23, 2026
cca64e4
ci: route CLI product tests through required artifact admission
teamleaderleo Sep 23, 2026
8430c20
Merge reviewed CLI routing with updated PR base
teamleaderleo Sep 23, 2026
496f257
Merge main and preserve independent CLI and package test routes
teamleaderleo Sep 23, 2026
07d809a
test: cover shared CLI runner pipe backpressure and early exits
teamleaderleo Sep 23, 2026
fdf7fe8
test: drain CLI subprocess pipes concurrently with stdin
teamleaderleo Sep 23, 2026
8a64f31
test: complete host-free CLI source and executable dependencies
teamleaderleo Sep 23, 2026
e59b7cb
test: tolerate disconnected hook clients in the host-free runner
teamleaderleo Sep 23, 2026
54c2b22
Merge remote-tracking branch 'origin/test/cli-product-target' into co…
teamleaderleo Sep 23, 2026
bc122a5
test: keep disconnected fixture sockets from killing CLI tests
teamleaderleo Sep 23, 2026
14304b1
test: repair remaining host-free CLI fixture failures
teamleaderleo Sep 23, 2026
26d5a61
test: confirm child is alive before reporting timeout
teamleaderleo Sep 23, 2026
5400eab
test: use shared subprocess lifecycle for Campfire hooks
teamleaderleo Sep 23, 2026
de7a2b3
Merge main app-host fixture repairs and settings runtime fix
teamleaderleo Sep 23, 2026
9d9a443
Merge remote-tracking branch 'origin/main' into test/cli-product-target
teamleaderleo Sep 23, 2026
9907431
test: keep the Ghostty shell-integration relay test in the app-host b…
teamleaderleo Sep 23, 2026
9855d4c
ci: extend the pbxproj wiring guard to the host-free CLI test target
teamleaderleo Sep 23, 2026
80444fa
ci: drop shard weights for suites that left the app-host bundle
teamleaderleo Sep 23, 2026
59928ee
Merge remote-tracking branch 'origin/main' into test/cli-product-target
teamleaderleo Sep 23, 2026
d305797
Merge origin/main into test/cli-product-target
teamleaderleo Sep 23, 2026
278eef5
test: give the CLI product lane a home the test process actually reads
teamleaderleo Sep 23, 2026
18ec726
ci: pin the CLI product lane's Xcode to the pull-request lane
teamleaderleo Sep 23, 2026
407f1f3
Merge origin/main into test/cli-product-target
teamleaderleo Sep 23, 2026
157337b
Merge main into test/cli-product-target
teamleaderleo Sep 23, 2026
535c2ec
Merge main into test/cli-product-target
teamleaderleo Sep 23, 2026
522f676
test: cover unit_suite in the CLI product routing gates
teamleaderleo Sep 24, 2026
a503997
Merge commit '789edd3e5a02d9a6e3629b66e3cae767afd46a85' into HEAD
teamleaderleo Sep 24, 2026
9cc1182
ci: hand the CLI tests the resolved binary and guard fixture sockets
teamleaderleo Sep 24, 2026
3be01b9
Merge origin/main into test/cli-product-target
teamleaderleo Sep 24, 2026
14193ee
test: skip fixture clients whose SIGPIPE guard fails; finish every write
teamleaderleo Sep 24, 2026
cd1d9d2
ci: give the CLI product tests the fork hosted-runner branch
teamleaderleo Sep 24, 2026
24b8e12
Merge origin/main into test/cli-product-target
teamleaderleo Sep 24, 2026
adc2403
ci: run the CLI product tests on compile admission's pool and Xcode
teamleaderleo Sep 24, 2026
b12468c
Merge origin/main into test/cli-product-target
teamleaderleo Sep 24, 2026
f5ddb6e
test: lint the CLI test target only in checkouts that have one
teamleaderleo Sep 24, 2026
810558c
Merge upstream/main into test/cli-product-target
teamleaderleo Sep 24, 2026
f53a07f
Merge upstream/main into test/cli-product-target
teamleaderleo Sep 24, 2026
52feb84
Merge upstream/main into test/cli-product-target
teamleaderleo Sep 24, 2026
ed641d8
test: allow the client-side workspace ref lookup in two CLI suites
teamleaderleo Sep 24, 2026
9da37e1
Merge upstream/main (#13988) into test/cli-product-target
teamleaderleo Sep 24, 2026
fad3d56
test: expect the snapshot workspace lookup in respawn-pane's missing-…
teamleaderleo Sep 24, 2026
faa1c3b
Merge remote-tracking branch 'upstream/main' into lane-cli/test-cli-p…
teamleaderleo Sep 24, 2026
877eaef
ci: keep the moved CLI suites under the determinism lints
teamleaderleo Sep 24, 2026
0635556
ci: give cli-product-tests the consumer steps app-host-unit-tests has
teamleaderleo Sep 24, 2026
f390288
ci: route the CLI lane when its ci-macos.yml job or scripts change
teamleaderleo Sep 24, 2026
2270319
test: use the shared fixture-socket helpers in every CLI mock server
teamleaderleo Sep 24, 2026
e50b70f
ci: let cli-product-tests mint the R2 transport's OIDC token
teamleaderleo Sep 24, 2026
9a6886a
Merge remote-tracking branch 'upstream/main' into lane-cli/test-cli-p…
teamleaderleo Sep 24, 2026
bff98f3
Merge upstream/main into test/cli-product-target
teamleaderleo Sep 24, 2026
7163d3a
Merge remote-tracking branch 'upstream/main' into lane-cli/test-cli-p…
teamleaderleo Sep 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci-guards.yml
Original file line number Diff line number Diff line change
Expand Up @@ -782,6 +782,7 @@ jobs:
python3 tests/test_e2e_warm_derived_data.py
python3 tests/test_seed_derived_data.py
python3 tests/test_ci_product_publication.py
python3 tests/test_ci_cli_product_routing.py

- name: Validate Python R2 appcast upload guard
if: ${{ matrix.group == 'release-tooling' }}
Expand Down
257 changes: 253 additions & 4 deletions .github/workflows/ci-macos.yml

Large diffs are not rendered by default.

13 changes: 7 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1025,7 +1025,7 @@ jobs:
- browser
- guards
- web
if: ${{ !cancelled() && github.event_name == 'pull_request' && needs.changes.result == 'success' && needs.static-preflight.result == 'success' && needs.changes.outputs.macos != 'false' && (needs.changes.outputs.full_suite == 'true' || needs.changes.outputs.compile_admitted != 'true') }}
if: ${{ !cancelled() && github.event_name == 'pull_request' && needs.changes.result == 'success' && needs.static-preflight.result == 'success' && (needs.changes.outputs.macos != 'false' || needs.changes.outputs.cli == 'true') && (needs.changes.outputs.full_suite == 'true' || needs.changes.outputs.cli == 'true' || needs.changes.outputs.compile_admitted != 'true') }}
runs-on: ${{ github.repository_owner != 'manaflow-ai' && 'ubuntu-24.04' || vars.LINUX_RUNNER || 'blacksmith-4vcpu-ubuntu-2404' }}
timeout-minutes: 5
permissions: {}
Expand Down Expand Up @@ -1060,9 +1060,8 @@ jobs:
# Packages/ still needs the package-test lane, which is not part of compile
# admission and would otherwise be skipped whenever the app-host product is
# already admitted or the macOS area is neutral (a Packages/iOS package
# outside the desktop closure). Every other job in the called workflow stays
# gated on inputs.macos, so nothing else wakes up with it.
if: ${{ !cancelled() && needs.changes.result == 'success' && needs.static-preflight.result == 'success' && (needs.macos-admission-gate.result == 'success' || needs.macos-admission-gate.result == 'skipped') && ((needs.changes.outputs.macos != 'false' && (needs.changes.outputs.full_suite == 'true' || needs.changes.outputs.unit_suite == 'true' || needs.changes.outputs.compile_admitted != 'true')) || needs.changes.outputs.swift_packages == 'true') }}
# outside the desktop closure). Other jobs retain their macos/cli gates.
if: ${{ !cancelled() && needs.changes.result == 'success' && needs.static-preflight.result == 'success' && (needs.macos-admission-gate.result == 'success' || needs.macos-admission-gate.result == 'skipped') && (((needs.changes.outputs.macos != 'false' || needs.changes.outputs.cli == 'true') && (needs.changes.outputs.full_suite == 'true' || needs.changes.outputs.unit_suite == 'true' || needs.changes.outputs.cli == 'true' || needs.changes.outputs.compile_admitted != 'true')) || needs.changes.outputs.swift_packages == 'true') }}
permissions:
actions: read
id-token: write
Expand All @@ -1072,6 +1071,7 @@ jobs:
uses: ./.github/workflows/ci-macos.yml
with:
macos: ${{ needs.changes.outputs.macos }}
cli: ${{ needs.changes.outputs.cli }}
full_suite: ${{ needs.changes.outputs.full_suite }}
unit_suite: ${{ needs.changes.outputs.unit_suite }}
unit_selectors: ${{ needs.changes.outputs.unit_selectors }}
Expand Down Expand Up @@ -1141,11 +1141,12 @@ jobs:
# product and full_suite stayed false.
unit_suite = outputs.get("unit_suite") == "true"
macos_work_required = swift_packages or (
macos_route == "true"
and (
(
unit_suite
or outputs.get("cli") == "true"
or not (full_suite == "false" and compile_admitted == "true")
)
and (macos_route == "true" or outputs.get("cli") == "true")
)
if macos_work_required:
if macos_result != "success":
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/// Category an agent hook attaches to a notification so the app can gate
/// delivery by user config. Mirrors the CLI's `ClaudeNotifyCategory`; serialized
/// into the `notify_target_async` payload's optional `c=<category>;p=<0|1>` meta.
public enum AgentNotifyCategory: String, Sendable {
case turnComplete = "turn-complete"
case needsPermission = "needs-permission"
case idleReminder = "idle-reminder"
case other

public var soundAlertType: NotificationSoundAlertType? {
switch self {
case .turnComplete: return .turnDone
case .needsPermission, .idleReminder: return .needsInput
case .other: return nil
}
}
}

18 changes: 0 additions & 18 deletions Sources/AgentNotificationGate.swift
Original file line number Diff line number Diff line change
@@ -1,24 +1,6 @@
import CmuxSettings
import Foundation

/// Category an agent hook attaches to a notification so the app can gate
/// delivery by user config. Mirrors the CLI's `ClaudeNotifyCategory`; serialized
/// into the `notify_target_async` payload's optional `c=<category>;p=<0|1>` meta.
enum AgentNotifyCategory: String {
case turnComplete = "turn-complete"
case needsPermission = "needs-permission"
case idleReminder = "idle-reminder"
case other

var soundAlertType: NotificationSoundAlertType? {
switch self {
case .turnComplete: return .turnDone
case .needsPermission, .idleReminder: return .needsInput
case .other: return nil
}
}
}

/// User policy for the "Claude finished a turn" notification.
enum AgentTurnCompleteMode: String {
case whenIdle
Expand Down
Loading
Loading