Commit Graph
70 Commits
Author SHA1 Message Date
Benjiyaya 082e767c8e feat(canvas): CRUD router with entity auto-seed, tombstones, position persistence 2026-09-06 05:15:00 +08:00
Benjiyaya 6786115666 feat(canvas): canvas + canvas_node tables with project/session cascade scoping 2026-09-06 05:15:00 +08:00
BenjiandGitHub c2812f66b6 Update README.md 2026-09-06 05:01:29 +08:00
BenjiandGitHub 9e83a25ebd Update README.md 2026-09-06 04:31:35 +08:00
BenjiandGitHub b4e2d7d992 Merge pull request #40 from benjiyaya/fix/preview-modal-hardening-1.3.2
fix: harden prompt preview — fail fast and never block Generate (1.3.2)
2026-09-01 00:04:41 +08:00
Benjiyaya db414f92f1 fix: harden prompt preview — fail fast and never block Generate (1.3.2)
With an unreachable LLM endpoint the Review-prompt modal fired duplicate
long-hanging requests and left Generate impossible. Preview resolves now
fire exactly once per scene, the H3 rewrite times out after 30s and falls
back to the deterministic template, and on failure the modal populates the
editor with raw scene text so the user can edit + Generate or retry.
2026-08-31 23:41:17 +08:00
BenjiandGitHub 466af9d078 Merge pull request #39 from benjiyaya/fix/sveltekit-bump-1.3.1
chore: bump @sveltejs/kit to 2.70.3 (1.3.1) — defuse npm audit fix --force breakage
2026-08-31 18:46:54 +08:00
Benjiyaya 40934eb5f5 chore: bump @sveltejs/kit to 2.70.3, release 1.3.1
The old 2.20.x range carried high-severity npm audit advisories
(CSRF, dev-mode 404 XSS, handle-hook DoS), which pushed users toward
npm audit fix --force — a command that downgrades kit to a 2021
pre-release and breaks the install (issue #38). Bumping within the
major plus the safe audit fixes leaves only 3 low-severity transitives,
all requiring major downgrades. Recovery steps for affected users are
in the changelog.
2026-08-31 18:33:20 +08:00
BenjiandGitHub 05a592cd14 Add files via upload 2026-08-31 14:29:04 +08:00
BenjiandGitHub 47e29f9b95 Delete example_ComfyUI_workflows/MiniMax-H3-Turbo-R2V-Extend-2Refs_API.json 2026-08-31 14:28:53 +08:00
BenjiandGitHub fdaabdd464 Add files via upload 2026-08-31 14:24:59 +08:00
BenjiandGitHub ec6496a69e Merge pull request #35 from benjiyaya/feat/issue-update-1.3.0
Calliope 1.3.0 — prompt review gate, ComfyUI error surfacing, saved scene setups
2026-08-31 03:28:37 +08:00
Benjiyaya 9c8ea8f28f feat: prompt review gate, ComfyUI error surfacing, saved scene setups (1.3.0)
Issues #27/#33/#28. Generate now resolves the prompt first (saved draft
or H3 rewrite) and opens an editable review modal before enqueueing;
job history drawer shows each render's exact payload with copy-to-form.
ComfyUI 400s surface error.type + per-node messages; audio uploads go
flat and VHS audio: widgets are patched. Per-scene video settings
persist via scenes.video_settings_json (additive migration) and batch
generate honors them. Version bumped to 1.3.0.
2026-08-31 03:20:25 +08:00
BenjiandGitHub 792e9c57b1 Merge pull request #31 from benjiyaya/test-pr-25
Video-extend continue flow + clip source modal (1.2.3)
2026-08-29 21:47:42 +08:00
Benjiyaya e896688963 chore: release 1.2.3 2026-08-29 21:45:49 +08:00
Benjiyaya 1ce2c2a535 feat: modal-based video source picker with project clip grid
The native select was too cramped for a project with many clips. Replace
it with a wide modal (Auto / Upload file / clip grid with thumbnails).
Clip options now cover any scene in the timeline, not just earlier ones,
and uploads wire through a hidden input. Also fix the Choose-Video modal
rendering blank under Clips/Uploads tabs: duplicate asset paths crashed
Svelte's keyed each mid-render — dedupe by path and clamp the active tab
when a tile's kind changes.
2026-08-29 21:43:05 +08:00
Benjiyaya 91cbaf1a44 docs: replace motion-context chain with video-extend continue flow 2026-08-29 05:30:18 +08:00
Benjiyaya c4f2e284a7 feat: relabel continue-from-previous scene toggle 2026-08-29 05:20:18 +08:00
Benjiyaya 36db1f90c9 feat: video-stage continue validator and clip picker 2026-08-29 05:17:35 +08:00
Benjiyaya 105c6ac6e3 feat: resolve continue-source clip at job time 2026-08-29 04:40:40 +08:00
Benjiyaya 85cccaef52 feat: validate video input for continue scenes at enqueue 2026-08-29 04:14:05 +08:00
Benjiyaya 59188a5b00 refactor: remove FirstMotion/NextMotion latent chain 2026-08-29 03:34:41 +08:00
BenjiandGitHub 28e307bffb Merge pull request #30 from benjiyaya/test-pr-25
Model per agent LLMs + clip-native export FPS
2026-08-29 01:41:29 +08:00
Benjiyaya 4d1d38a542 fix: space stacked panels on settings tabs 2026-08-29 01:37:56 +08:00
Benjiyaya 5673914d61 chore: drop obsolete electron entries from root gitignore 2026-08-29 01:37:56 +08:00
Benjiyaya b87888f82b docs: changelog 2026-08-29, README updates, sub-folder gitignores 2026-08-29 01:37:56 +08:00
Benjiyaya aa30055e7a feat: report export fps in progress and thread voted rate 2026-08-29 01:14:20 +08:00
Benjiyaya 97d275d390 feat: export conforms to clip majority fps 2026-08-29 01:10:34 +08:00
Benjiyaya 10dacd840a feat: parse clip fps and vote export target rate 2026-08-29 01:03:25 +08:00
Benjiyaya acc1952e78 feat: model-per-agent picker in Settings agent tab 2026-08-29 00:54:09 +08:00
Benjiyaya 1d38f45ee5 feat: resolve agent LLM per role at client construction 2026-08-29 00:49:46 +08:00
Benjiyaya 290bc0dd74 feat: accept agent_llm_assignments in settings API 2026-08-29 00:31:05 +08:00
Benjiyaya 4943079cca feat: store per-agent LLM role assignments in config 2026-08-29 00:23:41 +08:00
Benjiyaya 22658f6147 Merge PR 25 locally for testing 2026-08-27 11:50:18 +08:00
BenjiandGitHub 82d410f024 Merge pull request #25 from justostoll/feat/harness-ergonomics
Harness ergonomics: unlink_project, scoped get_workspace, append gating + beat CRUD, typed failures, clip poster frames
2026-08-27 11:49:32 +08:00
BenjiandGitHub 75028b3e7c Merge pull request #26 from stefanljosbra/main
Upload button on Assets and multiple LLM endpoints in Settings
2026-08-27 10:56:00 +08:00
Stefán Einarsson af9ee8d00e Revert unwanted changes in README file 2026-08-26 21:30:40 +02:00
Justo Stoll 8bc3659bf2 Paint a first frame in clip previews: '#t=0.1' media fragments
With preload="metadata" browsers paint NOTHING until playback, so the Video
tab's hero monitor and every filmstrip thumbnail sat black — clips looked
missing while their audio played fine ('no picture, but sound'). The media
fragment makes the browser seek and paint the frame at 0.1 s without playing.
Verified in-browser: fresh load paints hero + all thumbnails; selecting a
scene paints its first frame immediately.

