449 Commits

Author SHA1 Message Date
calesthio 08e2151fa0 docs: add Objects in Overdrive video showcase 2026-09-05 22:02:12 -07:00
Calesthio cd9f3c1f03 Merge pull request #506 from sakuraozation/fix/talkinghead-resolve-asset
fix(remotion-composer): resolve videoSrc through resolveAsset in TalkingHead
2026-08-22 11:22:24 -07:00
Calesthio 047d82c6c9 Merge pull request #507 from sakuraozation/feat/cjk-caption-support
feat(remotion-composer): CJK-aware captions and caption styling props
2026-08-22 11:22:20 -07:00
Calesthio 0b673f0ce1 Merge pull request #488 from TROY665/fix/chart-text-color-dark-theme
Fix: chart scenes unreadable on dark themes
2026-08-22 11:22:17 -07:00
Calesthio 9b958c01b8 Merge pull request #469 from bbudaedu/fix/light-theme-text-contrast
fix(remotion): keep themed text legible on light playbooks
2026-08-22 11:22:14 -07:00
Calesthio db421ca580 Merge pull request #478 from amitm7/fix/remotion-staging-delta
fix(remotion): correct four defects in render-scoped asset staging
2026-08-22 11:21:58 -07:00
Calesthio e157ae4101 Merge pull request #474 from bbudaedu/fix/remotion-theme-playbook-keys
fix(video_compose): derive the Remotion theme from real playbook keys
2026-08-22 11:21:51 -07:00
Calesthio 2ad4298fa4 Merge pull request #517 from OctoBored/fix/star-history-chart
docs: fix broken star history chart
2026-08-22 11:21:35 -07:00
Calesthio 8df3bc11a9 Merge pull request #532 from YatchiYa/main
Image-to-video was broken outright.
2026-08-22 11:21:26 -07:00
Calesthio 4e9518fb5e Merge pull request #530 from rbrogan-git/fix/stock-sources-raise-transport-errors
fix(stock-sources): raise transport errors instead of reporting an empty search
2026-08-22 11:21:01 -07:00
Calesthio deee6dba33 Merge pull request #534 from djeats/video-understand-sampling
Fix video_understand sampling only the opening seconds of a clip
2026-08-22 11:20:57 -07:00
Calesthio b9d850a108 Merge pull request #468 from bbudaedu/fix/playbook-schema-overlay-vocabulary
fix(styles): make the anime-ghibli playbook loadable again
2026-08-22 11:20:53 -07:00
Calesthio 4333c9ba5f Merge pull request #473 from bbudaedu/fix/dangling-agent-skill-pointers
fix(tools): make every agent_skills pointer resolve
2026-08-22 11:20:50 -07:00
Calesthio 003608784d Merge pull request #471 from JOhnsonKC201/fix/corpus-total-failure-with-skips
fix(corpus): key the total-failure guard on failures, not on skips
2026-08-22 11:20:46 -07:00
Calesthio 7929ac8928 Merge pull request #472 from bbudaedu/fix/screen-demo-manifest-schema
fix(pipelines): make the screen-demo manifest load
2026-08-22 11:20:42 -07:00
Calesthio 091187d720 Merge pull request #487 from hubooy/fix/playbook-custom-fallback
fix(playbook_loader): load generated playbooks from styles/custom/
2026-08-22 11:20:38 -07:00
Calesthio dca9589604 Merge pull request #522 from anupamme/fix-repo-openmontage-cve-2026-67213-nanoid
fix: upgrade nanoid to 3.3.18, 5.1.6 (CVE-2026-67213)
2026-08-22 11:20:35 -07:00
Calesthio 6ef327f4c9 Merge pull request #489 from VaibhavKiratkar/fix/requirements-dev-httpx-typo
Fix invalid httpx2 package name in requirements-dev.txt
2026-08-22 11:20:31 -07:00
Daniel Liu 45f45855da Fix video_understand sampling only the opening seconds of a clip
_extract_video_frames built `-vf thumbnail=N -frames:v N` when no explicit
frame_indices were given. That reads as even sampling and is not: thumbnail=N
selects the most representative frame out of each consecutive N-frame BATCH, so
paired with -frames:v N it stops once N frames have been emitted and never
looks at the rest of the video.

Reproduced against a four-second fixture, solid red for 2s then solid blue
for 2s:

  ffmpeg -i clip.mp4 -frames:v 4 -vf "thumbnail=4" out_%04d.png
  -> frame_0001 (254,0,0)  frame_0002 (254,0,0)
     frame_0003 (254,0,0)  frame_0004 (254,0,0)

Every sample lands in the first half. The blue half of the clip is invisible,
and because the failure produces four perfectly valid frames the caption pass
has no way to know: it described the clip as one in which nothing changes.

Sampling is now timestamp-driven. Duration comes from ffprobe and one frame is
taken at duration*(i+0.5)/n — inside each slice rather than on its edge, so a
cut landing exactly on a boundary does not sample the frame before or after it
depending on rounding. -ss goes ahead of -i to seek by keyframe, which is fast
and accurate enough for sampling that was never frame-exact.

