Changeset 0.37.17 (#229)
Co-authored-by: gobha <jasafpro@gmail.com> Co-committed-by: gobha <jasafpro@gmail.com>
This commit is contained in:
82
CHANGELOG.md
82
CHANGELOG.md
@@ -1,5 +1,87 @@
|
||||
# Changelog
|
||||
|
||||
## [0.37.17.0] — 2026-03-24
|
||||
|
||||
### Summary
|
||||
|
||||
Workspaces — workspace-first file storage for projects. Project files route
|
||||
through the workspace FS subsystem (auto-created on first upload) instead of
|
||||
the flat objStore path. Tree browser UI with nested folders, archive support
|
||||
(zip/tar.gz upload and download), file actions (download, delete, mkdir), and
|
||||
upload improvements (progress counter, archive detection, quota errors).
|
||||
|
||||
Architecture decision: `files` table + objStore = ephemeral message attachments;
|
||||
Workspace FS = persistent file collections (tree, dirs, archive, quota, indexing).
|
||||
"Save to workspace" bridge from chat files deferred to v0.37.18.
|
||||
|
||||
Also: extension track continuation scheduled as v0.39.x in roadmap, two new
|
||||
design docs committed (multi-file Starlark, extension connections & libraries).
|
||||
|
||||
### Added
|
||||
|
||||
- **Workspace-backed project files:** `ensureProjectWorkspace()` auto-creates a
|
||||
workspace (`owner_type=project`) on first file upload, sets `project.workspace_id`.
|
||||
All project file operations route through workspace FS instead of objStore.
|
||||
(`server/handlers/files.go`)
|
||||
- **File download:** `GET /projects/:id/files/download?path=` streams raw file
|
||||
content with `Content-Disposition: attachment`. (`server/handlers/files.go`)
|
||||
- **File delete:** `DELETE /projects/:id/files?path=` with optional `recursive`
|
||||
param for directories. (`server/handlers/files.go`)
|
||||
- **Create directory:** `POST /projects/:id/files/mkdir` accepts path via JSON
|
||||
body or query param. (`server/handlers/files.go`)
|
||||
- **Archive upload:** `POST /projects/:id/archive/upload` extracts .zip/.tar.gz
|
||||
into project workspace. Returns `files_extracted` count.
|
||||
(`server/handlers/files.go`)
|
||||
- **Archive download:** `GET /projects/:id/archive/download?format=zip` bundles
|
||||
all project files into a zip/tar.gz. (`server/handlers/files.go`)
|
||||
- **File browser UI:** Tree browser with nested folders (expand/collapse),
|
||||
type icons, size display, on-hover delete button. Replaces the flat file list
|
||||
from v0.37.16. (`src/js/sw/surfaces/projects/detail.js`)
|
||||
- **File action bar:** "New folder" and "Download all" buttons above the file
|
||||
tree when files exist. (`detail.js`)
|
||||
- **Upload improvements:** Progress counter ("Uploading 3 of 7…"), archive
|
||||
detection (`.zip`/`.tar.gz` → confirm extract dialog), specific error
|
||||
messages (413 = quota exceeded). (`detail.js`)
|
||||
- **SDK methods:** `deleteFile`, `mkdir`, `uploadArchive` added to
|
||||
`sw.api.projects` domain. `files()` and `uploadFile()` updated to support
|
||||
path param. (`src/js/sw/sdk/api-domains.js`)
|
||||
- **File browser CSS:** 120 lines — file-row, file-chevron, file-icon,
|
||||
file-name, file-meta, file-delete, dropzone, file-actions-bar.
|
||||
(`src/css/sw-projects-surface.css`)
|
||||
- **DESIGN-EXT-CONNECTIONS-LIBRARIES.md:** Extension connections (scoped
|
||||
credentials) and library packages (shared code + data via `lib.load()`).
|
||||
Three implementation phases. (`docs/`)
|
||||
- **Extension track v0.39.x:** Roadmap updated — v0.39.0 multi-file Starlark,
|
||||
v0.39.1 connections, v0.39.2 libraries, v0.39.3 full composition.
|
||||
(`docs/ROADMAP.md`)
|
||||
|
||||
### Changed
|
||||
|
||||
- **Project file list response:** Now returns `WorkspaceFile` objects (with
|
||||
`path`, `is_directory`, `content_type`, `size_bytes`) instead of `File` model
|
||||
objects. `GET /projects/:id/files` supports `?path=` and `?recursive=` params.
|
||||
- **FileHandler constructor:** Gains `SetWorkspaceFS()` method for workspace
|
||||
injection. Project file routes use dedicated `projFileH` instance with wfs
|
||||
attached. (`server/main.go`)
|
||||
- **ICD updated:** `docs/ICD/projects.md` — expanded Project Files section with
|
||||
all 7 endpoints, request/response schemas, error codes.
|
||||
- **OpenAPI updated:** `server/static/openapi.yaml` — 5 new paths for project
|
||||
file operations (download, delete, mkdir, archive upload/download).
|
||||
|
||||
### Known Limitations
|
||||
|
||||
- **User default workspace:** Not yet implemented. Personal "My Files" deferred
|
||||
to v0.37.18.
|
||||
- **Tool output persistence:** `origin=tool_output` auto-save for LLM-generated
|
||||
artifacts deferred to v0.37.18.
|
||||
- **Save to workspace bridge:** "Save" action to promote ephemeral chat files
|
||||
to workspace storage deferred to v0.37.18.
|
||||
- **Workspace unique constraint:** Race guard on concurrent workspace creation
|
||||
relies on DB error handling (re-read on duplicate key). Migration 014 for
|
||||
explicit `UNIQUE(owner_type, owner_id)` not yet added.
|
||||
|
||||
---
|
||||
|
||||
## [0.37.16.0] — 2026-03-24
|
||||
|
||||
### Summary
|
||||
|
||||
Reference in New Issue
Block a user