Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,16 @@ public struct BetaFeaturesCatalogSection: SettingCatalogSection {
userDefaultsKey: "sidebarWorkspaceTodosChecklistStyle"
)

/// AppKit sidebar list: renders the workspace sidebar's scrollable list
/// with a native NSTableView (measured-once row heights, explicit
/// diffing) instead of the SwiftUI LazyVStack scroll core. Defaults off;
/// while off, the existing SwiftUI list path is unchanged.
public let appKitSidebarList = DefaultsKey<Bool>(
id: "sidebar.beta.appKitList.enabled",
defaultValue: false,
userDefaultsKey: "sidebar.beta.appKitList.enabled"
)

/// Remote tmux: mirror a remote host's tmux sessions in the cmux sidebar
/// over `ssh … tmux -CC` (iTerm2-style control mode). Sessions appear as
/// sidebar workspaces, tmux windows as tabs, and tmux panes as splits;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public struct BetaFeaturesSection: View {
@State private var dock: DefaultsValueModel<Bool>
@State private var extensions: DefaultsValueModel<Bool>
@State private var customSidebars: DefaultsValueModel<Bool>
@State private var appKitSidebarList: DefaultsValueModel<Bool>
@State private var remoteTmux: DefaultsValueModel<Bool>
@State private var workspaceTodosChecklistStyle: DefaultsValueModel<WorkspaceTodoChecklistStyle>

Expand All @@ -19,6 +20,7 @@ public struct BetaFeaturesSection: View {
_dock = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.rightSidebarDock))
_extensions = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.extensions))
_customSidebars = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.customSidebars))
_appKitSidebarList = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.appKitSidebarList))
_remoteTmux = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.remoteTmux))
_workspaceTodosChecklistStyle = State(initialValue: DefaultsValueModel(store: defaultsStore, key: catalog.betaFeatures.workspaceTodosChecklistStyle))
}
Expand All @@ -39,6 +41,8 @@ public struct BetaFeaturesSection: View {
SettingsCardDivider()
customSidebarsRow
SettingsCardDivider()
appKitSidebarListRow
SettingsCardDivider()
remoteTmuxRow
SettingsCardDivider()
workspaceTodosChecklistStyleRow
Expand All @@ -53,6 +57,7 @@ public struct BetaFeaturesSection: View {
dock,
extensions,
customSidebars,
appKitSidebarList,
remoteTmux,
workspaceTodosChecklistStyle,
]
Expand Down Expand Up @@ -151,6 +156,23 @@ public struct BetaFeaturesSection: View {
}
}

@ViewBuilder
private var appKitSidebarListRow: some View {
SettingsCardRow(
configurationReview: .settingsOnly,
searchAnchorID: "setting:betaFeatures:appKitSidebarList",
String(localized: "settings.betaFeatures.appKitSidebarList", defaultValue: "AppKit Sidebar List"),
subtitle: appKitSidebarList.current
? String(localized: "settings.betaFeatures.appKitSidebarList.subtitleOn", defaultValue: "Renders the workspace list with a native AppKit table for smoother scrolling with many workspaces.")
: String(localized: "settings.betaFeatures.appKitSidebarList.subtitleOff", defaultValue: "Uses the existing SwiftUI workspace list until you enable the native table here.")
) {
Toggle("", isOn: Binding(get: { appKitSidebarList.current }, set: { appKitSidebarList.set($0) }))
.labelsHidden()
.controlSize(.small)
.accessibilityIdentifier("SettingsBetaAppKitSidebarListToggle")
}
}

@ViewBuilder
private var remoteTmuxRow: some View {
SettingsCardRow(
Expand Down
51 changes: 51 additions & 0 deletions Resources/Localizable.xcstrings
Original file line number Diff line number Diff line change
Expand Up @@ -153871,6 +153871,57 @@
}
}
},
"settings.betaFeatures.appKitSidebarList": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "AppKit Sidebar List"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "AppKit サイドバーリスト"
}
}
}
},
"settings.betaFeatures.appKitSidebarList.subtitleOff": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Uses the existing SwiftUI workspace list until you enable the native table here."
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "ここで有効にするまで、既存の SwiftUI ワークスペースリストを使用します。"
}
}
}
},
"settings.betaFeatures.appKitSidebarList.subtitleOn": {
"extractionState": "manual",
"localizations": {
"en": {
"stringUnit": {
"state": "translated",
"value": "Renders the workspace list with a native AppKit table for smoother scrolling with many workspaces."
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "ワークスペースリストをネイティブの AppKit テーブルで描画し、多数のワークスペースでもスクロールを滑らかにします。"
}
}
}
},
"settings.betaFeatures.customSidebars": {
"extractionState": "manual",
"localizations": {
Expand Down
Loading