Same fixture, after:

  frame 0 (254,0,0)  frame 1 (254,0,0)  frame 2 (0,0,255)  frame 3 (0,0,255)

Three behaviours preserved deliberately:

  * The explicit frame_indices branch is untouched. It was already correct.
  * No duration — a stream, or no ffprobe on PATH — falls back to an even pass
    over the file rather than returning an empty list.
  * A zero or negative duration is treated as unknown, since it would otherwise
    divide the sampler by zero.

Also drops probe_cmd, which was assigned and never used.

tests/tools/test_video_understand_sampling.py adds 9 cases with subprocess.run
faked, so they assert the commands built rather than one ffmpeg build's output,
and fail if `thumbnail=` returns. tests/tools/ is 490 passed, 1 skipped.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 14:12:50 -04:00
yatchiya 3a40795776 up 2026-08-21 18:54:21 +02:00
Roger Brogan 450dfcf644 test(stock-sources): pin the search transport-error contract
A parametrized pair over `all_sources()`, so the contract is asserted for
every registered adapter rather than the eight that happened to be wrong,
and a new source cannot quietly reintroduce the bug.

  - a failing transport propagates out of `search()`
  - a genuine 200 carrying no results still returns `[]`

Both halves matter. Fixing only the first would let an adapter "pass" by
raising on everything, which breaks the empty-result case the corpus
builder relies on.

Eight of the propagation cases fail against the unfixed adapters. Three
-- archive_org, wikimedia and pond5_pd -- still swallow errors through a
different shape (a query cascade that continues past a failed strategy,
and an API failure that falls through to the web fallback) and are marked
`xfail(strict=True)` pending the follow-up. That records them as known
defects instead of encoding the bug as expected behavior, and fails the
suite the moment one is fixed and left in the map.

`requests` and `bs4` are stubbed via `sys.modules`, following the
fake-requests pattern in test_atlas_video.py. bs4 is stubbed because it is
an optional dependency that the scraping adapters import at the top of
`search()` -- left alone, those five would fail on the import rather than
on the request wherever bs4 is not installed, and pass for the wrong
reason.

Refs #511
2026-08-21 00:10:45 +00:00
Roger Brogan 108f8238f5 fix(stock-sources): raise transport errors instead of reporting no results
Eight adapters -- dareful, esa, jaxa, loc, mixkit, nara, noaa, videvo --
wrapped their search request in `except Exception`, logged a warning and
returned `[]`. That is indistinguishable from a source that genuinely
matched nothing, so `direct_clip_search` reports `success: True,
clips_downloaded: 0, errors: []` for a run in which every request failed.

`base.StockSource.search` already documents the rule they violate:
"Network errors should be raised -- the corpus builder catches and logs
per-source so one flaky API doesn't poison the whole run." Both callers
already do exactly that: `direct_clip_search` and `corpus_builder` catch
per source and record `{phase, source, query, error}` before continuing,
so the plumbing to receive the truth is already in place.

Each adapter now re-raises after logging. The warning is kept -- it names
the source in the adapter's own words, which the caller's generic record
does not.

Behavior change: a run where every source failed previously reported
success with zero clips and will now surface the errors.

Refs #511
2026-08-21 00:10:45 +00:00
anupamme cbf396212c fix: CVE-2026-67213 security vulnerability
Automated dependency upgrade by OrbisAI Security

Signed-off-by: anupamme <mediratta@gmail.com>
2026-08-20 06:21:09 +00:00
OctoBored 8ac3ae7cc9 docs: fix broken star history chart
The Star History chart in the README is currently broken and fails to render, so visitors can no longer see the project's growth over time. Fix it by pointing the chart link and image at a working replacement that serves the same chart.
2026-08-19 10:36:38 +00:00
Calesthio 1bab711820 Merge pull request #515 from guillergs-ai/add-seedance-2-5-skill
docs: add Seedance 2.5 prompt contract and technique reference
2026-08-18 08:50:53 -07:00
guillergs-ai 26a03b87ed docs: add seedance 2.5 prompt contract and technique reference 2026-08-18 17:08:29 +02:00
Sakurao Yoshitatsu 76871c7d6b fix(remotion-composer): resolve videoSrc through resolveAsset in TalkingHead
TalkingHead passes videoSrc straight to OffthreadVideo, so relative asset
paths (e.g. "clips/source.mp4" under public/) fail to load at render time.
Every other composition that accepts a video source (TitledVideo, Explainer,
CinematicRenderer) already routes it through resolveAsset; this brings
TalkingHead in line with them.

Verified by rendering the TalkingHead composition with a public/-relative
videoSrc before (load failure) and after (renders) this change.
2026-08-15 22:12:36 +09:00
Sakurao Yoshitatsu 2864207006 feat(remotion-composer): CJK-aware captions and caption styling props
CaptionOverlay assumes space-delimited text: it hardcodes a " " between
words and lets lines wrap anywhere inside a word. For CJK captions this
produces spurious inter-word spaces (Japanese does not use them) and
mid-word line breaks, including punctuation stranded at line starts.

