feat: drafts workspace implementation#72
Merged
nazarli-shabnam merged 9 commits intomainfrom Mar 26, 2026
Merged
Conversation
…ty state with a link to {slug}/projects
There was a problem hiding this comment.
Pull request overview
Adds workspace-level draft work items so users can create, publish, delete, and paginate drafts across all projects in a workspace, and introduces a new TipTap-based editor used by newly added page create/detail screens.
Changes:
- Backend: add
GET /api/workspaces/:slug/draft-issues/and plumb workspace draft listing through handler/service/store. - Backend + UI: add
is_draftsupport to issue create/update flows (API + multiple create entrypoints). - UI: implement a richer Drafts page and add a new
PageDescriptionEditorplus new page create/detail routes/screens.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| ui/src/services/issueService.ts | Adds listWorkspaceDrafts and updates issue update payload typing for is_draft. |
| ui/src/pages/ViewDetailPage.tsx | Includes is_draft in create payload when creating from a view. |
| ui/src/pages/ModuleDetailPage.tsx | Includes is_draft in create payload when creating from a module. |
| ui/src/pages/IssueListPage.tsx | Includes is_draft in create payload when creating from the list page. |
| ui/src/pages/IssueDetailPage.tsx | Includes is_draft when creating sub-issues. |
| ui/src/pages/DraftsPage.tsx | Implements workspace drafts listing UI with pagination + publish/delete actions. |
| ui/src/components/CreateWorkItemModal.tsx | Adds draftOnly mode and forwards isDraft to onSave. |
| ui/src/api/types.ts | Adds is_draft to CreateIssueRequest. |
| ui/src/components/PageDescriptionEditor.tsx | New TipTap editor component for page descriptions. |
| ui/src/pages/PageDetailPage.tsx | New page detail UI using PageDescriptionEditor and pageService methods. |
| ui/src/pages/NewPagePage.tsx | New page creation UI using PageDescriptionEditor and pageService methods. |
| api/internal/router/router.go | Registers GET /workspaces/:slug/draft-issues/. |
| api/internal/handler/issue.go | Adds ListWorkspaceDrafts endpoint and wires is_draft into create/update handlers. |
| api/internal/service/issue.go | Adds ListDraftsForWorkspace and wires isDraft through create/update service methods. |
| api/internal/store/issue.go | Adds DB query to list drafts by workspace id with pagination. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 18 out of 18 changed files in this pull request and generated 8 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

closes #56
This pull request introduces a new "draft work item" (draft issue) feature across the backend and frontend, allowing users to create, update, and list draft issues at the workspace level. It also adds a rich text editor for page descriptions and improves type coverage and flexibility in the UI. The most important changes are grouped below.
Draft Issue (Work Item) Feature:
Added support for creating and updating issues as drafts by introducing an
is_draftfield in both backend (Issuemodel, API, and service/store layers) and frontend request types. This enables users to save work items as drafts before publishing. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15]Implemented a new API endpoint (
GET /api/workspaces/:slug/draft-issues/) to list all draft issues across projects in a workspace. The backend includes access checks and aggregates assignees, labels, cycles, and modules for each draft issue. [1] [2] [3] [4]Frontend UI Enhancements:
Updated the
CreateWorkItemModalcomponent to support a "draft only" mode, which adjusts the UI and request payload to create draft work items, and changes the modal title accordingly. [1] [2] [3] [4] [5]Improved the
Dropdowncomponent to accept adisabledprop, allowing dropdown triggers to be programmatically disabled in the UI. [1] [2] [3]Rich Text Editor for Pages:
PageDescriptionEditorcomponent using Tiptap, providing a rich text editor for page descriptions with formatting options and keyboard shortcut support.API Type Improvements:
CreatePageRequestandUpdatePageRequesttypes to the API type definitions for improved type safety and clarity in page-related API calls.These changes collectively enable draft work item workflows, improve the UI/UX for creating and editing content, and enhance type safety throughout the codebase.