Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
143 commits
Select commit Hold shift + click to select a range
9a07bd7
build(viewer): build viewer_static/ from viewer/, checked in CI
InfantLab Sep 30, 2026
ee4f8f4
chore(devcontainer): keep the gh login across rebuilds
InfantLab Sep 30, 2026
6d6c347
fix(cli): the three mypy errors that fail CI on master
InfantLab Sep 30, 2026
1e03248
test: keep the API's background job processor off during tests
InfantLab Sep 30, 2026
1a19475
docs: document VIDEOANNOTATOR_BACKGROUND_PROCESSING
InfantLab Sep 30, 2026
ac6e4e1
fix: the test failures CI shows now the suite runs to the end
InfantLab Oct 1, 2026
55fbfeb
fix(deps): declare lap for person_tracking's tracker
InfantLab Oct 1, 2026
3aa49c3
docs: v1.6.0 pipeline review and dependency audit (drafts)
InfantLab Oct 1, 2026
6351f69
docs: record the pipeline review decisions; Python 3.13 as its own spec
InfantLab Oct 1, 2026
73ee28f
spec: 012 Python 3.13 support
InfantLab Oct 1, 2026
8bf6b8c
docs: speaker_diarization verified on Python 3.13 (identical to 3.12)
InfantLab Oct 1, 2026
6b7ccd2
plan: 012 Python 3.13 support
InfantLab Oct 1, 2026
0d7305b
feat: Python 3.13 support alongside 3.12 (spec 012)
InfantLab Oct 1, 2026
bf73d41
ci: keep wall-clock performance tests out of the main test job
InfantLab Oct 1, 2026
c40d9aa
spec 012: all tasks done; CI passes on Python 3.12 and 3.13
InfantLab Oct 1, 2026
d146f48
docs: v1.6.0 processing landscape (have / obsolete / current / missing)
InfantLab Oct 1, 2026
81d1221
feat: slim core install and current tooling (spec 013)
InfantLab Oct 1, 2026
f24a6d0
ci: pin setup-uv to v10.2.0 (it has no v10 major tag)
InfantLab Oct 1, 2026
6a289b6
ci: trivy-action tag is v0.36.0
InfantLab Oct 1, 2026
ea51e79
revert: restore LAION pipeline metadata removed by mistake in 6a289b6
InfantLab Oct 1, 2026
3647e79
feat: drop the LAION pipelines, deprecate audio_processing (spec 014)
InfantLab Oct 1, 2026
833e330
docs(landscape): NVIDIA Nemotron ASR and Streaming Sortformer as Phas…
InfantLab Oct 1, 2026
771c2b3
feat: torch 2.11, pyannote.audio 4, CUDA 12.6 wheels (spec 015)
InfantLab Oct 1, 2026
ade1b0a
ci: time limits on the test and viewer jobs
InfantLab Oct 1, 2026
5f64918
feat: one directory for model weights (spec 016)
InfantLab Oct 1, 2026
4f879ad
chore(viewer): one JS package manager (Bun)
InfantLab Oct 1, 2026
7114090
feat(viewer): one product, one version
InfantLab Oct 1, 2026
f42646b
feat(dev): one command for the API and the viewer dev server
InfantLab Oct 1, 2026
3eafeb9
fix(audio): speech and diarization write the files the viewer loads
InfantLab Oct 1, 2026
e08a166
fix(security): no hard-coded tokens; artifacts and debug follow AUTH_…
InfantLab Oct 1, 2026
47cc786
test(viewer): contract test against real VideoAnnotator outputs; fix …
InfantLab Oct 1, 2026
63e5471
docs(agents): one set of agent guidance for the repo and the viewer
InfantLab Oct 1, 2026
98a0cf1
fix(viewer): hold face, OpenFace and pose overlays between sampled fr…
InfantLab Oct 1, 2026
1798f89
test(viewer): add the sampledAtTime tests; anchor lib/ in .gitignore
InfantLab Oct 1, 2026
0a909ce
fix(viewer): served viewer calls its own origin; Settings says how to…
InfantLab Oct 1, 2026
fa925b0
fix(viewer): show why pipelines failed in batch rows and on failed jobs
InfantLab Oct 1, 2026
8b47f10
fix(viewer): no library folder no longer loops the folder picker
InfantLab Oct 1, 2026
431fe77
feat(viewer): results view knows its batch: n of N, previous/next, back
InfantLab Oct 1, 2026
d771bf7
docs(roadmap): fold the tsc finding into the Phase 2 item; point dete…
InfantLab Oct 1, 2026
6e54935
docs: point viewer links at this repository
InfantLab Oct 1, 2026
8524507
fix(privacy): no Ultralytics analytics or Hugging Face telemetry
InfantLab Oct 2, 2026
2e2c0a9
docs(constitution): amend to v1.1.0, fold in the viewer's constitution
InfantLab Oct 2, 2026
1fd9fb9
fix(devcontainer): keep .venv and models off the Windows file bridge
InfantLab Oct 2, 2026
b148e36
docs(devcontainer): the 2026-10-02 freeze was on resume, not a test run
InfantLab Oct 2, 2026
8e457c4
feat(devcontainer): cap the container's memory (VIDEOANNOTATOR_DEV_ME…
InfantLab Oct 2, 2026
933a1c7
docs(handover): measure under the container cap only; no WSL cap for now
InfantLab Oct 2, 2026
084cef4
fix(devcontainer): hard-code --memory=12g
InfantLab Oct 2, 2026
9fbd4e1
docs(handover): record volume-clone memory measurements; fix mount wa…
InfantLab Oct 2, 2026
fe95ade
chore(vscode): stop tracking .vscode/settings.json
InfantLab Oct 2, 2026
be4ac41
docs(roadmap): bring Phase 1 status up to date
InfantLab Oct 2, 2026
44aeb4d
test: re-baseline pipeline outputs against v1.5.0 (v1.6.0 Phase 1)
InfantLab Oct 2, 2026
6771c95
feat: logs go to one per-user folder, not ./logs (v1.6.0 Phase 1)
InfantLab Oct 2, 2026
46cf868
feat: one database location for both layers, per-user by default
InfantLab Oct 2, 2026
5ffd5e2
docs: record the diarization/torch-cap findings and the GPU base image
InfantLab Oct 2, 2026
ec5ab04
build: one Dockerfile for CPU and GPU on ubuntu:24.04
InfantLab Oct 2, 2026
2bee680
fix: core install starts, and a fresh database gets its first API key
InfantLab Oct 2, 2026
58f9617
fix(ci): macOS and Windows test failures since 46cf868; dev container…
InfantLab Oct 2, 2026
f0790d1
docs: Phase 2 handover
InfantLab Oct 2, 2026
380b777
fix: a pipeline that fails now says so
InfantLab Oct 3, 2026
0d7a365
fix(api): result downloads serve the files pipelines wrote
InfantLab Oct 4, 2026
9f5f249
feat(cli): videoannotator process runs a job without a server
InfantLab Oct 4, 2026
a637c73
feat(viewer): show a pending job's place in the queue
InfantLab Oct 4, 2026
5433c9a
fix: results no longer depend on run or pipeline order; deterministic…
InfantLab Oct 4, 2026
a1eb74a
fix(viewer): zero type errors, typecheck in CI; job page polls again
InfantLab Oct 4, 2026
6fef55a
test: audio_processing failure tests no longer need model access
InfantLab Oct 4, 2026
bd9e69a
refactor(viewer): one function decides which pipeline produced a file
InfantLab Oct 4, 2026
1309c6d
fix(viewer): remove the placeholder Datasets page
InfantLab Oct 4, 2026
78b237a
perf(viewer): lazy-load every page but Home
InfantLab Oct 4, 2026
cf43b5e
chore(viewer): remove dead debugging scripts
InfantLab Oct 4, 2026
4f7595b
chore: remove dev-container strays (old .bak, conda template noop.txt)
InfantLab Oct 4, 2026
aa1ec12
docs(spec): 017 output provenance and overlay attribution
InfantLab Oct 4, 2026
9d5ed6f
docs(spec): 018 saved datasets in the viewer
InfantLab Oct 4, 2026
9077f46
docs(spec): 019 run it again (rerun, reuse settings, cues)
InfantLab Oct 4, 2026
820d720
docs(spec): 020 prompt library and prompt workbench
InfantLab Oct 4, 2026
9f83d0d
docs(spec): 021 compare two VLM jobs; link specs 017-021 from the roa…
InfantLab Oct 4, 2026
b6fe223
docs(plan): 017 output provenance plan, research, data model, contract
InfantLab Oct 4, 2026
1de7d4b
docs(tasks): 017 output provenance tasks
InfantLab Oct 4, 2026
5f57366
feat: every pipeline output records what made it (spec 017 US1)
InfantLab Oct 4, 2026
603626d
feat: jobs keep each pipeline's provenance (spec 017 US4)
InfantLab Oct 4, 2026
a9d53e9
feat(viewer): every overlay names the pipeline and version that drew …
InfantLab Oct 4, 2026
2724527
fix(tests): commit the legacy RTTM fixture (.gitignore ignored *.rttm)
InfantLab Oct 4, 2026
278b67b
docs(plan): 018 saved datasets plan, research, data model, contract, …
InfantLab Oct 4, 2026
487c7d6
feat(api): datasets can name a server folder; folder scan (spec 018)
InfantLab Oct 4, 2026
e5f9c6b
feat(viewer): save the videos you chose as a dataset, and reuse it (s…
InfantLab Oct 4, 2026
fad5c78
feat: Datasets page, dataset/preset export-import, dataset CLI (spec …
InfantLab Oct 4, 2026
57e2ae4
docs(plan): 019 run it again plan and tasks
InfantLab Oct 4, 2026
78be92a
feat(api): run a job or batch again as new, linked jobs (spec 019)
InfantLab Oct 4, 2026
3999dbb
feat(viewer): run it again, edit and run again, reuse settings (spec …
InfantLab Oct 4, 2026
4e4fb63
docs(plan): 020 prompt library and workbench plan and tasks
InfantLab Oct 4, 2026
75577be
feat(api): prompt library; previews return their frames (spec 020)
InfantLab Oct 4, 2026
faf29f9
test: portable absolute-path check in the vlm preview CLI test
InfantLab Oct 4, 2026
4b87024
feat(viewer): Prompts page and prompt workbench (spec 020)
InfantLab Oct 4, 2026
1dccd3c
docs(plan): 021 compare VLM jobs plan and tasks
InfantLab Oct 4, 2026
40123bf
feat: compare two VLM jobs on the same video (spec 021)
InfantLab Oct 4, 2026
03ac4b4
feat(viewer): working start page; Library renamed Results
InfantLab Oct 5, 2026
7f47107
docs: one entry page, link check in CI, docs site; internal notes arc…
InfantLab Oct 5, 2026
5cf8983
docs: dev-container setup and memory, measured image sizes
InfantLab Oct 5, 2026
6a86ba1
docs: README rewritten for researchers
InfantLab Oct 5, 2026
084ba61
fix: first-time install path (admin key, extras index, viewer link)
InfantLab Oct 5, 2026
0f16220
docs: first-time user run findings; token hint for clone installs
InfantLab Oct 5, 2026
f71d012
feat(storage): job folders beside the database; Docker volume for them
InfantLab Oct 5, 2026
40ee0dd
docs: rc1 walkthrough checklist; dev container keeps jobs in the work…
InfantLab Oct 5, 2026
647549f
fix(face): RetinaFace detector by default; apply confidence threshold
InfantLab Oct 6, 2026
4e8cd3a
feat(viewer): batch page lists videos compactly, built for large runs
InfantLab Oct 6, 2026
7080176
fix(viewer): tabs older than the build reload instead of crashing; Go…
InfantLab Oct 6, 2026
6c19c06
feat(datasets): run an uploaded dataset from the server's stored copies
InfantLab Oct 6, 2026
717f097
docs(spec): 022 videos read where they are, by default for local inst…
InfantLab Oct 6, 2026
fdd573f
docs(spec 022): name the default "My folders"; describe step 1 as the…
InfantLab Oct 6, 2026
23609ee
docs(spec 022): outputs too - results in one visible folder, by run t…
InfantLab Oct 6, 2026
84bd53b
docs(spec): 023 viewer overhaul placeholder, next after 022
InfantLab Oct 6, 2026
4b91db8
docs(spec 022): plan, research, data model, contracts, quickstart
InfantLab Oct 6, 2026
6c3046f
docs(spec 022): tasks
InfantLab Oct 6, 2026
f6a4b47
docs(spec 022): resolve analysis findings
InfantLab Oct 6, 2026
756abcb
feat(results): every run's results in one visible folder (spec 022 US6)
InfantLab Oct 6, 2026
0428f5f
feat(ingest): My folders by default on the same machine, pick individ…
InfantLab Oct 6, 2026
50a91a4
feat(results): run and job pages show the results folder; run zip; de…
InfantLab Oct 6, 2026
9c2fd6f
feat(rerun): say which videos moved before a rerun, and find them by …
InfantLab Oct 6, 2026
1c3ef39
feat(docker): videos read in place and results on the host under Dock…
InfantLab Oct 6, 2026
ff9761e
feat(datasets): save chosen videos as a dataset that reruns with no p…
InfantLab Oct 6, 2026
2a1243b
feat(results): Settings shows the video and results folders; moved re…
InfantLab Oct 6, 2026
b254577
docs(spec 022): CHANGELOG, getting started, roadmap; step 1's subtitle
InfantLab Oct 6, 2026
e0ab175
fix(my-folders): start at Places and lead to videos, not a listing of…
InfantLab Oct 6, 2026
57bd6f6
docs(spec 023): widen the viewer overhaul to the whole experience; re…
InfantLab Oct 6, 2026
87e9ac9
docs(spec): 024 a container that feels local
InfantLab Oct 6, 2026
30daa60
docs(spec 022): its Docker walkthrough is replaced by spec 024
InfantLab Oct 6, 2026
11def4c
docs(spec 024): plan, research, data model, contracts, quickstart
InfantLab Oct 6, 2026
76dfac3
docs(spec 024): the app, add-ons, weights, activity and files persist…
InfantLab Oct 6, 2026
3c64cd2
docs(spec 024): tasks
InfantLab Oct 6, 2026
ddb794b
docs(spec 024): resolve analysis findings
InfantLab Oct 6, 2026
a4f6c37
feat(spec 024): a container never shows its own folders (US4)
InfantLab Oct 6, 2026
f7b30b8
feat(spec 024): videoannotator-start, the launcher (sh)
InfantLab Oct 6, 2026
8264fe2
feat(spec 024): installed pipelines come back; Stop sharing in Settings
InfantLab Oct 6, 2026
a85c18d
feat(spec 024): Windows launcher, installers, release wiring and docs
InfantLab Oct 6, 2026
9e4328c
fix(spec 024): CI failures from the launcher work
InfantLab Oct 7, 2026
3132b2b
fix(spec 024): launcher passed the volumes as one argument
InfantLab Oct 7, 2026
0fc7d94
feat(spec 024): Upload videos is a tab beside My folders
InfantLab Oct 7, 2026
06d9658
fix(spec 024): quickstart walkthrough fixes
InfantLab Oct 14, 2026
a2e8288
docs(roadmap): v1.6.0 as soon as complete, no BCCCD; T083 after release
InfantLab Oct 14, 2026
098c012
docs(roadmap): pilot and its success criteria after the v1.6.0 releas…
InfantLab Oct 14, 2026
7237d97
docs(roadmap): no benchmark in v1.6.0; defaults change on upstream ev…
InfantLab Oct 14, 2026
5b3c10a
fix(launcher): Podman on Windows works across WSL setups
InfantLab Oct 14, 2026
6a72808
chore(release): 1.6.0-rc1, and release CI that can publish it
InfantLab Oct 14, 2026
4b78b3c
docs(readme): lead with what it does; Get started in three steps
InfantLab Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
47 changes: 0 additions & 47 deletions .devcontainer/PYTORCH_CUDA_INSTALL.md

This file was deleted.

10 changes: 10 additions & 0 deletions .devcontainer/devcontainer-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,16 @@
"version": "1.1.0",
"resolved": "ghcr.io/devcontainers/features/github-cli@sha256:d22f50b70ed75339b4eed1ba9ecde3a1791f90e88d37936517e3bace0bbad671",
"integrity": "sha256:d22f50b70ed75339b4eed1ba9ecde3a1791f90e88d37936517e3bace0bbad671"
},
"ghcr.io/devcontainers/features/node:1": {
"version": "1.7.1",
"resolved": "ghcr.io/devcontainers/features/node@sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6",
"integrity": "sha256:8c0de46939b61958041700ee89e3493f3b2e4131a06dc46b4d9423427d06e5f6"
},
"ghcr.io/shyim/devcontainers-features/bun:0": {
"version": "0.0.1",
"resolved": "ghcr.io/shyim/devcontainers-features/bun@sha256:689eae681aa08981175829a59953ba67a7d311f6a05c15d1bbbcb2da2839827e",
"integrity": "sha256:689eae681aa08981175829a59953ba67a7d311f6a05c15d1bbbcb2da2839827e"
}
}
}
150 changes: 77 additions & 73 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,75 +1,79 @@
{
"name": "VideoAnnotator (GPU)",
"build": {
"dockerfile": "../Dockerfile.gpu",
"context": "..",
"args": {
"SKIP_IMAGE_UV_SYNC": "true",
"SKIP_TORCH_INSTALL": "true"
}
},
"runArgs": [
"--gpus",
"all"
],
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/node:1": {
"version": "lts"
},
"ghcr.io/shyim/devcontainers-features/bun:0": {}
},
"forwardPorts": [
18011,
19011
],
"portsAttributes": {
"18011": {
"label": "VideoAnnotator API",
"onAutoForward": "notify"
},
"19011": {
"label": "Viewer dev server (Vite)",
"onAutoForward": "notify"
}
},
"onCreateCommand": "grep -qF scripts/shell_aliases.sh ~/.bashrc || echo \"source ${containerWorkspaceFolder}/scripts/shell_aliases.sh\" >> ~/.bashrc",
"postCreateCommand": "uv sync --inexact --extra dev \u0026\u0026 HADOLINT_DEST_DIR=/usr/local/bin bash scripts/install_hadolint.sh \u0026\u0026 uv run pre-commit install \u0026\u0026 (cd viewer \u0026\u0026 bun install)",
"mounts": [
"source=videoannotator-claude-home,target=/root/.claude,type=volume",
"source=videoannotator-viewer-node-modules,target=${containerWorkspaceFolder}/viewer/node_modules,type=volume"
],
"containerEnv": {
"UV_LINK_MODE": "copy",
"UV_NO_SYNC": "1",
"HUGGINGFACE_TOKEN": "${localEnv:HUGGINGFACE_TOKEN}",
"HF_AUTH_TOKEN": "${localEnv:HF_AUTH_TOKEN}",
"OLLAMA_BASE_URL": "http://host.docker.internal:11434",
"HF_HOME": "${containerWorkspaceFolder}/models/huggingface",
"TORCH_HOME": "${containerWorkspaceFolder}/models/torch",
"PYANNOTE_CACHE": "${containerWorkspaceFolder}/models/pyannote",
"DEEPFACE_HOME": "${containerWorkspaceFolder}/models/deepface"
},
"customizations": {
"vscode": {
"settings": {
"python.defaultInterpreterPath": "${containerWorkspaceFolder}/.venv/bin/python",
"python.formatting.provider": "none",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
},
"extensions": [
"charliermarsh.ruff",
"ms-python.python",
"ms-python.vscode-pylance",
"anthropic.claude-code"
]
}
},
"shutdownAction": "stopContainer"
"name": "VideoAnnotator (GPU)",
"build": {
"dockerfile": "../Dockerfile",
"context": "..",
"args": {
"SKIP_IMAGE_UV_SYNC": "true"
}
},
"runArgs": [
"--gpus",
"all",
"--memory=12g"
],
"features": {
"ghcr.io/devcontainers/features/github-cli:1": {},
"ghcr.io/devcontainers/features/node:1": {
"version": "lts"
},
"ghcr.io/shyim/devcontainers-features/bun:0": {}
},
"forwardPorts": [
18011,
19011
],
"portsAttributes": {
"18011": {
"label": "VideoAnnotator API",
"onAutoForward": "notify"
},
"19011": {
"label": "Viewer dev server (Vite)",
"onAutoForward": "notify"
}
},
"onCreateCommand": "grep -qF scripts/shell_aliases.sh ~/.bashrc || echo \"source ${containerWorkspaceFolder}/scripts/shell_aliases.sh\" >> ~/.bashrc",
"postCreateCommand": "uv sync --inexact --all-extras && HADOLINT_DEST_DIR=/usr/local/bin bash scripts/install_hadolint.sh && uv run pre-commit install && (cd viewer && bun install)",
"postStartCommand": "bash scripts/check_workspace_mount.sh",
"mounts": [
"source=videoannotator-claude-home,target=/root/.claude,type=volume",
"source=videoannotator-gh-config,target=/root/.config/gh,type=volume",
"source=videoannotator-viewer-node-modules,target=${containerWorkspaceFolder}/viewer/node_modules,type=volume",
"source=videoannotator-venv,target=${containerWorkspaceFolder}/.venv,type=volume",
"source=videoannotator-models,target=/app/models,type=volume"
],
"containerEnv": {
"UV_LINK_MODE": "copy",
"UV_NO_SYNC": "1",
"HUGGINGFACE_TOKEN": "${localEnv:HUGGINGFACE_TOKEN}",
"HF_AUTH_TOKEN": "${localEnv:HF_AUTH_TOKEN}",
"OLLAMA_BASE_URL": "http://host.docker.internal:11434",
"VIDEOANNOTATOR_MODELS_DIR": "/app/models",
"VIDEOANNOTATOR_LOG_DIR": "${containerWorkspaceFolder}/logs",
"VIDEOANNOTATOR_DB_PATH": "${containerWorkspaceFolder}/videoannotator.db",
"STORAGE_ROOT": "${containerWorkspaceFolder}/storage/jobs"
},
"customizations": {
"vscode": {
"settings": {
"python.defaultInterpreterPath": "${containerWorkspaceFolder}/.venv/bin/python",
"python.formatting.provider": "none",
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
},
"extensions": [
"charliermarsh.ruff",
"ms-python.python",
"ms-python.vscode-pylance",
"anthropic.claude-code"
]
}
},
"shutdownAction": "stopContainer"
}
63 changes: 0 additions & 63 deletions .devcontainer/devcontainer.json.bak-20260108-122537

This file was deleted.

3 changes: 0 additions & 3 deletions .devcontainer/noop.txt

This file was deleted.

13 changes: 13 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Allowlist: the build context is only what the Dockerfile copies. Everything else
# (.git, .venv, models, databases, .env with tokens, viewer/node_modules) stays out.
*
!pyproject.toml
!uv.lock
!.python-version
!README.md
!src/
!configs/
# CI only: tests/launcher/Dockerfile.e2e adds these; the published image never copies them.
!tests/launcher/e2e/
**/__pycache__
**/*.pyc
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,6 @@

# Shell scripts should always be LF
*.sh text eol=lf

# Windows double-click wrapper: cmd.exe wants CRLF
launcher/*.cmd text eol=crlf
Loading
Loading