mirror of
https://github.com/garrytan/gstack.git
synced 2026-11-06 08:54:04 +01:00
* feat(design-html): craft section and free craft check, adapted from Elaya design skills (GSTA-92) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(GSTA-92): restore the full CHANGELOG under the Unreleased entry; drop a $-digit literal from craft.md; count only craft-check executions in design-html-slop-gate Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * feat(design-motion): new /design-motion skill: showcase MP4 and GIF loops from a design, adapted from Elaya design-to-motion (GSTA-92 phase 2) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(design-motion): run design-motion-showcase in the marathon tier; the periodic census is at its 38-slice cap (GSTA-92) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(design-motion): review and QA fixes before ship - encode: refuse unknown options and --formats tokens, validate --pad (#RRGGBB[AA]) and --crop (compare too) so nothing but a colour or crop reaches ffmpeg's filter graph - encode: export refuses a capture with missing window frames; check prints MOTION_SETTINGS for any threshold/phase override; contact sheet drops -fps_mode - capture: portrait-aware scale, --cycle must be whole 60 fps frames, stills with CSS animations disabled, pauseAt tolerates slow loads, clears stale manifest/stills - skill: <motion-dir> placeholder instead of a cross-block shell variable, GSTACK_FFMPEG-aware probe, stop points before the first capture, doctrine fixes - tests: refusal rows, portrait scale, cycle guard Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * test(design-motion): capture-check-export pipeline on real Chromium and ffmpeg Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(design-motion): second review cycle - capture: refuse an --out that holds a still or frames but no capture.json instead of deleting them; --cycle must be a multiple of 0.05 s so the seam frame lands exactly one cycle later for every PRE (nearest value round-trips) - encode: a capture without a mask ends 'MOTION_RESULT: clean (overflow not checked)' - skill: Step 5 names window.__mark in the capture contract - tests: foreign/previous --out handling on real Chromium, cycle guard and PRE sweep Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(design-motion): third review cycle and adversarial findings - capture: an ownership marker (.gstack-motion-capture) replaces the capture.json test, so the rerun after MOTION_CONTRACT_MISSING or a crash works and a foreign --out is still refused; offscreen lazy images are made eager and font/image loading is bounded at 30 s instead of hanging - encode: refuse a capture.json whose fields are not what capture writes (they reach ffmpeg args and paths); a cards overflow with no story frames is a planning error, and a zero-frame job never passes - tests: retry after a refused page, no-mask clean line, lazy image still, manifest validator, empty story span Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(design-motion): mask coverage, manifest relations, Windows stop, Figma token off argv - check fails overflow when the grown mask covers >90% of the frame (an app frame whose clip surfaces fill the stage passed vacuously); --mask-grow is 0-32; --mask refuses braces and semicolons - manifestError checks fps/windowFrames >= 1 and that the window fits the frames - skill: native Windows stops before the first capture call; the Figma token reaches curl on stdin (-H @-) instead of argv - tests: split the --out ownership scenario out of the contract test, full-frame mask, --still --scale 2 size and STILL_OK, manifest relations, coverage parse Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(design-motion): bounded frames, atomic exports, full-bleed masks - capture: each frame is bounded at 10 s (a __tick that never returns fails with MOTION_CAPTURE_FAILED instead of hanging); a --mask that matches no element stops with MOTION_MASK_EMPTY - check: a grown mask covering >90% of the frame (full-bleed app frame) reports overflow as skipped and ends 'clean (overflow not checked)' - export: writes .partial- files and renames on success, so a failed re-export keeps the last good file; a GIF fps that does not divide the cycle is refused; a missing GSTACK_FFMPEG override is named - fidelity: URL source is untrusted data; full-bleed note - tests: spinning __tick, empty mask, failed re-export, drifting gif fps Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(design-motion): app-only coverage skip, gif fps cap, early empty mask - check: the >90% coverage skip applies only to an app frame's own surfaces (ungrown mask); in cards, or when --mask-grow pushes coverage over 90%, overflow fails with what to change (a cards capture with real overflow passed as 'clean (overflow not checked)' after a large grow) - export: --gif-fps/--small-fps capped at 50 (GIF delays are 1/100 s) - compare resolves its paths (a colon in a relative path read as a protocol) - capture: MOTION_MASK_EMPTY is checked before the first frame - tests: cards vs app full-frame mask, fps cap, no frames on an empty mask Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * fix(design-motion): seek story transitions from their own frame - capture: an animation first seen in a frame where window.__mark did not move (a story's class toggle) is seeked from that frame instead of the last mark, so it eases in the export instead of popping ~100 ms ahead - encode: an empty numeric option is refused instead of read as 0 - figma: only fill a file key and node id that look like Figma's - tests: class-toggled transition mid-fade at its midpoint, blank --min-db Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> * docs: PROJECT_STRUCTURE names Elaya's MIT material and licenses/MIT-elaya.txt Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --------- Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
73 lines
2.1 KiB
JSON
73 lines
2.1 KiB
JSON
{
|
|
"_comment": "Context-budget ratchet ceilings (~tokens). Regenerate: bun test/helpers/capture-context-budget.ts. Headroom: alwaysOnTotal x1.05, eagerPerInvocation x1.1. Graded by test/context-budget-ratchet.test.ts via lib/context-bill.ts checkBudget.",
|
|
"alwaysOnTotal": 7458,
|
|
"eagerPerInvocation": {
|
|
"autoplan": 17005,
|
|
"benchmark": 7813,
|
|
"benchmark-models": 4086,
|
|
"browse": 8943,
|
|
"browser-skills/hackernews-frontpage": 371,
|
|
"canary": 13441,
|
|
"captain": 12011,
|
|
"capy/skill/gstack": 4075,
|
|
"careful": 1239,
|
|
"codex": 15594,
|
|
"context-restore": 10909,
|
|
"context-save": 10517,
|
|
"cso": 4924,
|
|
"design-consultation": 16188,
|
|
"design-html": 14380,
|
|
"design-motion": 10409,
|
|
"design-review": 35808,
|
|
"design-shotgun": 14901,
|
|
"deslop-shared-libs": 3411,
|
|
"devex-review": 20161,
|
|
"diagram": 4268,
|
|
"document-generate": 11713,
|
|
"document-release": 10092,
|
|
"eval-plan": 9811,
|
|
"freeze": 1115,
|
|
"gstack": 5326,
|
|
"gstack-upgrade": 6212,
|
|
"guard": 1000,
|
|
"health": 11440,
|
|
"investigate": 13344,
|
|
"ios-clean": 8139,
|
|
"ios-design-review": 8305,
|
|
"ios-fix": 8009,
|
|
"ios-qa": 11551,
|
|
"ios-sync": 8167,
|
|
"land-and-deploy": 18991,
|
|
"landing-report": 8901,
|
|
"learn": 8626,
|
|
"make-pdf": 5204,
|
|
"office-hours": 24792,
|
|
"open-gstack-browser": 4872,
|
|
"openclaw/skills/gstack-openclaw-ceo-review": 2764,
|
|
"openclaw/skills/gstack-openclaw-investigate": 1429,
|
|
"openclaw/skills/gstack-openclaw-office-hours": 4433,
|
|
"openclaw/skills/gstack-openclaw-retro": 2542,
|
|
"pair-agent": 10995,
|
|
"plan-ceo-review": 21007,
|
|
"plan-design-review": 22284,
|
|
"plan-devex-review": 17556,
|
|
"plan-eng-review": 13521,
|
|
"plan-tune": 14589,
|
|
"qa": 13348,
|
|
"qa-only": 11429,
|
|
"retro": 18938,
|
|
"review": 21047,
|
|
"scrape": 7312,
|
|
"setup-browser-cookies": 3565,
|
|
"setup-deploy": 11440,
|
|
"setup-gbrain": 15702,
|
|
"ship": 21081,
|
|
"skillify": 11551,
|
|
"spec": 14840,
|
|
"sync-gbrain": 15399,
|
|
"test-audit": 10324,
|
|
"ubicloud": 9033,
|
|
"unfreeze": 409
|
|
}
|
|
}
|