Skip to content

SPRINT - 4 - PR#77

Merged
Dinuka-Nonis merged 41 commits into
mainfrom
develop
Apr 22, 2026
Merged

SPRINT - 4 - PR#77
Dinuka-Nonis merged 41 commits into
mainfrom
develop

Conversation

@ChaturnaK

Copy link
Copy Markdown
Contributor

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 feature
  • fix — Bug fix
  • refactor — Code restructuring (no behaviour change)
  • ci — CI/CD changes
  • chore — Maintenance (deps, config, tooling)
  • docs — Documentation update
  • test — Adding or updating tests

Changes Made

  • Refactored canvas creation using ICanvasCreationService and provider resolver
  • Added canvas_nodes structure with generation modes (compact, rich)
  • Implemented sub-node creation with context snapshot inheritance
  • Enabled inline branching (move/copy messages into new branches)
  • Added draggable nodes with persistent layout positions
  • Improved chat UX (optimistic updates, composer reset, branch focus)
  • Introduced markdown rendering via CanvasMarkdown
  • Implemented PDF export system with node selection and AI summaries
  • Replaced html2pdf with jsPDF + html2canvas and optimized build configs
  • Added node-level menus, selection mode, and cross-node export workflows
  • Integrated LM Studio provider support for local LLM usage
  • Improved Docker setup with environment-based configuration and error handling
  • Enhanced CI/CD pipeline with multi-stage Docker builds and validation
  • Expanded Playwright E2E and regression testing coverage
  • Cleaned obsolete files and improved frontend routing/navigation

How to Test

  1. Run the system:
    docker compose up --build

ChaturnaK and others added 30 commits March 22, 2026 16:42
- 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
…reation-new

Feature/scrum 177 inline branch creation new
Heshan1478 and others added 11 commits April 18, 2026 21:20
…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
@ChaturnaK
ChaturnaK requested a review from Dinuka-Nonis April 22, 2026 09:38
@ChaturnaK ChaturnaK self-assigned this Apr 22, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment on lines +2064 to +2066
Model = message.Model,
CreatedAt = message.CreatedAt,
CanBranch = canBranch

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

Comment on lines +33 to +37
return StatusCode(StatusCodes.Status401Unauthorized, new
{
message = "Sign in to continue with AI actions.",
code = "auth_required"
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

@Dinuka-Nonis
Dinuka-Nonis merged commit 4fe1b87 into main Apr 22, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants