Repository navigation
feat(cli): stage the sixty-day publish transition - #7136
Conversation
a955b0a to
d84b0bc
Compare
086172e to
4419687
Compare
d84b0bc to
9aacd2a
Compare
4419687 to
9680bcd
Compare
9aacd2a to
15a19b9
Compare
9680bcd to
fae212e
Compare
15a19b9 to
545cc86
Compare
fae212e to
b560eee
Compare
545cc86 to
23158dd
Compare
b560eee to
080b7c8
Compare
5461341 to
2f79994
Compare
080b7c8 to
a4bf4a3
Compare
jrusso1020
left a comment
There was a problem hiding this comment.
Reviewed at a4bf4a3caedd6e510f4e25f50682a32948ae03c4, only the nine-file transition delta over #7135 at f78dca1bfd559d3b8076d2554d51c3cc03d61d7d (current parent head is an ancestor and remains draft).
No blocking findings. publishTransition.ts:7–18 keeps the clock unscheduled until a release changes the notice timestamp, then gives exactly 60 days. publish.ts:100–101,188 checks the transition before publication and requires the resolved OAuth credential for expired-window legacy targets, including inferred stored/team targets. New projects receive an exit-2 Share command with explicit audience choices; legacy --public and --yes are never forwarded into Share. Notices use stderr through the existing asNotice helper. Existing server behavior for a signed-in update aimed at a missing/inaccessible legacy target is deliberately retained; this is not an existence guarantee.
Validation: full workspace bun run build passed; bundled skill manifest check passed. Gated bun run test src/share/publishTransition.test.ts src/commands/publish.test.ts --maxWorkers=4: 33 passed. Removing the new credential guard causes the two anonymous/API-key command regressions to fail (21 pass, 2 fail); restoring it returns 33 passed. A fresh independent adversarial source pass found no Important issue. No live upload, account mutation, release or deployment was performed. The explicitly dispatched full CI run 42460233258 and CodeQL run 42460235028 both target this exact head and are still in progress; no all-green claim.
Scope is #7136 only; this does not review or release the draft parent’s Share implementation. The release must still choose the announced timestamp.
Need: yes, preserve the migration window · Size: ok · Reuse: project-link readers, checked publish credentials, existing usage errors and notice handling · Simpler: one phase helper and one OAuth credential guard · Structure: fine
Risk: low — while the clock remains unscheduled, current publishing gains only a notice; a future release activating it changes routing and accepted credentials.
— Rames / hf-review
Verdict: APPROVE
Reasoning: The delta preserves the unscheduled compatibility period, closes the inferred-target anonymous/API-key bypass after expiration, and guides new projects toward an explicit sharing choice.
…7135) * feat(cli): share rendered videos through unified reviews (heygen-com#7135) * feat(share): attach editable project sources to reviews (heygen-com#7137) * feat(share): measure local sharing outcomes (heygen-com#7138) * feat(cli): stage the sixty-day publish transition (heygen-com#7136) * feat(studio): share review pages from local preview (heygen-com#7140) Advertise the CLI sharing bridge before bootstrapping it so standalone Studio does not request unsupported routes. Preserve origin and session checks. Budget the intended sharing artifact: clean main packs at 8,060,519 bytes versus 8,162,979 with sharing (8,169,168 in CI). Required policy and Unicode tables, bundled sharing code, and Studio controls account for the growth. Set the packed-only budget to 8,577,627, following the 5% headroom convention; retain the unpacked cap and all package checks. * fix(share): persist refusals and improve CLI retry feedback * fix(ci): restore render diagnostics and include sharing workspace * fix(cli): keep sharing owner error codes stable * fix(share): clarify update feedback and align audience changes * fix(share): clarify updates and avoid scratch-file rerenders * fix(cli): report active shares and preserve update channels * fix(cli): resolve update channel when checking registry * fix(ci): refresh sharing package budgets after rebase * fix(share): require consent before uploading project files
Add a compatibility window for moving new projects from
hyperframes publishtohyperframes share. The 60-day clock remains unscheduled: it starts only when a release sets the announced notice timestamp, never on installation or approval.During the window, legacy publishing keeps its existing behavior and prints a notice to stderr. After the boundary, new projects receive an explicit sharing command and audience guidance;
--yesand legacy--publicnever imply review consent. Existing published URLs remain reachable. Legacy updates stay supported, with a signed-in account required after the window so anonymous or API-key requests cannot silently create a new publication. Existing server handling of missing update targets is unchanged.Updates the CLI help, README, docs, and bundled skill. Targets #7135; contains only the transition delta on its current integration base.
Validation: full workspace build, CLI rebuild/typecheck, 555 initial CLI command/agent-mode/transition tests and 33 final focused tests pass. Final tests cover the exact 60-day boundary, an unscheduled date through 2099, stored/explicit/team targets, unused IDs, and actual command upload-boundary assertions for OAuth versus anonymous/API-key callers. Built CLI probes verify help, unattended confirmation, stderr notices, and unsupported
--jsonenvelopes. Normal commit hooks, formatting, lint, and Fallow pass. Independent adversarial review found the ownership fallback issue above; it is fixed and the recheck is clear. Full CI and CodeQL dispatched explicitly for this non-main base.