(cherry picked from commit a81280b1543b9f6aa913be8373f0a390d3db5871)
2026-08-26 21:24:57 +02:00
Justo Stoll fb7c2204d4 Name the exception type in sub-agent failure messages; keep the traceback
Some exceptions stringify EMPTY (httpx.ReadTimeout/ReadError, TimeoutError):
a sub-agent killed mid-stream by a backend restart reported 'Sub-agent
failed: ' with nothing after the colon, and no traceback was logged anywhere
(observed live 2026-08-25). The handler now logger.exception()s and formats
'Type: message' (or bare 'Type' when the message is empty).

(cherry picked from commit ff138a9a01a93714dc6d8d2bce3ee57ace03647d)
2026-08-26 21:24:57 +02:00
Justo Stoll 1ec5348f42 Gate generate-story/script append mode; add beat CRUD tools
The destructive guard only gated replace=true — an unconfirmed
generate_story(replace=false) on a non-empty project silently APPENDED a
duplicate 25-beat set (25 -> 50, observed live 2026-08-25), and the guard's
own message recommended exactly that escape. Both modes are now gated on a
non-empty project with mode-specific messages that point at the granular
tools; 'append' joins the confirmation cues.

And the granular tools now exist for beats: add_beat (insert-with-shift, or
append when order_index omitted), update_beat (project-scoped id check),
delete_beat (destructive-flagged; later beats renumber to close the gap) —
before this, bulk regeneration was the only way to change a beat, which is
what boxed the story sub-agent into the append in the first place. The story
role's allowlist gains all three.

