Commit Graph
343 Commits
Author SHA1 Message Date
henryruhs 93a624f912 root info for the api 2026-09-13 14:09:20 +02:00
henryruhs 404a98b243 root info for the api 2026-09-13 13:41:21 +02:00
henryruhs 57ee94f422 prevent queries when one already exist 2026-09-13 10:52:20 +02:00
Henry RuhsandClaude Fable 5.1 e5d30e7df3 split api and cli sessions (#1244)
Claude-Session: https://claude.ai/code/session_014VuiA4Yfhy78naZK5UtfX5

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-12 22:40:25 +02:00
henryruhs eb9e4ad416 even better teardown on session destroy 2026-09-12 19:24:07 +02:00
henryruhs 09fa38ae04 stream uploads for real 2026-09-12 19:16:33 +02:00
henryruhs c9802d9c59 remove job files on session destroy 2026-09-12 18:58:28 +02:00
henryruhs 6abc7d58cb prevent job path leak 2026-09-12 18:50:20 +02:00
henryruhs 7bf5434997 clear fork leftovers 2026-09-12 18:18:01 +02:00
henryruhs 6cfe7cf513 fix tests 2026-09-12 17:11:35 +02:00
henryruhs 5e6ebea997 fix tests 2026-09-12 17:07:41 +02:00
Henry Ruhs 97a4a406c0 convert rtc store (#1242) 2026-09-12 16:55:18 +02:00
Henry Ruhs 1052b6f532 convert face store (#1241) 2026-09-12 16:32:46 +02:00
Henry Ruhs c3fe04cdff convert video manager (#1240) 2026-09-12 16:26:49 +02:00
Henry Ruhs 106dc7a348 fork and join sessions (#1239)
* introduce fork and join session, fix inference manager race condition

* destroy stream on DELETE
2026-09-12 15:45:30 +02:00
Henry Ruhs b5d396f4b1 refactor inference manager, kill app context (#1238) 2026-09-12 12:48:42 +02:00
Henry Ruhs fb21d1d1b5 refactor state manager (#1237)
* refactor state manager

* refactor state manager

* refactor state manager

* refactor state manager
2026-09-12 11:02:14 +02:00
Henry Ruhs d96580b34c convert content store (#1236)
* convert content store

* add local_id variables

* add local_id variables

* fix misconcept of clear() in stores, pass session id to threads
2026-09-11 21:17:22 +02:00
Henry RuhsandClaude Fable 5.1 c358ba7cf6 Session aware stores (#1235)
* session aware process manager via store creator

* remove unused clear_session_id

* restore original scopes

* stateless test helpers

* more updates

* more updates

* more updates

* more updates

---------

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-11 16:48:23 +02:00
Henry Ruhs 5bc9c80c55 fix bug for sessions without assets (#1234) 2026-09-11 11:53:48 +02:00
Henry Ruhs 40c554b59d refactor to a single peer, refuse via 409 on handshake (#1233) 2026-09-11 11:49:11 +02:00
Henry Ruhs 41ee571fc0 handle garbage and empty buffer for websocket (#1232) 2026-09-11 11:06:04 +02:00
henryruhs d054cedf85 ensure unique job ids 2026-09-10 21:21:53 +02:00
henryruhs 2dd3948893 better api key validation 2026-09-04 09:26:04 +02:00
Henry Ruhs 9a4c263390 asset record based deletion (#1228)
* asset record based deletion

* fix order

* delete assets on session destroy

* fix style

* guard delete via file system check

* guard delete via file system check

* adjust responses a bit
2026-09-03 10:57:33 +02:00
henryruhs 366153941a port 3.8.3 correct 2026-09-01 16:19:17 +02:00
Henry Ruhs 1362afa8b7 content store (#1225)
* introduce content store for content analyser

* introduce content store for content analyser part2

* guard content store as well

* minor changes

* minor changes

* minor changes
2026-08-27 11:23:18 +02:00
Henry Ruhs 4d3d2094ec expose the output via api (#1223)
* expose the output via api

* remove mocks from job testing
2026-08-24 13:46:22 +02:00
henryruhs 1bae62ad26 first piece for /jobs endpoint part7 2026-08-24 09:11:22 +02:00
henryruhs 830deb69c9 first piece for /jobs endpoint part6 2026-08-24 08:34:47 +02:00
henryruhs b28fe9d58f first piece for /jobs endpoint part5 2026-08-24 07:59:58 +02:00
henryruhs eb60333f19 first piece for /jobs endpoint part4 2026-08-24 02:34:20 +02:00
henryruhs 5a623a7215 first piece for /jobs endpoint part3 2026-08-24 02:23:12 +02:00
henryruhs 6b81f6728b first piece for /jobs endpoint part2 2026-08-24 00:17:51 +02:00
henryruhs 2e54b6d0dd first piece for /jobs endpoint 2026-08-23 23:43:59 +02:00
Henry Ruhs 161aec62d1 rename frame number to frame index everywhere (#1222) 2026-08-21 20:47:50 +02:00
Henry Ruhs 1ca152b934 Asset Tools Part1 (#1217)
* fix import

* introduce collect vision frame from asset, add is_vision_frame everywhere, rename to vision_buffer

* fix lint

* fix lint

* fix lint
2026-08-07 15:23:09 +02:00
Henry Ruhs 3ef7736999 Feat/capability groups part2 (#1216)
* add groups to capabilities

* update to recent groups
2026-08-06 13:42:01 +02:00
Henry Ruhs 1fae1282d1 rename face landmarker to face aligner (#1215) 2026-08-06 11:18:02 +02:00
henryruhs e02d5880d3 move workflow mode 2026-08-06 09:36:27 +02:00
henryruhs 510fd4e556 clean wording 2026-08-05 23:35:35 +02:00
henryruhs e11f4b8d55 clean wording 2026-08-05 23:26:44 +02:00
henryruhsandClaude Opus 4.8 5611932fda add master fix_audio/video_encoder tests (#1212)
Add master's test_fix_audio_encoder and test_fix_video_encoder; v4 has
both functions and matches master's expected mappings. Kept v4's
sanitize_* and spawn_frames tests and path-isolation signatures.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V7MdZEmd1GE8uSDTMyq34r
2026-08-05 22:45:17 +02:00
henryruhsandClaude Opus 4.8 6971e07605 add master ffmpeg_builder tests (#1212)
Add master's tests for the builders v4 gained via the ffmpeg reader swap
(seek_to, set_output_format, restrict_color_transfer, convert_color_space,
set_thread_count); kept v4's capture_video/enforce_pixel_format/
set_stream_quality tests for its stream builders.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V7MdZEmd1GE8uSDTMyq34r
2026-08-05 22:43:50 +02:00
henryruhsandClaude Opus 4.8 633b103e23 adopt master inference_manager tests (#1212)
Take master's rewritten test_get_inference_pool (arena-leak cli/api pool
sharing) and new test_resolve_static_inference_providers (override/adjust
hooks), adapted from 'ui' to v4's 'api' app context. Both pass on v4.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V7MdZEmd1GE8uSDTMyq34r
2026-08-05 22:42:11 +02:00
henryruhsandClaude Opus 4.8 3d502ff9f6 restore test_job_list from master (#1212)
v4 inherited an old-base skipped stub; master implemented the real
job-list test post-fork. v4 has the job-list command, so the real test
passes. Kept v4's assert_helper/get_test_output_path and --workflow-mode.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V7MdZEmd1GE8uSDTMyq34r
2026-08-05 22:40:52 +02:00
henryruhsandClaude Opus 4.8 be89f03b27 Merge branch 'master' into v4
Resolve 57 conflicts keeping v4's architecture (UI removal, api app
context, path isolation, streaming/codecs/rtc, workflow-mode superset,
args_helper) and taking master's post-fork features so none are dropped:
inference override/adjust provider hooks (+ face_swapper 3.8.1 coreml
fix), is_vision_frame validity guards, resolve_temp_frame_set frame
numbering with the source audio/voice trim offset, the ffmpeg color
pipeline (restrict_color_transfer / convert_color_space / temp_pixel_format),
ffprobe select_stream v:0 + format duration, pre_check ffprobe with
dependency_not_installed, onnxruntime arena-leak guard + version lru_cache,
installer cuda@12/@13 provider split, workflow_strategy disk/memory
(memory default), and the dependency version bumps. content_analyser hash
guard rehashed to 3c6ce25e.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V7MdZEmd1GE8uSDTMyq34r
2026-08-05 22:12:54 +02:00
Henry Ruhs 6f5e4b9d91 3.8.1 (#1214)
* fix image to image for coreml

* fix image to image for coreml

* Update metadata.py

* modernize onnxruntime

* introduce cuda@12 and cuda@13 for installer

* introduce cuda@12 and cuda@13 for installer

* temporary fix for inference pool disaster

* temporary fix for inference pool disaster

* use onnxruntime 1.24.4 for cuda@12

* fix test

* fix test

* fix test

* add test for job list

* switch to has_arena_leak guard

* remove directml hack for inference pool

* uninstall every onnxruntime first

* uninstall every onnxruntime first

* restore the directml fix

* restore the directml fix

* fix directml again

* simplify condition
2026-08-05 12:12:24 +02:00
b60ea40d26 3.8.0 (#1212)
* mark as next

* unify the dependency checks in pre_check and add ffprobe (#1181)

* drop keep_temp and the common options component (#1180)

Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* introduce ffprobe and ffprobe_builder (#1182)

* introduce ffprobe and ffprobe_builder

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* introduce ffprobe and ffprobe_builder

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* probe video metadata via ffprobe in vision (#1184)

* probe video metadata via ffprobe in vision

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* probe video metadata via ffprobe in vision

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* adopt the workflow task vocabulary from next major (#1185)

Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* introduce workflow-mode and workflow-strategy like next major (#1187)

Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* restrict hdr color transfer and tag the merge output as bt709 (#1188)

* restrict hdr color transfer and tag the merge output as bt709

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* restrict hdr color transfer and tag the merge output as bt709

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* full video migration

* compose the hdr fixture via the builder chain

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* compose the test fixtures via the builder and run_ffmpeg

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* compose every test fixture via the builder and run_ffmpeg (#1189)

* compose every test fixture via the builder and run_ffmpeg

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* use loops in tests for ffmpeg stuff

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* New Video Manager (#1191)

* tiny adjustment for tests

* address the review on the video manager

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* introduce the stream strategy for the video workflow (#1192)

* introduce the stream strategy for the video workflow

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* address the review on the stream strategy

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* annotate the changes for review

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* annotate the new tests for review

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* match the temp pixel format help to the locale style

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* question the set_input_seek naming

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* question the reader and writer keys

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* drop the review annotations from the encoder mapping tests

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* drop the review annotations from the thread count tests

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* drop the review annotations from the ui files

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* capture the open review questions as annotations

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

* drop the settled annotations from the types

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tbcd6VWCiU4BQP1gywPr2a

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* switch to ffmpeg.style for audio.py

* remove todos that were never needed

* fix for ffmpeg7

* Add frame_store module (#1194)

* add frame_store module

* rename and change tests

* rename and update tests

* route window read through frame_store (#1196)

* route window read through frame_store

* update proper id

* restore todos

* restore todos

* go v4 style for workflow (#1197)

* go v4 style for workflow

* remove some todos

* route chunk read through frame_store (#1198)

* vision integration

* Deleted read_video_chunk + read_static_video_chunk

* margin decouple (#1199)

* fix windows CI fail (#1200)

* Cleanup Part1 (#1201)

* remove some todos, improve video manager, simplify ffmpeg commands and more

* do more

* remove thread count for filters

* Cleanup Part 2 (#1202)

* tons of renaming

* tons of renaming

* multi reader approach

* bring tests to an okay-ish state

* bring drain back

* improve read_video_frame speed

* rename method

* move variables

* seek video reader only when trim frame start is larger 0

* make stream the default

* Cleanup/part 3 (#1203)

* remove todo

* sort out workflow, to match upcoming v4

* remove look ahead

* remove core namespace again

* Revamp execution provider overrides/adjustments (#1206)

* Split provider hooks into override/adjust with cached CoreML base

Replace the single resolve_inference_providers processor hook with two:
override_inference_providers (full replacement) and adjust_inference_providers
(merge options onto the base providers built by create_inference_providers).
This lets CoreML processors inherit ModelCacheDirectory + SpecializationStrategy
from the base while layering ModelFormat/MLComputeUnits on top.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HTQCZiYjJyUX11bDpbRSiB

* fix caching for execution provider by having override and adjust ways

* fix caching for execution provider by having override and adjust ways

* fix lint

* use proper pytest fixtures

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix update preview bug (#1205)

* fix update preview bug

* fix update preview bug

* remove guard

* add is_vision_frame

* Restrict the preview frame slider and the reader seek to the last frame index (#1207)

* fix index bug

* fix rounding bug

* avoid tobytes copy (#1208)

* beautify tests

* hide ffmpeg warnings

* simplify process_stream_frame

* Use is vision frame everywhere (#1210)

* use is_vision_frame everywhere

* fix hash

* fix lint

* fix hash creation in face store

* that model does not exist

* update workflow ffmpeg

* guard workflow (#1211)

* bump version and dependencies

* Update preview

* switch workflow strategy to disk|memory

* update preview

* update preview

* fix wording

* last minute change workflow position

* adjust wording

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Harisreedhar <46858047+harisreedhar@users.noreply.github.com>
Co-authored-by: harisreedhar <h4harisreedhar.s.s@gmail.com>
2026-07-30 22:25:09 +02:00
Henry Ruhs 11bbc89a0e modernize ffmpeg in test suite (#1190) 2026-07-23 15:07:27 +02:00