Changes:
- CaptionOverlay: new wordSeparator prop (default " " keeps current
  behavior; CJK callers pass ""). Each word renders as an unbreakable
  inline block so lines wrap only at word boundaries - visually unchanged
  for space-delimited text, fixes mid-word breaks for CJK.
- WordCaption: optional pageBreakAfter flag; buildPages flushes the page
  early when set, so pages can align with sentence/scene boundaries
  instead of splitting a clause across pages.
- TalkingHead: exposes captionColor / captionBackgroundColor (previously
  hardcoded inline), captionFontFamily, and captionWordSeparator, all
  defaulting to the current values.

Tested by rendering TalkingHead stills with Japanese captions before and
after (screenshots in PR), and with default props to confirm the
space-delimited rendering is unchanged. Used in production for Japanese
vertical ad videos.
2026-08-15 22:12:36 +09:00
Calesthio 95e1c3d0ab Merge pull request #504 from calesthio/codex/readme-documentary-3d
docs: feature documentary and 3D world showcases
2026-08-13 17:23:49 -07:00
calesthio 133255fe3f docs: feature documentary and 3D world showcases 2026-08-13 17:17:16 -07:00
Calesthio 6c5ee75eee Merge pull request #503 from calesthio/codex/add-gemini-seedance-minimax-models
Add Gemini Omni Flash, Seedance 2.5, and MiniMax H3 provider routes
2026-08-13 16:10:15 -07:00
calesthio 3204da531a docs: normalize model skill formatting 2026-08-13 13:13:18 -07:00
calesthio 37d3454a5d Merge remote-tracking branch 'origin/main' into codex/add-gemini-seedance-minimax-models 2026-08-13 13:13:00 -07:00
Calesthio acdd10ebed Merge pull request #502 from calesthio/codex/readme-refresh
docs: refresh README capabilities and showcases
2026-08-13 12:50:11 -07:00
calesthio 9e43f90e2b Merge remote-tracking branch 'origin/main' into codex/add-gemini-seedance-minimax-models
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 12:48:49 -07:00
calesthio 8cdd37f523 feat: add Gemini Omni, Seedance 2.5, and MiniMax H3 routes 2026-08-13 12:48:24 -07:00
calesthio fdf93c9fe7 docs: refresh README capabilities and showcases 2026-08-13 12:46:10 -07:00
Calesthio 494a95e62a Merge pull request #501 from calesthio/codex/atlas-media-model-expansion
Add Atlas Cloud media model gateway
2026-08-13 12:20:20 -07:00
Calesthio 7db427ea76 Merge pull request #353 from ytmknd/feat/fish-audio-tts-provider
feat: add fish.audio TTS provider
2026-08-13 11:53:18 -07:00
calesthio 1267066bc4 Merge commit 'f72efb53d3cea7cce0943d5dc4e55e33e4e59af3' into codex/repair-pr-353
# Conflicts:
#	AGENT_GUIDE.md
#	docs/PROVIDERS.md
2026-08-13 11:40:09 -07:00
Calesthio f72efb53d3 Merge pull request #371 from amartya-dev/feat/azure-text-to-speech
feat(tts): add Azure AI Speech as an optional cloud text-to-speech provider
2026-08-13 11:38:07 -07:00
calesthio 97fcd3c025 Merge commit '1c7047fd1fa6ac63ff2ade67db886344fdebd8c7' into codex/repair-pr-353
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:29:26 -07:00
calesthio 9dc8e379ba Merge commit '1c7047fd1fa6ac63ff2ade67db886344fdebd8c7' into codex/repair-pr-371
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:29:26 -07:00
Calesthio 1c7047fd1f Merge pull request #448 from clarkhjc/feat/hunyuan_cloud_video
feat: add Tencent Hunyuan cloud video provider via TokenHub API
2026-08-13 11:27:33 -07:00
calesthio dceea45387 Merge remote-tracking branch 'origin/main' into codex/repair-pr-353
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:20:19 -07:00
calesthio 00e4902348 Merge remote-tracking branch 'origin/main' into codex/repair-pr-371
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:20:19 -07:00
calesthio ecfdbe5173 Merge remote-tracking branch 'origin/main' into codex/repair-pr-448
# Conflicts:
#	docs/PROVIDERS.md
2026-08-13 11:20:19 -07:00
Calesthio 333736a884 Merge pull request #442 from zzzxtnt/codex/seedance-ark-direct
feat(video): add direct Volcengine Ark Seedance 2.0 provider
2026-08-13 11:18:39 -07:00
calesthio 9f50874656 Merge remote-tracking branch 'origin/main' into codex/repair-pr-353
# Conflicts:
#	tests/contracts/test_phase3_contracts.py
2026-08-13 11:11:48 -07:00
calesthio 5f48d9afb7 Merge remote-tracking branch 'origin/main' into codex/repair-pr-448
# Conflicts:
#	.env.example
2026-08-13 11:11:48 -07:00