Changeset 0.12.0 (#63)

This commit is contained in:
2026-02-25 21:38:49 +00:00
parent c9d8e9457e
commit 88216ec4cb
59 changed files with 13115 additions and 139 deletions

View File

@@ -2,6 +2,42 @@
All notable changes to Chat Switchboard.
## [0.12.0] — 2026-02-25
### Added
- **File handling and vision support.** Upload images, PDFs, and documents
into chat via 📎 button, drag-and-drop, or paste. Multimodal message
assembly injects base64 images for vision-capable models and extracted
text for documents. Staged attachment strip shows upload progress and
extraction status. Auth-aware blob rendering with Bearer tokens. Image
lightbox viewer. Vision capability hints on image attachments.
- **Storage backend abstraction.** `ObjectStore` interface with two
implementations: PVC (local filesystem) for single-node/dev and S3
(minio-go) for multi-node production. S3 backend works with any
S3-compatible API: MinIO, Ceph RGW, AWS S3. Auto-detection when
`STORAGE_BACKEND` is not set (tries PVC, disables if not writable).
Both backends share identical semantics — all handlers, attachment
CRUD, multimodal assembly, and orphan cleanup work regardless of
backend.
- **S3 configuration.** `S3_ENDPOINT`, `S3_BUCKET`, `S3_ACCESS_KEY`,
`S3_SECRET_KEY`, `S3_REGION`, `S3_PREFIX`, `S3_FORCE_PATH_STYLE` env
vars. Endpoint auto-detects SSL from scheme. Path-style URLs default
on (required for MinIO/Ceph). Optional key prefix for shared buckets.
CI pipeline syncs S3 secrets to K8s when `STORAGE_BACKEND=s3`.
- **Text extraction pipeline.** PDF, DOCX, XLSX, PPTX, ODT, RTF text
extraction via filesystem-based queue. Inline and sidecar modes.
Crash recovery for items stuck in processing state.
- **Admin storage panel.** Backend health, file count, total size,
orphan detection and cleanup. Shows PVC path or S3 endpoint/bucket
depending on active backend. Extraction queue status.
- **Vault CLI commands.** `switchboard vault rekey` re-encrypts all
provider API keys when rotating the encryption key.
`switchboard vault status` shows encryption health. Admin UI
encryption status indicator in Settings tab.
- **Per-chat model persistence.** Server-side `channels.settings`
JSONB field stores `last_selector_id`. Roams across devices with
localStorage write-through cache as fallback.
## [0.11.0] — 2026-02-25
### Added