mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 10:39:32 +01:00
On a MacBook Pro with a PROLED XDR display, the lit Apple logo on the lid can blink while agents work and stop when they finish, so a run can be read from across the room. View > Blink Apple Logo While Agents Work picks a style (Calm, Slow, Wink, Heartbeat, Fast). It is off by default, and the menu exists only on a Mac that has the logo. Apple documents one control for the logo, `sudo defaults write com.apple.CoreBrightness LEBacklightMode -int 0`. The same setting is a property of BrightnessSystemClient in the private CoreBrightness framework, which a process of the logged-in user can set with no administrator, so nothing here needs a helper or a password. The setting is system-wide and survives a reboot, and the release profile has panic = "abort", so the work runs in a child process (this binary with --logo-blink) tied to the app by a pipe. When the pipe closes, however the app ended, the child restores the logo and exits. A marker file covers power loss and a SIGKILL of the child itself. The child asks api/sessions itself: WebKit stalls the event stream of a hidden page, which lost whole turns and ran a blink 39 s past the end. It sends the session cookie of its first answer with every poll, because a good password without a cookie creates a login session each time and Codeman evicts the oldest of 100. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
94 lines
2.6 KiB
TOML
94 lines
2.6 KiB
TOML
[package]
|
|
name = "codeman-desktop"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
rust-version = "1.90"
|
|
description = "Codeman Desktop: a small native window for a Codeman server"
|
|
license = "MIT"
|
|
publish = false
|
|
|
|
[[bin]]
|
|
name = "codeman-desktop"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# Window + event loop (tao), the system web view (wry: WKWebView on macOS,
|
|
# WebView2 on Windows, WebKitGTK on Linux) and native menus (muda). Tauri is
|
|
# built on these three; using them directly keeps the app small and gives us
|
|
# `load_url_with_headers`, which Tauri's navigate() does not have (see README).
|
|
tao = "0.37"
|
|
wry = { version = "0.57", features = ["devtools"] }
|
|
muda = "0.21"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
url = "2"
|
|
base64 = "0.22"
|
|
dirs = "6"
|
|
# The reachability probe. platform-verifier = the OS trust store, the same one
|
|
# WKWebView uses, so the probe and the window agree on which certificates pass.
|
|
ureq = { version = "3", features = ["platform-verifier"] }
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
security-framework = "3"
|
|
# Ignoring signals in the logo blinker (src/logo.rs). Already in the tree
|
|
# through wry and tao, so no new crate is added.
|
|
libc = "0.2"
|
|
# JavaScript dialogs, HTTP Basic challenges, clearing cookies and the window's
|
|
# content size (src/macos.rs). The versions wry already pulls in, so no new
|
|
# crate is added.
|
|
objc2 = { version = "0.6.5", default-features = false, features = ["std"] }
|
|
block2 = { version = "0.6.2", default-features = false, features = ["std"] }
|
|
objc2-foundation = { version = "0.3.2", default-features = false, features = [
|
|
"std",
|
|
"objc2-core-foundation",
|
|
"block2",
|
|
"NSBundle",
|
|
"NSDate",
|
|
"NSDictionary",
|
|
"NSGeometry",
|
|
"NSObject",
|
|
"NSOperation",
|
|
"NSRange",
|
|
"NSSet",
|
|
"NSString",
|
|
"NSURL",
|
|
"NSURLAuthenticationChallenge",
|
|
"NSURLCredential",
|
|
"NSURLProtectionSpace",
|
|
"NSURLRequest",
|
|
"NSURLResponse",
|
|
"NSURLSession",
|
|
"NSValue",
|
|
] }
|
|
objc2-app-kit = { version = "0.3.2", default-features = false, features = [
|
|
"std",
|
|
"objc2-core-foundation",
|
|
"NSAlert",
|
|
"NSApplication",
|
|
"NSButton",
|
|
"NSControl",
|
|
"NSResponder",
|
|
"NSTextField",
|
|
"NSView",
|
|
"NSWindow",
|
|
] }
|
|
objc2-web-kit = { version = "0.3.2", default-features = false, features = [
|
|
"std",
|
|
"block2",
|
|
"objc2-app-kit",
|
|
"WKFrameInfo",
|
|
"WKNavigationDelegate",
|
|
"WKSecurityOrigin",
|
|
"WKUIDelegate",
|
|
"WKWebView",
|
|
"WKWebsiteDataRecord",
|
|
"WKWebsiteDataStore",
|
|
] }
|
|
|
|
[profile.release]
|
|
opt-level = "s"
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|
|
panic = "abort"
|