easy-codex 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -51,7 +51,7 @@ macOS 14+ 安装后运行:
|
|
|
51
51
|
easy-codex overlay
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
独立 AppKit 浮窗在 Codex 位于前台时显示,切到其他应用、最小化或关闭 Codex 窗口后隐藏。默认位于 Codex
|
|
54
|
+
独立 AppKit 浮窗在 Codex 位于前台时显示,切到其他应用、最小化或关闭 Codex 窗口后隐藏。默认位于 Codex 窗口左下角头像上方;拖动可校准位置,偏移量保存在本机。它按窗口边界跟随,不自动识别头像;侧栏布局变化后可再次拖动。首版跟随最前面的一个 Codex 普通窗口。
|
|
55
55
|
|
|
56
56
|
- 圆环长度表示剩余百分比:大于 50% 绿色,20%–50% 橙色,低于 20% 红色。
|
|
57
57
|
- 浮窗为头像大小(32×32),背景透明,无底板和阴影。圆环只显示百分比,无数据时显示 `—`,不显示窗口时长或状态文字;时长与状态见悬停提示和菜单。
|
package/native/Overlay.swift
CHANGED
|
@@ -46,7 +46,7 @@ func appKitRect(_ rect: CGRect, primaryHeight: CGFloat) -> CGRect {
|
|
|
46
46
|
CGRect(x: rect.minX, y: primaryHeight - rect.maxY, width: rect.width, height: rect.height)
|
|
47
47
|
}
|
|
48
48
|
func ringOrigin(in rect: CGRect, inset: CGPoint) -> CGPoint {
|
|
49
|
-
CGPoint(x: max(rect.minX, min(rect.maxX - 32, rect.
|
|
49
|
+
CGPoint(x: max(rect.minX, min(rect.maxX - 32, rect.minX + inset.x)),
|
|
50
50
|
y: max(rect.minY, min(rect.maxY - 32, rect.minY + inset.y)))
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -150,8 +150,8 @@ final class Overlay: NSObject, NSApplicationDelegate, NSMenuDelegate {
|
|
|
150
150
|
node = args[1]; script = args[2]; searchPath = args[3]
|
|
151
151
|
codexHome = args.count > 4 ? args[4] : ""
|
|
152
152
|
let prefs = UserDefaults.standard
|
|
153
|
-
if prefs.object(forKey: "
|
|
154
|
-
inset = CGPoint(x: prefs.double(forKey: "
|
|
153
|
+
if prefs.object(forKey: "leftInset") != nil {
|
|
154
|
+
inset = CGPoint(x: prefs.double(forKey: "leftInset"), y: prefs.double(forKey: "bottomInset"))
|
|
155
155
|
}
|
|
156
156
|
selectedID = prefs.string(forKey: "selectedWindow")
|
|
157
157
|
panel.isOpaque = false
|
|
@@ -165,8 +165,8 @@ final class Overlay: NSObject, NSApplicationDelegate, NSMenuDelegate {
|
|
|
165
165
|
ring.refresh = { [weak self] in self?.refresh() }
|
|
166
166
|
ring.moved = { [weak self] point in
|
|
167
167
|
guard let self, let rect = self.lastRect else { return }
|
|
168
|
-
self.inset = CGPoint(x:
|
|
169
|
-
prefs.set(self.inset.x, forKey: "
|
|
168
|
+
self.inset = CGPoint(x: point.x - rect.minX, y: point.y - rect.minY)
|
|
169
|
+
prefs.set(self.inset.x, forKey: "leftInset")
|
|
170
170
|
prefs.set(self.inset.y, forKey: "bottomInset")
|
|
171
171
|
}
|
|
172
172
|
ring.setAccessibilityElement(true)
|
|
@@ -275,7 +275,7 @@ final class Overlay: NSObject, NSApplicationDelegate, NSMenuDelegate {
|
|
|
275
275
|
}
|
|
276
276
|
@objc func resetPosition() {
|
|
277
277
|
inset = CGPoint(x: 10, y: 74)
|
|
278
|
-
UserDefaults.standard.removeObject(forKey: "
|
|
278
|
+
UserDefaults.standard.removeObject(forKey: "leftInset")
|
|
279
279
|
UserDefaults.standard.removeObject(forKey: "bottomInset")
|
|
280
280
|
tick()
|
|
281
281
|
}
|
|
@@ -299,8 +299,9 @@ struct Main {
|
|
|
299
299
|
assert(RingState.resolve(99, stale: true) == .unknown)
|
|
300
300
|
assert(appKitRect(CGRect(x: -900, y: 100, width: 800, height: 600), primaryHeight: 900).origin == CGPoint(x: -900, y: 200))
|
|
301
301
|
let bounds = CGRect(x: 100, y: 100, width: 800, height: 600)
|
|
302
|
-
assert(ringOrigin(in: bounds, inset: CGPoint(x: 10, y: 74)) == CGPoint(x:
|
|
303
|
-
assert(ringOrigin(in: bounds, inset: CGPoint(x: -100, y: -100)) == CGPoint(x:
|
|
302
|
+
assert(ringOrigin(in: bounds, inset: CGPoint(x: 10, y: 74)) == CGPoint(x: 110, y: 174))
|
|
303
|
+
assert(ringOrigin(in: bounds, inset: CGPoint(x: -100, y: -100)) == CGPoint(x: 100, y: 100))
|
|
304
|
+
assert(ringOrigin(in: bounds, inset: CGPoint(x: 9999, y: 9999)) == CGPoint(x: 868, y: 668))
|
|
304
305
|
print("Swift 圆环颜色与窗口坐标检查通过")
|
|
305
306
|
return
|
|
306
307
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<key>CFBundleIdentifier</key><string>com.unionschool.easy-codex.overlay</string>
|
|
6
6
|
<key>CFBundleName</key><string>Easy Codex Overlay</string>
|
|
7
7
|
<key>CFBundlePackageType</key><string>APPL</string>
|
|
8
|
-
<key>CFBundleShortVersionString</key><string>0.1.
|
|
8
|
+
<key>CFBundleShortVersionString</key><string>0.1.3</string>
|
|
9
9
|
<key>LSMinimumSystemVersion</key><string>14.0</string>
|
|
10
10
|
<key>LSUIElement</key><true/>
|
|
11
11
|
<key>NSHighResolutionCapable</key><true/>
|
|
Binary file
|