71 lines
3.6 KiB
Markdown
71 lines
3.6 KiB
Markdown
# DevPlace Changelog — Last 24 Hours
|
|||
|
|
|
||
|
|
## AI Gateway — Non-OpenAI Upstreams & Client Model Passthrough
|
||
|
|
|
||
|
|
The AI gateway now supports routing to non-OpenAI upstream providers. The gateway can target any compatible API endpoint, and client-specified model names are passed through to the upstream instead of being forced to a fixed model. This opens the door for self-hosted providers and alternative APIs.
|
||
|
|
|
||
|
|
**Files:** `services/openai_gateway/gateway.py`, `service.py`, `thinking.py`, `vision.py`
|
||
|
|
|
||
|
|
## AI Gateway — Trust Only Upstream X-Gateway-Model Header
|
||
|
|
|
||
|
|
The gateway now trusts only the `X-Gateway-Model` header from the upstream response when determining which model served a request. This prevents spoofing and ensures usage attribution is accurate.
|
||
|
|
|
||
|
|
**Files:** `services/openai_gateway/gateway.py`, `usage.py`
|
||
|
|
|
||
|
|
## Backup Service — Remote Offload to Hetzner Storage Box
|
||
|
|
|
||
|
|
Completed backups can now be automatically offloaded to a remote Hetzner Storage Box. The offload module handles the transfer, and the backup service orchestrates the full lifecycle: create, verify, offload, and prune.
|
||
|
|
|
||
|
|
**Files:** `services/backup/offload.py`, `service.py`, `store.py`
|
||
|
|
|
||
|
|
## Container Manager — Orphan Blob Fix & System Prune
|
||
|
|
|
||
|
|
Fixed container sync races that leaked orphan blobs (files on disk with no database reference). Added a new `devplace system prune` CLI command that safely removes orphan blobs, sweeps unreferenced container workspace dirs, and prunes expired fork/zip job rows. The command supports `--dry-run` for preview.
|
||
|
|
|
||
|
|
**Files:** `cli/system.py`, `services/containers/store.py`, `attachments.py`, `project_files.py`
|
||
|
|
|
||
|
|
## Container Manager — Two-Phase Plan/Execute Report
|
||
|
|
|
||
|
|
The `system prune` CLI command now uses a two-phase plan/execute report: first it shows what would be deleted (plan), then executes and reports what was actually removed.
|
||
|
|
|
||
|
|
**Files:** `cli/system.py`, `cli/containers.py`
|
||
|
|
|
||
|
|
## Post Page — Happy 404, Featured/Related Sidebars, Next-Post Nav
|
||
|
|
|
||
|
|
The post page now includes:
|
||
|
|
- A "Happy 404" page for missing posts
|
||
|
|
- Featured posts sidebar
|
||
|
|
- Related posts sidebar
|
||
|
|
- Next-post navigation
|
||
|
|
|
||
|
|
**Files:** `happy404.py`, `routers/posts.py`, `templates/post.html`, `database/content.py`
|
||
|
|
|
||
|
|
## Static Asset Cache-Busting — Unified with Auto-Bumped App Version
|
||
|
|
|
||
|
|
Static asset URLs now use the auto-bumped app version for cache-busting instead of a separate timestamp. This ensures assets are invalidated whenever the app version changes, and eliminates the need for manual cache-bust updates.
|
||
|
|
|
||
|
|
**Files:** `config.py`, `templates/docs/static-caching.html`, `nginx/nginx.conf.template`
|
||
|
|
|
||
|
|
## Automatic Patch-Version Bumping via Git Pre-Commit Hook
|
||
|
|
|
||
|
|
A new `.githooks/pre-commit` hook automatically bumps the patch version in `pyproject.toml` on every commit. The hook increments patch (e.g. `1.0.0` → `1.0.1`) and stages the change. A hand-set major/minor bump in the same commit is left untouched. The hook defers during merges and never blocks a commit.
|
||
|
|
|
||
|
|
**Files:** `.githooks/pre-commit`, `Makefile`, `CLAUDE.md`
|
||
|
|
|
||
|
|
## Test Infrastructure — Shared `run_async` Helper
|
||
|
|
|
||
|
|
Provision tests now use the shared `run_async` test helper instead of bare `asyncio.run` calls, improving consistency and error handling across the test suite.
|
||
|
|
|
||
|
|
**Files:** `tests/unit/services/containers/workspace/provision.py`
|
||
|
|
|
||
|
|
## Documentation Updates
|
||
|
|
|
||
|
|
- Updated `README.md` with new feature documentation
|
||
|
|
- Updated `CLAUDE.md` with new CLI commands and architecture notes
|
||
|
|
- Updated docs pages: production nginx, static caching, backups, architecture backend
|
||
|
|
- Updated nested `CLAUDE.md` files for gateway, containers, backup, and posts subsystems
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*Generated from git log — all commits from the last 24 hours.*
|