Skip to content

Commit ea44874

Browse files
committed
Release plugin 0.1.1 with current verified CLI bundle
1 parent d7aa4c2 commit ea44874

27 files changed

Lines changed: 159 additions & 90 deletions

‎.claude-plugin/marketplace.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"name": "screenrig",
1010
"source": "./plugins/screenrig",
1111
"description": "Operate ScreenRig screens, media, and playlists with the pinned, bundled CLI.",
12-
"version": "0.1.0",
12+
"version": "0.1.1",
1313
"author": {
1414
"name": "ScreenRig"
1515
},

‎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": "a0890d226d3ec92916e314eeca094ec2edc1bf1e",
6+
"commit": "b72b126044e360b7e6d1cd1cfc6fcd855144f8f7",
77
"artifact": {
88
"file": "screenrig-cli.tgz",
9-
"sha256": "8ca6feca8e9c8053fe16e033d68d6c5feef00de995923d59c8d19205f51c5e03"
9+
"sha256": "7c87bb0afa0238a006e3763cd0b739767685a71123735806a93abb1dfce90f91"
1010
}
1111
}
1212
}

‎plugins/screenrig/.claude-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "screenrig",
3-
"version": "0.1.0",
3+
"version": "0.1.1",
44
"description": "Operate ScreenRig screens, media, playlists, and applications with the bundled CLI.",
55
"author": {
66
"name": "ScreenRig"

‎plugins/screenrig/.codex-plugin/plugin.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "screenrig",
3-
"version": "0.1.0",
3+
"version": "0.1.1",
44
"description": "Operate ScreenRig screens, media, playlists, and applications with the bundled CLI.",
55
"author": {
66
"name": "ScreenRig"

‎plugins/screenrig/cli/README.md‎

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,18 @@ days first. Filter with `--screen-id`, `--media-id`, and `--day YYYY-MM-DD`.
258258
Those identifiers select the caller's own rows and are never a cross-account
259259
lookup.
260260

261-
Authenticated responses may carry remaining prepaid credits as an integer.
261+
Authenticated responses may carry remaining prepaid credits as a nonnegative
262+
whole integer. Remaining never displays negative; empty remaining is `0`.
262263
Remaining below 1000 credits adds a `credits_low` warning to the envelope
263-
`warnings[]` array; the message includes the integer remaining. A 402
264-
`payment_required` problem means remaining is below 1 credit and billed
265-
control-plane commands are rejected. Both signals can appear together on a
266-
402 envelope. `account show`, `agent status`, `agent disconnect --yes`,
264+
`warnings[]` array; the message includes the integer remaining. Until
265+
1 January 2027 08:00 UTC (midnight Pacific Time), production fails open:
266+
billed commands are not rejected for empty remaining, and the server does
267+
not return HTTP 402. Empty remaining does not stop or shut off screens in
268+
this window. After that instant, remaining below 1 credit rejects billed
269+
control-plane commands with `payment_required` (HTTP 402). The CLI still
270+
maps a 402 to `payment_required` if the server sends one. Both
271+
`credits_low` and `payment_required` can appear together on a 402 envelope.
272+
`account show`, `agent status`, `agent disconnect --yes`,
267273
`auth status`, `auth revoke --yes [--allow-lockout]`, `screen toast`,
268274
`screen screenshot`, `compose catalog`, and `compose render` do not debit
269275
that meter. Opening `events follow` costs 1 credit. There is no pay command.
@@ -307,7 +313,8 @@ dashboard origin, so the CLI never presents a link token and never sees
307313
`dashboard_link_expired` or `dashboard_link_consumed`. What the mint call can
308314
return is `invalid_request`, `unauthorized`, `payment_required`,
309315
`rate_limited`, and `not_ready`; the CLI renders each with the server's own
310-
detail and guidance.
316+
detail and guidance. Production does not send `payment_required` (HTTP 402)
317+
until 1 January 2027 08:00 UTC.
311318

312319
Production links require HTTPS. Local development has one exact exception:
313320
`http://api.screenrig.localhost:8088` may return and open
@@ -555,6 +562,12 @@ through the npm package — passes even when optional pieces are absent. Stdout
555562
is a success envelope either way: branch on `data.status` and the rows, not on
556563
`ok`.
557564

565+
The `token` row reports presence and nothing else: `present` when this
566+
installation holds a credential, `(none)` when it does not. Every segment of a
567+
credential is secret, including the lookup id ahead of the final underscore, so
568+
no prefix, suffix, or redacted form of the stored value appears in `doctor`
569+
output in either mode. `account show` reports the same fact as `token_present`.
570+
558571
`node`, `config_permissions`, `token`, `api_url`, `ffmpeg`, `ffprobe`,
559572
`encoder_libx264`, `health`, `ready`, `version`, and `capabilities` fail when
560573
they are not satisfied. These rows warn instead:

‎plugins/screenrig/cli/dist/commands.d.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ExitCode } from "./exit-codes.js";
55
import type { CliRuntime } from "./runtime.js";
66
import { type TranscodeOptions } from "./media/transcode.js";
77
export declare const CLI_VERSION = "0.1.0";
8-
export declare const USAGE = "screenrig \u2014 ScreenRig localhost v1 control-plane CLI\n\nUsage:\n screenrig [--json] [--api-url URL] [--config PATH]\n [--request-id ID] [--idempotency-key KEY] [--timeout MS]\n [--beta-key KEY]\n <command> [args]\n\nConfiguration (user config JSON, not flags):\n log_socket optional path to an already-listening Unix socket. The CLI\n connects as a client and writes one NDJSON operation-log\n object per line. Absent or empty keeps current behavior.\n This is a config field only, not a command-line switch.\n\nCommands:\n account show\n agent enroll --email ADDRESS [--name NAME] [--open-dashboard]\n agent connect [--name NAME] [--print-url] [--timeout MS]\n agent status\n agent disconnect --yes [--allow-lockout]\n auth status (deprecated alias for agent status)\n auth revoke --yes [--allow-lockout] (deprecated alias for agent disconnect)\n dashboard [--print-url]\n app pack <directory> [--output FILE]\n app upload <directory> [--name NAME] [--no-wait] [--poll-ms MS]\n app list\n app show <id>\n media upload <file> [--content-type TYPE] [--tag TAG] [--no-wait] [--poll-ms MS]\n [--no-transcode] [--codec h264|hevc] [--max-fps N]\n [--max-edge PIXELS] [--webp-quality 1-100] [--no-progress]\n media show <id>\n media list [--tag TAG] [--primitive image|video]\n media update <id> (--tag TAG | --clear-tag) --if-match REVISION\n media delete <id> --if-match REVISION\n compose catalog\n compose render <file> [--output FILE] [--open]\n playlist templates\n playlist create <file>\n playlist update <id> <file> --if-match REVISION\n playlist export <id> --output DIRECTORY\n playlist import <directory> [--update ID --if-match REVISION]\n playlist show <id>\n playlist list\n playlist delete <id> --if-match REVISION\n screen pair CODE [--label LABEL]\n screen provision (--open | --print-url) [--label LABEL]\n browser setup --code CODE [--open]\n screen update <id> [--name NAME] [--playlist-id ID] [--timezone ZONE]\n --if-match REVISION\n screen list [--state archived]\n screen show <id>\n screen assign <id> --playlist-id ID --if-match REVISION\n screen set-timezone <id> --timezone ZONE --if-match REVISION\n screen archive <id> --if-match REVISION\n screen unarchive <id> --if-match REVISION\n screen delete <id> --if-match REVISION\n screen rotate-public-id <id> --if-match REVISION\n screen toast <id> --text TEXT [--level info] [--duration-ms MS]\n screen screenshot <id> [--output FILE] [--timeout MS] [--poll-ms MS]\n kv get --application-id ID <key>\n kv set --application-id ID <key> --json-value JSON [--if-match REVISION]\n kv set --application-id ID <key> --file FILE --content-type TYPE [--if-match REVISION]\n kv set --application-id ID <key> --value-base64 BASE64 --content-type TYPE [--if-match REVISION]\n kv delete --application-id ID <key> --if-match REVISION\n kv list --application-id ID\n comment show screen <id>\n comment show playlist <id> [--page PAGE_ID]\n comment set screen <id> (--json-value JSON | --file FILE)\n comment set playlist <id> [--page PAGE_ID] (--json-value JSON | --file FILE)\n comment delete screen <id>\n comment delete playlist <id> [--page PAGE_ID]\n operations get <id>\n operations wait <id> [--timeout MS] [--poll-ms MS]\n operations cancel <id>\n events list [--after CURSOR] [--limit N]\n events follow [--after CURSOR] [--timeout MS]\n playback list [--screen-id ID] [--media-id ID] [--day YYYY-MM-DD]\n feedback bug <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback feature <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback list [--kind bug|feature]\n doctor [--repair-config]\n version\n";
8+
export declare const USAGE = "screenrig \u2014 ScreenRig localhost v1 control-plane CLI\n\nUsage:\n screenrig [--json] [--api-url URL] [--config PATH]\n [--request-id ID] [--idempotency-key KEY] [--timeout MS]\n [--beta-key KEY]\n <command> [args]\n\nConfiguration (user config JSON, not flags):\n log_socket optional path to an already-listening Unix socket. The CLI\n connects as a client and writes one NDJSON operation-log\n object per line. Absent or empty keeps current behavior.\n This is a config field only, not a command-line switch.\n\nCommands:\n account show\n agent enroll --email ADDRESS [--name NAME] [--open-dashboard]\n agent connect [--name NAME] [--print-url] [--timeout MS]\n agent status\n agent disconnect --yes [--allow-lockout]\n auth status (deprecated alias for agent status)\n auth revoke --yes [--allow-lockout] (deprecated alias for agent disconnect)\n dashboard [--print-url]\n app pack <directory> [--output FILE]\n app upload <directory> [--name NAME] [--no-wait] [--poll-ms MS]\n app list\n app show <id>\n media upload <file> [--content-type TYPE] [--tag TAG] [--no-wait] [--poll-ms MS]\n [--no-transcode] [--codec h264|hevc] [--max-fps N]\n [--max-edge PIXELS] [--webp-quality 1-100] [--no-progress]\n media show <id>\n media list [--tag TAG] [--primitive image|video]\n media update <id> (--tag TAG | --clear-tag) --if-match REVISION\n media delete <id> --if-match REVISION\n compose catalog\n compose render <file> [--output FILE] [--open]\n playlist templates\n playlist create <file>\n playlist update <id> <file> --if-match REVISION\n playlist export <id> --output DIRECTORY\n playlist import <directory> [--update ID --if-match REVISION]\n playlist show <id>\n playlist list\n playlist delete <id> --if-match REVISION\n screen pair CODE [--label LABEL]\n screen provision (--open | --print-url) [--label LABEL]\n browser setup --code CODE [--open]\n screen update <id> [--name NAME] [--playlist-id ID] [--timezone ZONE]\n --if-match REVISION\n screen list [--state archived]\n screen show <id>\n screen assign <id> --playlist-id ID --if-match REVISION\n screen set-timezone <id> --timezone ZONE --if-match REVISION\n screen archive <id> --if-match REVISION\n screen unarchive <id> --if-match REVISION\n screen delete <id> --if-match REVISION\n screen rotate-public-id <id> --if-match REVISION\n screen toast <id> --text TEXT [--level info] [--duration-ms MS]\n screen screenshot <id> [--output FILE] [--timeout MS] [--poll-ms MS]\n kv get --application-id ID <key>\n kv set --application-id ID <key> --json-value JSON [--if-match REVISION]\n kv set --application-id ID <key> --file FILE --content-type TYPE [--if-match REVISION]\n kv set --application-id ID <key> --value-base64 BASE64 --content-type TYPE [--if-match REVISION]\n kv delete --application-id ID <key> --if-match REVISION\n kv list --application-id ID\n comment show screen <id>\n comment show playlist <id> [--page PAGE_ID]\n comment set screen <id> (--json-value JSON | --file FILE)\n comment set playlist <id> [--page PAGE_ID] (--json-value JSON | --file FILE)\n comment delete screen <id>\n comment delete playlist <id> [--page PAGE_ID]\n operations get <id>\n operations wait <id> [--timeout MS] [--poll-ms MS]\n operations cancel <id>\n events list [--after CURSOR] [--limit N]\n events follow [--after CURSOR] [--timeout MS]\n playback list [--screen-id ID] [--media-id ID] [--day YYYY-MM-DD]\n feedback bug <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback feature <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback list [--kind bug|feature]\n doctor [--repair-config]\n version\n\nCredits:\n Remaining is a nonnegative whole number (never negative; empty remaining\n displays 0). Below 1000 credits, authenticated responses may warn\n credits_low. Until 1 Jan 2027 08:00 UTC (midnight PT), production fails open:\n billed commands are not rejected for empty remaining and do not return\n HTTP 402. After that instant, remaining below 1 credit is payment_required.\n Empty remaining does not stop or shut off screens in this window.\n";
99
export interface CommandResult {
1010
envelope: ReturnType<typeof successEnvelope<unknown>>;
1111
exitCode: ExitCode;

‎plugins/screenrig/cli/dist/commands.d.ts.map‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎plugins/screenrig/cli/dist/commands.js‎

Lines changed: 15 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎plugins/screenrig/cli/dist/commands.js.map‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎plugins/screenrig/cli/dist/config.d.ts‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,5 +102,12 @@ export declare function resolveConfig(options: {
102102
fs: ConfigFs;
103103
repair?: boolean;
104104
}): Promise<ResolvedConfig>;
105-
export declare function describeToken(token: string | undefined): string;
105+
/** Whether this installation holds a credential at all. */
106+
export declare function hasToken(token: string | undefined): boolean;
107+
/**
108+
* Presence of a credential, for stdout. Every part of a live token is
109+
* secret, including the lookup segment, so no shape, prefix, or suffix of
110+
* the stored value is reported here.
111+
*/
112+
export declare function describeTokenPresence(token: string | undefined): string;
106113
//# sourceMappingURL=config.d.ts.map

0 commit comments

Comments
 (0)