mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-06 00:00:21 +02:00
An iPhone can't run Python or ssh, but the Frame can. The app (ios/, SwiftUI) connects with its own SSH key (Citadel), copies the server and helpers to ~/.cache/frame-control/<version> on the Frame once per version, starts ui/server.py there with FRAME_LOCAL=1 on the Frame's 127.0.0.1, and shows the page through an SSH tunnel. The server exits when the phone disconnects. Server: FRAME_LOCAL=1 puts ui/local-bin on PATH, whose ssh stand-in runs each `ssh frame COMMAND` locally (and serves as rsync's transport), so desktop and phone share one code path. Android display goes through podman exec there, as the Frame has no adb. FRAME_UI_KEY replaces the fixed X-Frame-UI value with a per-session key. Power actions take the Developer Mode password via sudo -S. --port 0 now prints the port it took. Page: a bottom tab bar and safe areas on phones, Play buttons visible on touch screens, saving through the share sheet, SSH/SFTP/Steam Link/remote desktop opening in their iOS apps, and a password dialog for power. App: pairing with the Developer Mode password once (never stored) or with a key the user adds; host key pinned on first use; plain-language connection errors with quiet retries; frame-control://install links; alerts and confirms. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
97 lines
2.7 KiB
JSON
97 lines
2.7 KiB
JSON
{
|
|
"originHash" : "06e1233a9a9b220c5f5b14eefc3220aa9e394ac504fece9df28b2a550b7d6017",
|
|
"pins" : [
|
|
{
|
|
"identity" : "bigint",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/attaswift/BigInt.git",
|
|
"state" : {
|
|
"revision" : "e07e00fa1fd435143a2dcf8b7eec9a7710b2fdfe",
|
|
"version" : "5.7.0"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "citadel",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/orlandos-nl/Citadel.git",
|
|
"state" : {
|
|
"revision" : "ae8562f895de06ccb86fdb1cbb65fd99c8976e12",
|
|
"version" : "0.12.1"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-asn1",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/apple/swift-asn1.git",
|
|
"state" : {
|
|
"revision" : "3b6410f7dee09eb33cdd26260c5fd47fda19b0e2",
|
|
"version" : "1.7.3"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-atomics",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/apple/swift-atomics.git",
|
|
"state" : {
|
|
"revision" : "0442cb5a3f98ab802acb777929fdb446bda11a34",
|
|
"version" : "1.3.1"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-collections",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/apple/swift-collections.git",
|
|
"state" : {
|
|
"revision" : "98ef3c98609a1e31b7e157b5b619579001a789d6",
|
|
"version" : "1.7.1"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-crypto",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/apple/swift-crypto.git",
|
|
"state" : {
|
|
"revision" : "95ba0316a9b733e92bb6b071255ff46263bbe7dc",
|
|
"version" : "3.15.1"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-log",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/apple/swift-log.git",
|
|
"state" : {
|
|
"revision" : "9c6fb14227f55d8f711ce3847dc2f419fb0ecacb",
|
|
"version" : "1.15.1"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-nio",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/apple/swift-nio.git",
|
|
"state" : {
|
|
"revision" : "21de5f08c1a166a6dd293d0e587ad977bf8dac5d",
|
|
"version" : "2.103.0"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-nio-ssh",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/Wellz26/swift-nio-ssh.git",
|
|
"state" : {
|
|
"revision" : "d88989f3d3bb1dfb2a38ce4af598afbf7fc3095c",
|
|
"version" : "0.3.7"
|
|
}
|
|
},
|
|
{
|
|
"identity" : "swift-system",
|
|
"kind" : "remoteSourceControl",
|
|
"location" : "https://github.com/apple/swift-system.git",
|
|
"state" : {
|
|
"revision" : "869129b7bf4ecc57b97d0193ad29690ca2134750",
|
|
"version" : "1.8.1"
|
|
}
|
|
}
|
|
],
|
|
"version" : 3
|
|
}
|