Skip to content

chore(release): promote beta to stable - #132

Draft
github-actions[bot] wants to merge 15 commits into
releasefrom
main
Draft

github-actions[bot] wants to merge 15 commits into
releasefrom
main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

This draft is maintained automatically. Mark it ready and merge it when the current beta is approved for stable release.

* Added Search filters,Added file names,Implemented CLI,MCP and HTTP projections

* Fixed the issue of import in the file named mcp.py

* Fixed the same import issue in the file named ports.py

* Fixes of media_service.py and test_frontend.py as proposed by the Reviewer

* Missed the service variable that was defined at the top of the function

* align workspace actions, cursor scope, and ready-only frontend listing

* Minor changes

* fix(media): preserve filtered pagination and matching

---------

Co-authored-by: Talha <tamjad91@gmail.com>
* docs(benchmarking): refresh multimodal model direction

* feat(sound): add FineLAP audio event search

* fix(desktop): refresh model cache catalog
* feat(premiere): add project media indexing and search

* feat(premiere): add Desktop-managed CEP and UXP installation

* fix(desktop): expose sound in guided setup

* fix(desktop): make Premiere setup own dependencies

* fix(desktop): recover stalled Windows media setup

* fix(desktop): derive setup metadata from capabilities

* build(premiere): adopt Bolt UXP tooling

* build(premiere): complete Bolt UXP adoption
* Add glama.json configuration file

* Add 'tulayha' to maintainers list in glama.json
* feat(benchmarks): add Codex MCP ablation harness

* feat!: rename public media capabilities

Replace the dialogue and videoprism capability identifiers with speech and action across shared contracts, packages, extras, adapters, generated catalogs, benchmarks, and documentation. Bump the index schema so repositories rebuild under the new collection names.

BREAKING CHANGE: dialogue and videoprism are removed as capability names and package extras. Use speech and action, then rebuild existing indexes.

* test(desktop): fix renamed capability ordering

* feat(query): select Qwen3.5 4B local default

* feat(desktop): manage local grounded answers

* feat(premiere): add grounded answers
* fix(desktop): use a managed headless Ollama runtime

* fix(packaging): harden dependency safeguards
tulayha and others added 2 commits September 1, 2026 19:27
* fix(benchmarks): initialize media runtime in setup