(cherry picked from commit 14ca52f5c02d1e8dd52e0f58e5fd0b8593816c9b)
2026-08-26 21:24:57 +02:00
Justo Stoll dfb82264bf get_workspace sections + teaching truncation note + assets-role editors
On a large project (43 scenes with full action paragraphs) get_workspace
serializes past the 4000-char tool-result cap, so the tail-chop landed
mid-beats and characters/locations/items were ALWAYS below the waterline —
observed live: an assets sub-agent re-called get_workspace in a loop, blind
to the sections it needed, with no editor tools in its allowlist anyway.

- get_workspace gains sections=[beats|characters|locations|items|scenes];
  project + stats always included; omitted sections listed; invalid sections
  error names the valid set; no-arg call unchanged (back-compat).
- All three truncation sites share TRUNCATE_NOTE, which names the way out
  (sections=[...], scoped tools) instead of a bare '[truncated]'.
- The assets role gains update_character / update_location / update_item
  (deletes deliberately excluded).

(cherry picked from commit 9460b6c2e398bad5403ff73e4e8e7d2a96478821)
2026-08-26 21:24:57 +02:00
Justo Stoll d8fe088ce4 Add unlink_project: the way out of the linked-session one-way door
Once a session linked to a project, the agent could neither create a fresh
project (create_project is sandbox-only) nor switch (link_project is
sandbox-only) — and no unlink existed. Observed live: a linked agent burned
three failed tool calls and ~7 minutes of reasoning discovering the box, then
overwrote the linked project as its only option.

unlink_project (linked-only) clears the session binding and nothing else; the
blind_only rejection message now points to it, so the model recovers in one
step; link_project's description documents the switch path.

(cherry picked from commit f4fc7cde6461529177563d58383c5c50287026e1)
2026-08-26 21:24:57 +02:00
Stefán Einarsson d44e0302dc Test for multiple LLM profiles 2026-08-25 22:48:40 +02:00
Stefán Einarsson 4e480f6195 Add a button on Assets to upload or replace an image 2026-08-25 22:46:46 +02:00
stefanljosbraandGitHub 9a28a6d679 Update README.md
add special section to the extension
2026-08-25 21:32:31 +02:00
Stefán Einarsson 34487703b4 Allow multiple LLM endpoints in Settings and pick which one is active. 2026-08-25 21:13:13 +02:00
Benjiyaya cfc13f4aee Stop offering a Windows zip while Create Project 404s.
The packaged FastAPI static mount returned JSON 404 for /project/{id}. Serve the SvelteKit fallback page for client routes, and point README at source until a zip is trustworthy.
2026-08-25 20:12:08 +08:00
BenjiandGitHub 0e0ee540e0 Remove Windows EXE installation section
Removed Windows installation instructions from README.
2026-08-25 20:03:46 +08:00
BenjiandGitHub 337bb7d6fe Merge pull request #21 from justostoll/feat/stream-internal-llm-client
Stream-internal LLMClient: extend the 1.2.1 Agent-loop fix to every LLM caller
2026-08-25 05:09:41 +08:00
Justo Stoll ffc1424566 Stream-internal LLMClient: chat()/chat_with_tools() consume chat_stream
Extends the 1.2.1 Agent-loop fix to every LLM caller: with completions
streamed internally, the 120 s httpx timeout bounds the gap BETWEEN chunks
(liveness) instead of total generation time, so a thinking model that
streams reasoning_content can legitimately work past 120 s while a dead
server still fails fast. chat_stream gains response_format= with an
in-stream HTTP-400 drop-ladder (response_format first, then tools); servers
that reject stream:true entirely fall back to one plain blocking POST.
A reasoning-only stream (zero content accumulated) raises ValueError so
generate_structured's json_object retry fires instead of returning blank.
2026-08-24 07:05:35 +02:00