Skip to content

Commit af79a51

Browse files
gershamclaude
andcommitted
Teach screen reload and archived-screen recovery; bundle CLI v26.09.180
The skill now covers screen reload and the device_reset, device_unpair and account archive reasons. It covers recovery before unarchive for reset displays, and it warns that unarchive alone re-admits the old key rather than a display that rotated its key. commands.md adds screen recover and screen reload. The bundled CLI is e3a3feb, packed as CI packs it: tagged 26.09.180. The validator now requires the new commands and facts. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
1 parent 3b8d68f commit af79a51

28 files changed

Lines changed: 552 additions & 114 deletions

‎components.lock.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
"state": "resolved",
44
"cli": {
55
"repository": "screenrig/cli",
6-
"commit": "6dca9f8a7045fd9d124a6697a014138d1a640ebc",
6+
"commit": "e3a3feb2ff11342618717a31f2cee95e13d6b0d6",
77
"artifact": {
88
"file": "screenrig-cli.tgz",
9-
"sha256": "72c5477c4317c354e2c0c3ec251bd2006e0fe89501c12440fed80d0f06646ef1"
9+
"sha256": "c875a76049066a2a1085f102fa2cd548e3c18fb133604878440d3e34d135b5ec"
1010
}
1111
}
1212
}

‎plugins/screenrig/cli/README.md‎

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,40 @@ any application running on it, so an offer alone does not prove which display
188188
is asking. The service also refuses offers while the screen's current player
189189
is still online and limits how many offers each screen receives.
190190

191+
## Archived screens and reload
192+
193+
Archiving a screen darkens its display but keeps the display's binding: the
194+
player stays connected, never re-pairs, and resumes when you run
195+
`screen unarchive`. A screen is also archived when its player is reset on the
196+
display or a paired browser unpairs itself. While archived, `screen show`
197+
prints `archive_reason` (`account`, `device_reset`, or `device_unpair`) and
198+
`archived_at` when the server reports them, and `screen list --state archived`
199+
adds a `REASON` column. `screen unarchive` re-admits the same display key for
200+
every reason, so a display that still holds it resumes with no re-pairing. A
201+
display reset on the device may start pairing again with a new key; when that
202+
pairing is offered as a recovery of the archived screen, `screen show` reports
203+
`recovery_pending`, and `screen recover` moves the screen to the new key while
204+
it stays archived until `screen unarchive`. A key retired by a confirmed
205+
`screen recover` stays retired.
206+
207+
```bash
208+
screenrig screen list --state archived
209+
screenrig screen unarchive scr_LOBBY
210+
```
211+
212+
`screen reload` asks a screen's player to reload once and returns a
213+
`reload_id` and `expires_at` ten minutes later. A web player reloads at its
214+
next page boundary; a native player reconnects, refetches its manifest, and
215+
checks for an update. Only a player that registered reload support acts on it,
216+
and a player ignores a reload within ten minutes of the last one it acted on.
217+
It works on active and archived screens and does not change the screen
218+
revision; a screen still waiting to pair answers `resource_conflict`.
219+
220+
When a screen's player cannot show the application or web page primitives in
221+
its playlist, `screen show` reports `applications_unsupported` with the time
222+
the condition began, and `screen list` marks the row. The manifest is
223+
unchanged; the player skips those primitives.
224+
191225
## Application command results
192226

193227
`app upload` and `app update` return the same JSON data paths with or without

‎plugins/screenrig/cli/assets/playlist-write-v2.schema.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=4a3b481bd6a59707b50fcf7215be241b9d5d81078039d308023f82ad0a1b57da. Shape validation for the adslot page union. Run canonical playlist-write-semantics.ts next. At most 16 adslot pages and one ordinary page with no visibility remain server checks.",
2+
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=e23482fb68e67eced6ea15f19b6c55f595349e0687535dc991e953708ab12631. Shape validation for the adslot page union. Run canonical playlist-write-semantics.ts next. At most 16 adslot pages and one ordinary page with no visibility remain server checks.",
33
"$defs": {
44
"AdslotPageWrite": {
55
"additionalProperties": false,

‎plugins/screenrig/cli/assets/playlist-write.schema.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=4a3b481bd6a59707b50fcf7215be241b9d5d81078039d308023f82ad0a1b57da. Shape validation only; run canonical playlist-write-semantics.ts next. Reference resolution and DNS remain server checks.",
2+
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=e23482fb68e67eced6ea15f19b6c55f595349e0687535dc991e953708ab12631. Shape validation only; run canonical playlist-write-semantics.ts next. Reference resolution and DNS remain server checks.",
33
"$defs": {
44
"CanvasBackground": {
55
"description": "Solid canonical uppercase #RRGGBBAA, or a top-to-bottom linear gradient.",

0 commit comments

Comments
 (0)