Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6db7e84
test: launch window offers Retry Now and Restart cmux-tui for a stuck…
teamleaderleo Oct 14, 2026
758e3ef
feat: Retry Now and Restart cmux-tui for a stuck owner (cx-jniyz.1)
teamleaderleo Oct 14, 2026
50786b8
fix: a cancelled ensure leaves the Restart gate alone; recovery clear…
teamleaderleo Oct 14, 2026
cf3feba
Merge commit '1bf155a1923a848b1514202518a2e4c24f2e9337' into cx-next-…
teamleaderleo Oct 15, 2026
4d729fb
Merge commit '82e0e8c26258c53360098efcfa98eafe39c9854e' into cx-next-…
teamleaderleo Oct 15, 2026
0e03c31
refactor: launch screen and daemon recovery controls get their own ta…
teamleaderleo Oct 15, 2026
a4cb598
fix: DaemonConnectingView's overrides are public with the class (cx-j…
teamleaderleo Oct 15, 2026
eb35810
fix: the App Store's recovery actions are a DaemonRecovery extension,…
teamleaderleo Oct 15, 2026
2d9cb52
Merge commit 'e7dd2e70a2dbfa474701ba7b4d6105b50c6bcfa7' into cx-next-…
teamleaderleo Oct 15, 2026
b59f9fa
Merge commit 'ba64441671fd977b0e50bc1a96e6c4bfc268b238' into cx-next-…
teamleaderleo Oct 15, 2026
930ef82
motion-record: strip surface, focus left/right across a scrolling str…
lawrencecchen Oct 18, 2026
dad6047
Merge remote-tracking branch 'origin/feat-cmux-next' into nx-strip-ta…
lawrencecchen Oct 18, 2026
6a97d1f
cmux-next strip: a column's tab bar lays out for where its pane rests…
lawrencecchen Oct 18, 2026
780f1ec
cmux-next strip: terminals in the keep-alive band keep drawing, so a …
lawrencecchen Oct 18, 2026
9654704
strip-scroll-check: per-frame camera dx, pill rigidity, blank columns…
lawrencecchen Oct 18, 2026
2e00aa5
strip-scroll-check: camera from the prompt text overlap, the pills' c…
lawrencecchen Oct 18, 2026
5ea1255
Revert "cmux-next strip: terminals in the keep-alive band keep drawin…
lawrencecchen Oct 18, 2026
3462492
motion-record strip: also scroll with the sidebar hidden, the strip u…
lawrencecchen Oct 18, 2026
2753032
cmux-next strip: a moving column keeps the larger traffic-light inset…
lawrencecchen Oct 18, 2026
b6282a7
Merge remote-tracking branch 'origin/feat-cmux-next' into nx-strip-ta…
lawrencecchen Oct 18, 2026
9a40640
perf-gate: sidebar list reloads name their caller (debug.sidebar_perf…
lawrencecchen Oct 18, 2026
e249480
sidebar: a top-item selection repaints the old and new item; no band …
lawrencecchen Oct 18, 2026
be94e06
sidebar: drop a stray fragment from the bandsDrawSelectionChange remo…
lawrencecchen Oct 18, 2026
39c2ee1
perf-gate: a switch budget of 0 sidebar row configures and 0 band upd…
lawrencecchen Oct 18, 2026
9b8bbd4
Merge origin/feat-cmux-next (c6f31b26494f) into feat-cmux-next
lawrencecchen Oct 18, 2026
cd2e0cd
safe-push train: merge 9b8bbd4e4208 (nx-strip-tabbar)
Oct 18, 2026
fa3de16
Merge origin/feat-cmux-next into cx-jniyz.1-restart-cmux-tui
teamleaderleo Oct 18, 2026
3eaf574
Merge remote-tracking branch 'origin/feat-cmux-next' into cx-next-han…
teamleaderleo Oct 18, 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
13 changes: 12 additions & 1 deletion Packages/macOS/CmuxNext/Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ let package = Package(
"CmuxNextFocusUI",
"CmuxNextComputerUse",
"CmuxNextAgentQuestion",
"CmuxNextDaemonRecovery",
.product(name: "CmuxAgentQuestion", package: "CmuxAgentQuestion"),
.product(name: "CmuxHomeCore", package: "CmuxHomeCore"),
.product(name: "CmuxHomeRender", package: "CmuxHomeRender"),
Expand Down Expand Up @@ -353,6 +354,16 @@ let package = Package(
),
// The agent question card (plans/cmux-next/agent-questions.md): one
// AppKit view and layout for Home rows, agent panes and the UI Gallery.
// The launch window's connecting and failure screen with Retry Now and
// Restart cmux-tui, and the App Store banner's recovery actions (cx-jniyz.1).
.target(
name: "CmuxNextDaemonRecovery",
dependencies: ["CmuxNextApps", "CmuxNextCompat", "CmuxNextDaemon", "CmuxNextDaemonService", "CmuxNextDesign", "CmuxNextWakeups"],
resources: [
.process("Resources"),
],
swiftSettings: uiSwiftSettings
),
.target(
name: "CmuxNextAgentQuestion",
dependencies: [
Expand Down Expand Up @@ -955,7 +966,7 @@ let package = Package(
.testTarget(
name: "CmuxNextAppTests",
dependencies: ["CmuxNextWakeups", "CmuxNextNowPlaying", "CmuxNextLayout", "CmuxNextTasks", "CmuxNextAgentCursor", "CmuxNextTabs", "CmuxNextProcessEnvironment", "CmuxNextApp", "CmuxNextAgentLanes", "CmuxNextBrowserHistory", "CmuxNextCrashReporting", "CmuxNextActions", "CmuxNextHistory", "CmuxNextCopyMode",
"CmuxNextComputerUse", "CmuxNextDaemon", "CmuxNextDaemonService", "CmuxNextRemoteLocalhostService", "CmuxNextFocus", "CmuxNextFocusUI", "CmuxNextHome", "CmuxNextHomeEngine", .product(name: "CmuxHomeCore", package: "CmuxHomeCore"),
"CmuxNextComputerUse", "CmuxNextDaemon", "CmuxNextDaemonRecovery", "CmuxNextDaemonService", "CmuxNextRemoteLocalhostService", "CmuxNextFocus", "CmuxNextFocusUI", "CmuxNextHome", "CmuxNextHomeEngine", .product(name: "CmuxHomeCore", package: "CmuxHomeCore"),
.product(name: "CmuxHomeRender", package: "CmuxHomeRender"),
.product(name: "CmuxAgentQuestion", package: "CmuxAgentQuestion"),
// GhosttyGlassMinimumContrastTests builds a Ghostty config.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import AppKit
import CmuxNextActions
import CmuxNextApps
import CmuxNextControl
import CmuxNextDaemonRecovery
import CmuxNextDaemonService
import CmuxNextIcons
import CmuxNextPages
import CmuxNextSettings
Expand Down Expand Up @@ -34,8 +36,9 @@ final class AppsService {
/// The App Store tabs (internal page), one store model per tab over the
/// one client. Captures the client, not the service, so a page set that
/// outlives the service still makes models.
private(set) lazy var storePages = AppStorePages { [weak self, client = self.client] in
private(set) lazy var storePages = AppStorePages { [weak self, client = self.client, recovery = self.services.daemon.recovery] in
let model = AppStoreModel(client: client)
model.recovery = { recovery.appsRecovery }
model.onNavigate = { self?.services.locationTrail.pageHistoryDidChange() }
return model
}
Expand Down
Loading
Loading