Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
b9476d6
fix: stabilize settings window layout
ggbond268 Jul 26, 2026
619d807
feat(settings): add plugin subpage keyboard navigation
xcv58 Jul 27, 2026
78d3040
fix(settings): refine plugin sidebar behavior
xcv58 Jul 27, 2026
0a50485
feat(settings): add unified search palette
xcv58 Jul 28, 2026
b0c2c6e
fix(settings): polish unified search presentation
xcv58 Jul 28, 2026
7688e72
docs: add unified search PR screenshots
xcv58 Jul 28, 2026
43764fa
docs: expand unified search screenshots
xcv58 Jul 28, 2026
f6fff9e
fix(search): address accessibility and navigation review
xcv58 Jul 28, 2026
e54f433
fix(search): harden edge-case navigation
xcv58 Jul 29, 2026
5e2700d
fix(search): address remaining edge cases
xcv58 Jul 29, 2026
be0c8e2
fix(search): harden activation and debug packaging
xcv58 Jul 29, 2026
ad2ae5a
Merge pull request #224 from xcv58/codex/issue-213-plugin-settings-ke…
ggbond268 Jul 29, 2026
6386b80
Merge branch 'main' into codex/issue-210-unified-search
cursoragent Jul 29, 2026
0f9f75e
fix(search): keep sidebar material behind search launcher
cursoragent Jul 29, 2026
65f044f
feat: add app volume plugin
huang6668 Jul 28, 2026
bf7f414
test: fix app volume test concurrency
huang6668 Jul 28, 2026
36c88db
docs: add app volume screenshot
huang6668 Jul 29, 2026
4e2a0a0
fix(shortcuts): reserve MacTools navigation bindings
xcv58 Jul 29, 2026
5d58d86
Merge pull request #225 from xcv58/codex/issue-210-unified-search
ggbond268 Jul 29, 2026
df1dcdd
feat(disk-clean): rewrite plugin as 2.0.0 for faster, safer cleanup
rkrkrkk Jul 30, 2026
1f48340
chore: drop DiskClean rewrite design docs from the PR
rkrkrkk Jul 30, 2026
be8c24f
docs(disk-clean): translate code comments to English
rkrkrkk Jul 30, 2026
5014ae9
fix(disk-clean): address review findings on safety and cleanup races
rkrkrkk Jul 30, 2026
2b381dc
fix(disk-clean): unstick stop, merge logical aliases, release journal…
rkrkrkk Jul 30, 2026
e8d9027
fix(disk-clean): align purge git inspection assertions with Chinese copy
rkrkrkk Jul 30, 2026
3422214
Merge pull request #228 from huang6668/codex/app-volume
ggbond268 Jul 31, 2026
c41ca2c
fix(disk-clean): reject overly broad purge scan roots
cursoragent Jul 31, 2026
dcab390
Merge branch 'main' into worktree-diskclean-rewrite
cursoragent Jul 31, 2026
931e82e
test(disk-clean): create directories in purge-root denylist tests
cursoragent Jul 31, 2026
18f7fcf
ci: retrigger checks after unrelated DeviceBattery flake
cursoragent Jul 31, 2026
c1dabf6
fix(disk-clean): deny top-level personal folders under any user's home
cursoragent Jul 31, 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
3 changes: 3 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ jobs:
- name: Generate Xcode project
run: make generate

- name: Run script tests
run: /usr/bin/python3 -m unittest discover -s scripts/tests -p 'test_*.py'

- name: Build and run tests
run: |
xcodebuild \
Expand Down
2 changes: 2 additions & 0 deletions Configs/MacTools-Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@
<string>$(RIGHT_CLICK_CONFIGURATION_HOME_RELATIVE_PATH)</string>
<key>NSAppleEventsUsageDescription</key>
<string>点击日历日期时需要控制系统日历应用并定位到对应日期。</string>
<key>NSAudioCaptureUsageDescription</key>
<string>仅在调节应用独立音量时于本机实时处理系统音频,不会录制、保存或上传声音。</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>读取蓝牙外设电量,用于在设备电量组件中显示鼠标、键盘和耳机状态。</string>
<key>NSCalendarsUsageDescription</key>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import AppVolumePlugin

private let appVolumePluginFactoryAnchor: Any.Type = AppVolumePluginFactory.self
262 changes: 262 additions & 0 deletions Plugins/AppVolume/Resources/Localizable.xcstrings

Large diffs are not rendered by default.

47 changes: 47 additions & 0 deletions Plugins/AppVolume/Sources/AppVolumeModels.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import CoreAudio
import Foundation

struct AudioApplication: Identifiable, Equatable, Sendable {
let id: String
let displayName: String
let bundleIdentifier: String?
let processObjectIDs: [AudioObjectID]
}

struct AudioApplicationSnapshot: Equatable, Sendable {
let applications: [AudioApplication]
let outputDeviceUID: String?

static let empty = AudioApplicationSnapshot(applications: [], outputDeviceUID: nil)
}

struct ApplicationVolumeTarget: Equatable, Sendable {
let id: String
let processObjectIDs: [AudioObjectID]
let gain: Double
}

@MainActor
protocol AudioApplicationMonitoring: AnyObject {
var onUpdate: ((AudioApplicationSnapshot) -> Void)? { get set }

func start()
func refresh()
func stop()
}

@MainActor
protocol ApplicationVolumeRouting: AnyObject {
var isSupported: Bool { get }

func update(targets: [ApplicationVolumeTarget], outputDeviceUID: String?)
func requestSystemAudioAccess() async -> Bool
func stop()
}

enum AppVolumeAccessState: Equatable {
case unknown
case requesting
case granted
case denied
}
Loading
Loading