Content
View differences
Updated by Jonas Jabari 26 days ago
<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/923085/content">
> **Status: placeholder — scope to be refined.** Created now so the epic shows the full path to
> user value; detailed UX (diff presentation, accept flow) needs a design round. The rich
> streaming "AI pane" from the prototype is explicitly **on hold** (PO decision).
As a project member editing a work package description
I want to apply text-transform actions directly in the editor
so that I can structure and polish my text without leaving OpenProject.
## Scope (v1 outline)
* A dropdown in the CKEditor toolbar of the work package description editor, listing the
<br>
actions from the list endpoint (flat list, ordered; fetched with the WP/type context).
* The dropdown is hidden entirely when the list is empty (assistant disabled, no LLM, no
<br>
actions for this type).
* Selecting an action sends the current (possibly unsaved) editor content to the execute
<br>
endpoint; a loading state indicates the running request and allows cancelling.
* The response is shown as a **preview with a diff view** against the current text
<br>
(added/removed highlighting); the user can toggle between diff and clean result.
* **Accept** replaces the editor content with the result (undo-able via the editor's normal
<br>
undo stack); **Reject** discards it. Persisting happens only via the regular save flow.
* Errors are shown non-destructively (the user's text is never touched on error).
## Technical notes
* Applies to the work package description editor first; other rich-text fields (comments,
<br>
wiki) are conscious non-goals for v1.
* The prototype (browser extension) contains reference implementations for the diff rendering
<br>
(word-level LCS in a read-only editor preview) — reusable as inspiration, not as code.
* No MCP, no streaming: plain HTTP against the transform API.
## Out of scope
* AI pane / streaming preview (on hold)
* Selection-based transforms
* Comments, wiki pages, meeting notes and other rich-text fields
> **Status: placeholder — scope to be refined.** Created now so the epic shows the full path to
> user value; detailed UX (diff presentation, accept flow) needs a design round. The rich
> streaming "AI pane" from the prototype is explicitly **on hold** (PO decision).
As a project member editing a work package description
I want to apply text-transform actions directly in the editor
so that I can structure and polish my text without leaving OpenProject.
## Scope (v1 outline)
* A dropdown in the CKEditor toolbar of the work package description editor, listing the
<br>
* The dropdown is hidden entirely when the list is empty (assistant disabled, no LLM, no
<br>
* Selecting an action sends the current (possibly unsaved) editor content to the execute
<br>
* The response is shown as a **preview with a diff view** against the current text
<br>
* **Accept** replaces the editor content with the result (undo-able via the editor's normal
<br>
* Errors are shown non-destructively (the user's text is never touched on error).
## Technical notes
* Applies to the work package description editor first; other rich-text fields (comments,
<br>
* The prototype (browser extension) contains reference implementations for the diff rendering
<br>
* No MCP, no streaming: plain HTTP against the transform API.
## Out of scope
* AI pane / streaming preview (on hold)
* Selection-based transforms
* Comments, wiki pages, meeting notes and other rich-text fields