* fix(ci): skip artifact builds for benchmark changes
…al DiDeMo corpus (#128)

* feat(benchmarks): add reproducible indexing-latency benchmark

Adds a  command that generates synthetic
media via FFmpeg testsrc2 and measures per-stage indexing throughput,
per-stage wall time, and peak memory across configurable modalities.
Supports regression detection against a prior baseline report.

- : corpus generation, run orchestrator (drives real
  run_index/ModelRuntime), per-stage aggregation, baseline comparison
- CLI command  with --modalities, --videos,
  --duration-seconds, --resolution, --repetitions, --input-mode
  (transcript/transcribe), --audio-mode, --baseline, --baseline-tolerance
-  documents the protocol, output schema, and limitations
- 23 unit tests for validation, aggregation, clip command building,
  baseline comparison, and corpus spec

* fix(benchmarks): address CodeRabbit review issues

- Reject resolutions with extra components (e.g. 320x180x1)
- Accumulate record_counts across repetitions instead of overwriting
- Move corpus generation inside try block for proper failure handling
- Pass reset parameter through instead of hardcoded True
- Validate baseline configuration compatibility before comparison

* feat(benchmarks): run indexing-latency benchmark on real DiDeMo media

Add a --corpus mode to vidxp benchmark index-latency so the throughput
benchmark can index the real DiDeMo videos prepared by vidxp benchmark
prepare, instead of only synthetic testsrc2 clips. Named corpora resolve
under the application data directory and honor media-overrides.json;
arbitrary media directories are supported too. Real corpora have no
released transcripts, so dialogue requires --input-mode transcribe and is
transcribed by Whisper. Reports record the corpus as kind 'real' with name,
clip count, bytes, duration range, and containers, and baseline comparison
rejects a baseline whose corpus signature differs so synthetic and real
results never mix.

* fix(benchmarks): address latency benchmark review feedback

Ensure every repetition runs a fresh indexing cycle by forcing reset
for repetitions after the first, so --repetitions N measures N full
indexing runs instead of one run followed by resume/skip passes.

Apply the --audio-mode flite requirement only to generated synthetic
media; real corpora take audio from the video and document the flag as
ignored, so the DiDeMo dialogue/transcribe command now works without it.

Recognize non-named --corpus strings as media directory paths and
validate they exist, making the documented --corpus <directory> mode
usable from the command line.

Add orchestration, real-corpus validation, and directory-resolution
tests covering the changed behavior.

* fix(benchmarks): align latency benchmark with speech capability rename

Upstream renamed the dialogue capability to speech (#135), so the
latency benchmark now targets the speech modality and its speech_indexing
stage. The speech capability still reports the dialogue_phrases metric,
so rate aggregation is unchanged.

* fix(benchmarks): reset every measured latency repetition

Always reset the benchmark index, including the first repetition when a completed run ID is reused. Keep the reset option accepted for compatibility and clarify its help. Update the existing orchestration assertion.

User-visible benchmark correctness fix; not internal-only. Validation: 60 targeted latency and runner tests passed, targeted Ruff passed, CLI help and git diff --check passed.

* fix(benchmarks): require explicit reset for existing latency runs

Reject an existing run before generating media or opening storage unless reset is requested. New runs index normally and reset between repetitions. Restore the reset option meaning and document the overwrite behavior.

User-visible benchmark correction. Validation: 61 targeted latency and runner tests, targeted Ruff, CLI help, and git diff --check passed. Markdown lint was unavailable in the offline npm cache; no links changed. Full suite and model-backed smoke were not run for this focused guard change.

---------

Co-authored-by: Talha Amjad <tamjad91@gmail.com>
Keep full Python and package validation while skipping unrelated product artifact and provider jobs for a conservative benchmark-only scope. Require selected jobs to succeed. Internal-only.
) (#141)

* fix(fusion): bound moment components to shared overlapping interval

* fix(fusion): compute fused bounds using shared overlap window (#87)

* fix(fusion): keep touching moments separate and report overlap rule

---------

Co-authored-by: Muhammad Abdullah Ghani <i222683@nu.edu.pk>
Co-authored-by: Talha Amjad <tamjad91@gmail.com>
#146)

* fix(search): separate channel candidate retrieval limit before fusion (#88)

- Introduce resolve_candidate_limit() with independent candidate_depth budget (default 50, max 500)
- Add search_candidate_depth setting to VidXPSettings
- Update Application.search() and Application.query_video() to use candidate limits for channel queries while returning top_k final fused moments
- Add unit tests for candidate depth resolution and non-positive input validation
- Add query_video candidate depth verification and application.search regression test for candidates retrieved past public top_k

* fix(search): accept configured candidate depth through capability input

---------

Co-authored-by: Talha Amjad <tamjad91@gmail.com>
Two assertions compared a product-returned path against an unresolved
temporary-directory path. The product resolves deliberately at both
boundaries, so the comparisons hold only when no path component is
rewritten during resolution:

- `verified_local_path` in `artifact_delivery.py` calls
  `path.resolve(strict=True)` before an artifact path reaches the caller.
- `_validated_marketplace_root` in `codex_plugin.py` calls
  `.expanduser().resolve()` before the Codex marketplace root is used.

On Windows, `TMP` commonly holds an 8.3 short component when the user
profile name contains a space. Resolution expands it, and both
assertions fail on the short-versus-long form of the same path:

    AssertionError: WindowsPath('C:/Users/Hasnain Ibrar Butt/AppData/
    Local/Temp/tmpzyyjwosm/clip.mp4') != WindowsPath('C:/Users/
    HASNAI~1/AppData/Local/Temp/tmpzyyjwosm/clip.mp4')

    AssertionError: assert 'C:\Users\HASNAI~1\...\marketplace.json'
    == 'C:\Users\Hasnain Ibrar Butt\...\marketplace.json'

Compare the resolved form on both sides, which is what each boundary
documents and returns.

CI does not reach either assertion. The full suite runs on
ubuntu-latest, and the windows-2025 provider job runs only
`test_models.py` and `test_indexing.py`. `test_codex_plugin.py` is
additionally never collected by CI at all, because it defines
module-level pytest functions and CI discovers tests with
`python -m unittest discover -s tests`.

Internal-only, test scope. No product behavior changes: both delivered
paths were already correct and are still asserted, now in the form the
boundaries actually return.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Talha Amjad <tamjad91@gmail.com>
* feat(indexing): add bulk video indexing command and coordinator

* feat(index): add bulk indexing for many media items

`vidxp index create` handled one media item per invocation, so indexing a
repository meant driving it once per video and tracking the results by
hand.

Add a transport-neutral planning operation and a thin CLI adapter over
it:

- `Application.plan_bulk_index` resolves a selection to per-media targets
  and decides which ones the active snapshot already covers. The plan is
  read-only, so callers can show it before committing to any work.
- `vidxp index bulk` indexes every registered media item, or a selection
  passed with repeated `--media-id`. `--plan-only` shows the decision
  without indexing, and `--reindex` plans covered media anyway.

Media is skipped when the active snapshot holds a generation for it, that
generation covers every requested modality, and its recorded input
checksum still matches the registered media. Replacing a video's content
or asking for a modality the generation lacks therefore plans it again.
Media that is not in the ready state is reported as skipped rather than
silently dropped.

No new indexing behavior. Each pending target is submitted through the
existing `submit_index` durable job, one job per media item, matching how
`IngestionCoordinator` already sequences ingestion. That is what gives
the batch its guarantees: a failure isolates to its own media, earlier
successes stay committed, and rerunning the command retries only what is
still missing because completed media is then skipped. The command exits
non-zero when any media failed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix(index): integrate bulk planning with reusable job execution

* test(cli): ignore ANSI styling in bulk error assertions

---------

Co-authored-by: umair <i250604@isb.nu.edu.pk>
Co-authored-by: Hasnain Ibrar <Hasnain2430@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants