Repository navigation
Releases: OneByJorah/CostForge
Releases · OneByJorah/CostForge
Release list
v1.1.0
Fixed
- The dashboard fabricated a phantom metered request on every page load. The WebSocket greeting sent a message typed
usagewith a stub{ts}payload, which the client counted as a real request — showing "1 requests metered" withsource: undefinedagainst an empty database. The greeting now uses its own message type. Verified: the UI,/api/statsand the SQLite table now agree. - The dashboard returned HTTP 500 on a clean clone.
frontend/was missing from the repository althoughbackend/main.pyreadsfrontend/dist/index.htmlandDockerfile.frontendcopies it. The prebuilt SPA is restored and explicitly un-ignored so it ships. /and the container healthchecks could never pass. The compose frontend healthcheck probed an internal port nothing listened on; the frontend image ran as root. Both corrected — nginx now serves on 8080 as an unprivileged user.- Backend image could not build (
libssl3t64conflict); apt removed entirely since every dependency ships a wheel.
Added
- Backend test suite (8 tests) covering the API surface, the ingest path and the usage-parsing helpers, with the database isolated per test session.
- Real dashboard screenshots in
docs/media/captured from the running stack.
Changed
- Deprecated
datetime.utcnow()replaced (format-preserving, so stored timestamps and range queries are unaffected). gen.py(portal) now honours the documentedGITHUB_TOKEN.
v1.0.0 — Containerization & Standardization
v1.0.0 — Containerization & Standardization
Changes
- Added production Dockerfile with multi-stage build
- Added docker-compose.yml with healthchecks
- Added .env.example with placeholder values
- Added first-run setup wizard / docker-entrypoint.sh
- Added screenshot documentation
- Updated README with deployment instructions
- Scrub pass: no sensitive data found
Container
- Image:
ghcr.io/onebyjorah/CostForge:latest - Build:
docker build -t ghcr.io/onebyjorah/CostForge:latest . - Run:
docker compose up -d