Skip to content

Repo presentation, CI, and container packaging - #5

Merged
xfznprojects merged 8 commits into
mainfrom
repo-presentation-cleanup
Sep 17, 2026
Merged

xfznprojects merged 8 commits into
mainfrom
repo-presentation-cleanup

Conversation

@xfznprojects

Copy link
Copy Markdown
Owner

Cleans up the presentation and reproducibility gaps that made the repository read worse than the work in it.

Removed

  • docs/UPDATE-LOG.md — an internal development log published under docs/. It recorded local review steps and session notes that do not belong in a public repository.
  • The Streamlit UI (src/sessioniq/ui/, scripts/run_streamlit.py). Nothing imported it, no test covered it, and the README never documented running it. Dropping it also removes streamlit from the core install.

Fixed

  • scipy was imported but never declared. The LUFS implementation uses scipy.signal.lfilter and depended on librosa pulling it in transitively.
  • Every frontend dependency was "latest" — 23 entries, with resolved versions living only in the lockfile. They are now pinned to what the lockfile already resolved, and five packages with no references in src/ or tests/ are gone (@dnd-kit/*, react-arborist, wavesurfer.js).
  • Package metadata declares an explicit setuptools backend and src/ package root instead of relying on implicit discovery.

Added

  • CI — backend suite on Python 3.11 and 3.12, frontend tests and build, plus both container images.
  • Docker — docker compose up serves the dashboard on port 8080, with nginx proxying /api and /uploads to the API so the browser sees a single origin. Library data lives in a named volume.
  • The README test badge was static shields.io text reporting a count with nothing verifying it. It now points at the CI workflow.

Verification

  • 143 backend tests pass, ruff clean
  • 4 frontend tests pass, tsc clean, production build succeeds
  • API confirmed binding through SESSIONIQ_HOST/SESSIONIQ_PORT and answering /api/health
  • Wheel build validated in a clean directory — all 19 modules present
  • pnpm install --frozen-lockfile succeeds against the regenerated lockfile

Note

The Dockerfiles are the one part not verified locally, since Docker is not installed on this machine. The CI docker job builds both images, so the first run confirms them.

The file recorded local review steps, tooling notes, and session-specific
budget references that do not belong in the published repository.
The Streamlit app had no callers: nothing imported sessioniq.ui, no script or
test referenced run_streamlit, and the React dashboard is the supported
interface. Dropping it removes a second unused UI from the install path.

scipy was imported by the LUFS implementation but only present transitively
through librosa. It is now declared so the dependency does not depend on
another package's resolution.
Every entry was declared as "latest", so the resolved versions lived only in
the lockfile and any install without it would float to whatever was newest.
Versions are now pinned to what the lockfile already resolved, and the
lockfile is regenerated against them.

@dnd-kit/core, @dnd-kit/sortable, @dnd-kit/utilities, react-arborist, and
wavesurfer.js had no references in src/ or tests/.
The dashboard and API were only runnable through a local Python and Node
toolchain. docker compose up now builds both and serves the dashboard on
port 8080, with nginx proxying /api and /uploads to the API container so
the browser sees a single origin.

run_api.py reads SESSIONIQ_HOST and SESSIONIQ_PORT, defaulting to the
previous 127.0.0.1:8000 so local runs are unchanged. The API image uses an
explicit setuptools build backend rather than relying on implicit package
discovery.
Backend tests run on 3.11 and 3.12 so the declared Python floor is
actually exercised. The container job builds both images, which is the
only automated check on the Dockerfiles.
The test count badge was static text, so it reported a number with nothing
verifying it. It now reflects the CI workflow. Quick start leads with
docker compose, and the frontend commands use pnpm to match the pinned
package manager.
The previous pins targeted Node 20, which GitHub now runs on Node 24 and
reports as deprecated on every job.
@xfznprojects
xfznprojects merged commit 2900109 into main Sep 17, 2026
4 checks passed
@xfznprojects
xfznprojects deleted the repo-presentation-cleanup branch September 17, 2026 16:57
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