Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
6be4a05
Merge pull request #9 from grayhatdevelopers/main
tulayha Jul 27, 2026
74d0569
0.1.0
Jul 27, 2026
b6cfc4a
feat(application): add reusable VidXP access service
tulayha Jul 27, 2026
9d9e047
feat(cli): expand structured command interface
tulayha Jul 27, 2026
6563b5a
build: constrain Typer compatibility range
tulayha Jul 27, 2026
a5e760a
docs: update canonical CLI commands
tulayha Jul 27, 2026
c3205e9
feat(config): add repository-aware application interfaces
tulayha Jul 27, 2026
1c5e85d
feat(benchmarks): honor shared device and JSON output
tulayha Jul 27, 2026
f593212
docs: describe repository-aware CLI usage
tulayha Jul 27, 2026
91e0bd0
refactor(cli): remove legacy entry points
tulayha Jul 27, 2026
fba7de3
chore: clean readme further
SaadBazaz Jul 27, 2026
43a17e1
feat(capabilities): add registry-driven feature architecture
tulayha Jul 27, 2026
baec97b
build: clean stale artifacts before packaging
tulayha Jul 27, 2026
fa9f8d2
docs: explain selective capability contributions
tulayha Jul 27, 2026
e752fc3
refactor(config): move settings into capabilities
tulayha Jul 27, 2026
3913428
refactor(runtime): generalize capability preparation
tulayha Jul 27, 2026
cf17072
refactor(indexing): make visual processors capability-owned
tulayha Jul 27, 2026
18b2d3a
refactor(actor): own capability schemas
tulayha Jul 27, 2026
fb3dd01
refactor(capabilities): validate contracts with pydantic
tulayha Jul 27, 2026
a208b9b
refactor(deps): use capability requirement manifests
tulayha Jul 27, 2026
29472a8
refactor(benchmarks): gate optional cli commands
tulayha Jul 27, 2026
ee803b3
ci: validate pull requests before publishing
tulayha Jul 27, 2026
c36b410
test(schema): keep fixtures aligned with index version
tulayha Jul 27, 2026
896628d
refactor(deps): centralize storage requirements
tulayha Jul 27, 2026
efbbce2
ci(security): harden public repository workflows
tulayha Jul 27, 2026
e927322
ci: stabilize lint rule selection
tulayha Jul 27, 2026
ca2e112
ci: streamline workflow execution
tulayha Jul 27, 2026
6c6bb35
ci(security): control CodeQL scanning
tulayha Jul 27, 2026
bd49f2a
chore(deps): reduce update noise
tulayha Jul 27, 2026
1f39ce1
chore(release): reconcile stable release history
tulayha Jul 27, 2026
79ddd6a
chore: sync origin main
tulayha Jul 27, 2026
6464a51
build(release): adopt fragment-based changelogs
tulayha Jul 27, 2026
b4ef623
ci(release): publish prereleases and stable builds from main
tulayha Jul 27, 2026
11bbc93
docs: explain changelog and release contributions
tulayha Jul 27, 2026
cd99d8a
chore: sync cli access layer
tulayha Jul 27, 2026
62500a5
docs(changelog): describe capability architecture
tulayha Jul 27, 2026
655f2ec
fix(ci): resolve cli access lint failures
tulayha Jul 27, 2026
97597ae
chore: sync cli lint fixes
tulayha Jul 27, 2026
8c6b417
ci: install benchmark test dependencies
tulayha Jul 27, 2026
0555054
chore: sync benchmark ci fix
tulayha Jul 27, 2026
13e9e3c
fix(application): translate missing optional dependencies
tulayha Jul 28, 2026
f5cc750
fix(frontend): honor installed indexing capabilities
tulayha Jul 28, 2026
3bcca08
fix(release): bind stable publishing to main
tulayha Jul 28, 2026
a2b9f57
docs(readme): simplify overview and installation
tulayha Jul 28, 2026
b457d9c
docs(readme): restore capability summary
tulayha Jul 28, 2026
6e6bb28
chore: clean readme further
SaadBazaz Jul 28, 2026
783a32b
build(container): add stable runtime image
tulayha Jul 28, 2026
2c9cdaf
ci(release): publish stable container images
tulayha Jul 28, 2026
f76c88d
Merge branch 'feat/capability-plugins' into new-readme
SaadBazaz Jul 28, 2026
c334103
Merge pull request #13 from grayhatdevelopers/new-readme
SaadBazaz Jul 28, 2026
eab3ecf
ci(release): publish validated artifacts once
tulayha Jul 28, 2026
a9ee0b5
build(deps): raise setuptools build floor
tulayha Jul 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
.git
.github
.pytest_cache
.ruff_cache
.venv*
build
chroma_data
dist
tmp
**/__pycache__
*.py[cod]
.env
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
VIDXP_IMAGE=ghcr.io/grayhatdevelopers/vidxp:latest
VIDXP_PORT=8501
VIDXP_DEVICE=cpu
35 changes: 35 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
version: 2
updates:
- package-ecosystem: pip
directories:
- "/"
- "/src/vidxp/requirements"
- "/src/vidxp/capabilities/dialogue"
- "/src/vidxp/capabilities/scene"
- "/src/vidxp/capabilities/actor"
- "/src/vidxp/benchmarks"
- "/utils"
schedule:
interval: cron
cronjob: "0 9 1,15 * *"
timezone: UTC
groups:
compatible-updates:
patterns:
- "*"
update-types:
- minor
- patch
open-pull-requests-limit: 2

