SPRINT - 4 - PR#77
Conversation
- Introduced ICanvasCreationService and ICanvasProviderResolver for improved canvas management. - Refactored CanvasesController to utilize the new services for canvas creation and handling. - Updated CanvasGraphService to resolve providers using the new resolver. - Modified frontend routing to streamline user navigation and removed unused pages. - Enhanced CSS for better layout and styling consistency across components. - Removed obsolete tests and added new tests for the updated services and controller logic.
…nt rendering - Added CanvasMarkdown component to render markdown content in CanvasGraphView and PublicCanvasGraphPreview. - Updated CSS styles for markdown elements to improve layout and visual consistency. - Adjusted content handling in CanvasGraphView to normalize and format markdown text.
- Added new `canvas_nodes` table to support hierarchical node structures with attributes like `generation_mode`, `summary`, and `category`. - Updated `CanvasesController` and related services to handle `generationMode` during canvas creation and node expansion. - Enhanced `CanvasNode` and `CanvasNodeCreateInput` models to include new properties for better content management. - Refactored `CanvasGraphService` to utilize the new generation modes for node expansion logic. - Added tests to ensure correct handling of generation modes in canvas creation and node expansion processes.
…essages Add selection-based branching that lets users either move or copy chosen node messages into a new branch without losing branch context. This also fixes immediate UI sync so moved messages disappear from the source node without refresh. Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
…poser clear Made-with: Cursor
…reation-new Feature/scrum 177 inline branch creation new
…tion, and callbacks
…n checkboxes in IdeaNode
…ion and API integration and PDF design revamp
feat [SCRUM-28]: implement PDF export with node selection and AI summary support
…le support, improved error handling, and context usage tracking
…erage Align automated QA suites with the current chat-session implementation by expanding API/UI E2E coverage, updating helper foundations, and consolidating regression reporting for Sprint 4 sign-off. Made-with: Cursor
Add a dedicated slow headed Playwright project and script so browser preview works on versions without CLI slow-mo, and extend Sprint 4 UI flows to visibly perform branching and note creation with stable interactions. Made-with: Cursor
…A-Integration-E2E-and-Regression-Testing Scrum 185 us 802 sprint 4 final qa integration e2 e and regression testing
…ocker-Image-Builds-for-Production Ci [SCRUM-180] us 705 multi stage docker image builds for production
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d124c6d85e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| Model = message.Model, | ||
| CreatedAt = message.CreatedAt, | ||
| CanBranch = canBranch |
There was a problem hiding this comment.
Populate UpdatedAt in chat message API mapping
ChatCanvasMessageResponse defines an UpdatedAt field, but MapMessage never assigns it, so serialized responses send the default 0001-01-01 timestamp. This breaks consumers that rely on message edit times (the frontend ChatCanvasMessage type expects updatedAt) and makes edited-message metadata unreliable. Set UpdatedAt = message.UpdatedAt when building the response object.
Useful? React with 👍 / 👎.
| return StatusCode(StatusCodes.Status401Unauthorized, new | ||
| { | ||
| message = "Sign in to continue with AI actions.", | ||
| code = "auth_required" | ||
| }); |
There was a problem hiding this comment.
Avoid 401 for guest preview cooldown responses
This branch intentionally returns 401 for repeat guest previews, but the global frontend interceptor treats all non-auth 401s as expired-session events and redirects anonymous users to /login when no refresh token exists (frontend/src/services/api.ts). As a result, guests hitting this cooldown path won’t receive the intended auth_required payload and get force-redirected instead. Returning a non-auth status (e.g. 403/429) or exempting this endpoint from the 401 refresh flow avoids breaking the guest UX.
Useful? React with 👍 / 👎.
Summary
This pull request introduces a major update to the Coliee platform, focusing on canvas architecture improvements, chat branching capabilities, PDF export functionality, and CI/CD enhancements. The update refactors backend services for better scalability, adds generation modes for canvas nodes, introduces sub-node context snapshots and branching flows, and significantly improves the frontend experience with draggable nodes, export workflows, and chat UX improvements. Additionally, it expands LLM support with LM Studio integration and strengthens testing and deployment pipelines.
SCRUM Ticket: Multiple (SCRUM-30, SCRUM-28, SCRUM-177, SCRUM-185, SCRUM-180)
Type of Change
feat— New featurefix— Bug fixrefactor— Code restructuring (no behaviour change)ci— CI/CD changeschore— Maintenance (deps, config, tooling)docs— Documentation updatetest— Adding or updating testsChanges Made
ICanvasCreationServiceand provider resolvercanvas_nodesstructure with generation modes (compact,rich)CanvasMarkdownhtml2pdfwithjsPDF+html2canvasand optimized build configsHow to Test