feat: markdown toolbar and AI-assisted note proofreading - #1
Merged
Conversation
…te modal - Unify the task panel and kanban modal on one markdown editor: drop the editorKind/host.ui.RichTextEditor branch (NotesEditor now always renders a scrollable markdown <textarea>, sidestepping the modal's ToastProvider gap for both surfaces). - Add a formatting toolbar (bold, italic, heading, bullet/numbered list, link, inline code, code block) backed by pure, unit-tested markdown transform helpers (applyBold/Italic/Heading/BulletList/NumberedList/ Link/InlineCode/CodeBlock). - Add an "Enhance with AI" button (both surfaces) that POSTs the note's markdown to a new `enhance` plugin webhook, previews the proofread result, and only replaces the note on Accept (Discard leaves it untouched) — enhancePreviewReducer models idle/loading/preview/error. - server/plugin.go: implement HandleWebhook for the "enhance" key via Host.InvokeUtilityAgent, mapping gRPC FailedPrecondition (no utility agent configured) to a distinguishable 412 response. - manifest.yaml: declare capabilities.agent_invoke, the enhance webhook, and a config_schema.utility_agent picker; bump version to 0.2.0 (and Makefile VERSION in lockstep). - Fix the note modal to a constrained height (was min-height, which let it grow unbounded) with an internally scrolling (overflow-y: auto) textarea. - README: document the toolbar, AI enhance feature, and the privacy trade-off of sending note content to the configured utility agent. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Owner
Author
|
@claude review |
go mod tidy moved google.golang.org/grpc from an indirect to a direct require, matching the CI "Check module files are tidy" step. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
Overview
Enhances the Note Taking plugin's note editor with markdown formatting, a formatting toolbar, AI-assisted proofreading, and a fixed-size scrollable modal.
Changes
<textarea>-only note editing surface with a unified markdown-capable editor (shared by both the task panel and kanban modal) backed by aMarkdownToolbarcomponent supporting bold, italic, headings, bullet/numbered lists, links, inline code, and code blocks.enhancewebhook, following the same request/loading/error UX pattern as the existing "enhance prompt" feature; results are shown via a preview/accept/discard flow (enhancePreviewReducer).HandleWebhooksupport for theenhancekey inserver/plugin.go, invoking the configured utility agent to proofread note content, with proper HTTP status mapping (400 bad input, 412 not configured, 502 other errors, 503 missing host).manifest.yamlto declarecapabilities.agent_invoke, theenhancewebhook, and theutility_agentconfig schema; bumped plugin version to 0.2.0 (Makefile updated to match).overflow: hidden) withoverflow-y: autoon the note content textarea, so the modal no longer grows/overflows as content is typed.a1c18cd) addressed toolbar list-formatting behavior on blank notes.README.mdto document the new features and the privacy trade-off of sending note content to an AI utility agent.Motivation
The existing notes editor only supported plain text, requiring manual markdown syntax knowledge with no formatting affordances, and had no way to proofread/improve note content with AI — unlike the existing "enhance prompt" feature elsewhere in the app. The modal also grew unbounded and overflowed the screen as users typed.
Testing
go test ./server/...— all tests pass (19/19), including new webhook and manifest tests.node --test "ui/**/*.test.mjs"— all tests pass (49/49), including new transform/toolbar/AI-client/reducer tests.gofmt -l .andgo vet ./server/...— clean.make package-host— verified the 0.2.0 plugin tarball builds and packages correctly.make testrun; no unresolved findings, worktree clean.Breaking Changes
None. The stored note format remains markdown-compatible plain text; existing notes continue to render and edit correctly in the new editor.
Related Issues
N/A