Hard cutover of the HTTP surface: collapse the three legacy spellings
(/searchspaces, /search-spaces, /search-space/{id}) onto canonical
/workspaces/{workspace_id}/..., rename the gateway field-setter sub-actions to
singular /workspace, rename search_spaces_routes.py -> workspaces_routes.py and the
search_spaces_router -> workspaces_router include, and flip search_space_id ->
workspace_id in bodies/params. No alias routers: the old URLs now 404 by design.
Full app constructs with zero legacy path spellings.
- Replaced direct embedding calls with a utility function across various components to streamline embedding logic.
- Added enable_summary flag to several models and routes to control summary generation behavior.
- Revised report routes to clarify functionality for read, export, and delete operations.
- Enhanced the export process to run all blocking I/O in a thread executor, improving async performance.
- Updated error handling in the report panel to provide clearer feedback on loading failures.
- Updated Dockerfiles to include Pandoc and WeasyPrint runtime libraries for report generation.
- Enhanced report retrieval functionality to include version siblings in the response.
- Modified report export process to utilize WeasyPrint for PDF generation, improving output quality.
- Added a new tool for generating structured Markdown reports based on user input.
- Implemented routes for creating, reading, exporting, and deleting reports.
- Integrated report generation into the chat flow, allowing users to generate reports inline.
- Updated schemas to support report data structures and responses.
- Enhanced frontend components to handle report generation and display results.