Skip to content

feat: add CLI access layer and release foundation - #11

Merged
tulayha merged 17 commits into
mainfrom
feat/cli-access-layer
Jul 28, 2026
Merged

feat: add CLI access layer and release foundation#11
tulayha merged 17 commits into
mainfrom
feat/cli-access-layer

Conversation

@tulayha

@tulayha tulayha commented Jul 27, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add a reusable application service boundary for CLI, Streamlit, workers, and future adapters
  • replace the flat command surface with grouped Typer commands for indexing, search, actors, repositories, benchmarks, runtime checks, and UI launch
  • add persistent named repository configuration with index and device selection
  • provide consistent rich/JSON output, structured JSON errors, progress reporting, model preparation, and index lifecycle commands
  • make vidxp ui the sole browser-interface entry point and remove legacy CLI aliases and vidxp-ui
  • reconcile origin/main and the tagged v0.1.0 release history without regressing the new logo, README structure, or upstream wording
  • publish automatic b prereleases from main to TestPyPI and approved stable releases manually from main to PyPI
  • use Towncrier fragments for stable changelogs while Python Semantic Release remains the sole version authority

Why

VidXP needed one transport-neutral access boundary and a predictable,
automation-friendly CLI instead of duplicated frontend and command behavior.
Named repository configuration also makes local indexes centrally selectable
without coupling future API or MCP adapters to Typer.

The release history had also split between main and release. Bringing the
tagged stable ancestry back into the main line allows one branch to own
prereleases and stable releases without moving the existing tag.

Release and changelog behavior

  • release and CI tools are declared once in utils/build-requirements.txt
  • release-relevant merges to main create GitHub/TestPyPI b prereleases
  • the protected Release (main → PyPI) workflow always checks out main
  • stable releases render and consume pending fragments; prereleases retain them
  • CI requires a fragment or a maintainer-applied skip-changelog label
  • fragment enforcement stays inside the existing CI / validate check

User impact

The canonical command surface is grouped under vidxp index, vidxp search,
vidxp actors, vidxp repositories, and vidxp benchmark. Existing hidden
flat aliases and the standalone vidxp-ui executable are intentionally
removed; the supported UI command is vidxp ui.

Validation

  • GitHub CI passes lint, 114 tests, and package build
  • all workflows pass actionlint
  • isolated Semantic Release runs calculated 0.2.0-b.1 and 0.2.0
  • prerelease validation retained fragments and left CHANGELOG.md untouched
  • stable validation rendered the Towncrier section and consumed the fragment
  • both prerelease and stable validation built a wheel and source distribution
  • README content was restored after PyPI link rewriting
  • the v0.1.0 tag and origin/main are ancestors of the branch
  • public-repository diff scan found no credentials, private keys, tokens, or local absolute paths

@tulayha tulayha changed the title feat: add repository-aware CLI access layer feat: add CLI access layer and release foundation Jul 27, 2026
@tulayha
tulayha marked this pull request as ready for review July 28, 2026 08:18
@tulayha
tulayha merged commit 78b4020 into main Jul 28, 2026
1 check passed
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.

1 participant