- package-ecosystem: github-actions
directory: /
schedule:
interval: cron
cronjob: "0 9 1,15 * *"
timezone: UTC
groups:
github-actions:
patterns:
- "*"
open-pull-requests-limit: 2
13 changes: 13 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
## Summary

- Describe the user-facing outcome.

## Validation

- List the commands or checks run.

## Changelog

- [ ] Added `changes/<pr-number>.<type>.md`
- [ ] This change is internal-only; explain why a maintainer should apply the
`skip-changelog` label:
149 changes: 149 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
name: CI

on:
pull_request:
types:
- opened
- synchronize
- reopened
- labeled
- unlabeled

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 0

- uses: actions/setup-python@v7
with:
python-version: "3.11"
cache: pip

- name: Install repository tooling
run: |
python -m pip install --upgrade pip
python -m pip install -r utils/build-requirements.txt

- name: Require a changelog fragment
if: >-
github.event_name == 'pull_request' &&
!contains(github.event.pull_request.labels.*.name, 'skip-changelog')
run: towncrier check --compare-with "${{ github.event.pull_request.base.sha }}"

- name: Determine validation scope
id: scope
shell: bash
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
run: |
changed_files="$(git diff --name-only "$BASE_SHA" HEAD)"
if grep -Eq '^(\.github/workflows/ci\.yml$|src/|tests/|utils/|LICENSE$|MANIFEST\.in$|pyproject\.toml$)' <<< "$changed_files"; then
run_suite=true
else
run_suite=false
fi
if grep -Eq '^(\.dockerignore$|\.github/workflows/ci\.yml$|Dockerfile$|compose\.yaml$|pyproject\.toml$|src/vidxp/(requirements/.*\.txt|capabilities/[^/]+/requirements\.txt)$)' <<< "$changed_files"; then
run_container=true
else
run_container=false
fi
echo "run_suite=$run_suite" >> "$GITHUB_OUTPUT"
echo "run_container=$run_container" >> "$GITHUB_OUTPUT"

- name: Install test surface
if: steps.scope.outputs.run_suite == 'true'
run: python -m pip install ".[scene,frontend,benchmarks]"

- name: Lint
if: steps.scope.outputs.run_suite == 'true'
run: ruff check src tests

- name: Test
if: steps.scope.outputs.run_suite == 'true'
run: python -m unittest discover -s tests -q
env:
PYTHONPATH: src

- name: Build wheel and source distribution
if: steps.scope.outputs.run_suite == 'true'
run: python -m build

- name: Verify minimal wheel
if: steps.scope.outputs.run_suite == 'true'
shell: bash
run: |
python -m venv .wheel-smoke
.wheel-smoke/bin/python -m pip install --upgrade pip
.wheel-smoke/bin/python -m pip install dist/*.whl
.wheel-smoke/bin/python -m pip check
.wheel-smoke/bin/python - <<'PY'
from importlib.util import find_spec
from subprocess import check_output

import vidxp
from vidxp.capabilities.registry import capability_names

assert capability_names() == ("dialogue", "scene", "actor")
help_text = check_output(
[".wheel-smoke/bin/vidxp", "--help"],
text=True,
)
assert "benchmark" not in help_text
for module in (
"chromadb",
"clip",
"cv2",
"face_recognition",
"sentence_transformers",
"srt",
"streamlit",
"torch",
"whisperx",
):
assert find_spec(module) is None, module
PY

- name: Validate Compose configuration
if: steps.scope.outputs.run_container == 'true'
run: docker compose config --quiet

- name: Build container
if: steps.scope.outputs.run_container == 'true'
run: docker build --tag vidxp:ci .

- name: Smoke container
if: steps.scope.outputs.run_container == 'true'
shell: bash
run: |
docker run --detach --name vidxp-ci \
--publish 127.0.0.1:8501:8501 vidxp:ci
trap 'docker rm --force vidxp-ci >/dev/null 2>&1 || true' EXIT

docker exec vidxp-ci vidxp --version
docker exec vidxp-ci python -c \
'import clip, face_recognition, whisperx'
docker exec vidxp-ci sh -c \
'test ! -d "$HOME/.cache/huggingface" && test ! -d "$HOME/.cache/clip"'

for attempt in {1..30}; do
if curl --fail --silent http://127.0.0.1:8501/_stcore/health; then
exit 0
fi
if [[ "$(docker inspect --format='{{.State.Running}}' vidxp-ci)" != "true" ]]; then
break
fi
sleep 2
done

docker logs vidxp-ci
exit 1
37 changes: 37 additions & 0 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: CodeQL

on:
pull_request:
branches:
- main
paths:
- ".github/workflows/codeql.yml"
- "src/**/*.py"
- "utils/**/*.py"
push:
branches:
- main
paths:
- ".github/workflows/codeql.yml"
- "src/**/*.py"
- "utils/**/*.py"
schedule:
- cron: "17 4 * * 6"

concurrency:
group: codeql-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
contents: read
security-events: write

jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: github/codeql-action/init@v4
with:
languages: python
- uses: github/codeql-action/analyze@v4
Loading
Loading