Files
OpenNoodl/dev-docs/tasks/phase-3-editor-ux-overhaul/TASK-013-integration-bugfixes/BUG-3-comment-ux-overhaul.md
Richard Osborne ddcb9cd02e feat: Phase 5 BYOB foundation + Phase 3 GitHub integration
Phase 5 - BYOB Backend (TASK-007A/B):
- LocalSQL Adapter with full CloudStore API compatibility
- QueryBuilder translates Parse-style queries to SQL
- SchemaManager with PostgreSQL/Supabase export
- LocalBackendServer with REST endpoints
- BackendManager with IPC handlers for Electron
- In-memory fallback when better-sqlite3 unavailable

Phase 3 - GitHub Panel (GIT-004):
- Issues tab with list/detail views
- Pull Requests tab with list/detail views
- GitHub API client with OAuth support
- Repository info hook integration

Phase 3 - Editor UX Bugfixes (TASK-013):
- Legacy runtime detection banners
- Read-only enforcement for legacy projects
- Code editor modal close improvements
- Property panel stuck state fix
- Blockly node deletion and UI polish

Phase 11 - Cloud Functions Planning:
- Architecture documentation for workflow automation
- Execution history storage schema design
- Canvas overlay concept for debugging

Docs: Updated LEARNINGS.md and COMMON-ISSUES.md
2026-01-15 17:37:15 +01:00

255 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BUG-3: Comment System UX Overhaul
**Priority:** P1 - Significant UX annoyance
**Status:** 🎨 Design phase
**Introduced in:** Existing feature, but UX needs improvement
---
## Problems
### 1. Inconsistent Positioning
Function/Expression/Script nodes have comment icon on the **LEFT** side, while other nodes have it on the **RIGHT** side.
### 2. Too Easy to Click Accidentally
When clicking a node to view its properties, it's very easy to accidentally click the comment icon instead, opening the comment modal unexpectedly.
---
## Agreed UX Solution
Based on user feedback, the new design will:
1. **Remove comment button from canvas node entirely**
2. **Show small indicator icon on node ONLY when comment exists**
3. **Add comment button to property panel header**
4. **Show comment preview on hover over indicator icon**
---
## New UX Flow
### When Node Has NO Comment
**Canvas:**
- No comment indicator visible on node
- Clean, minimal appearance
**Property Panel:**
- Comment button in header bar (e.g., next to other actions)
- Clicking opens modal to add comment
### When Node HAS Comment
**Canvas:**
- Small indicator icon visible (e.g., 💬 or note icon)
- Icon positioned consistently (top-right corner)
- Icon does NOT intercept clicks (proper z-index/hit area)
**On Hover:**
- Tooltip/popover appears showing comment preview
- Preview shows first 2-3 lines of comment
- Clear visual indication it's a preview
**Property Panel:**
- Comment button shows "Edit Comment" or similar
- Clicking opens modal with existing comment
---
## Visual Design
### Canvas Node With Comment
```
┌────────────────────────┐
│ 💬 │ ← Small indicator (top-right)
│ MyFunctionNode │
│ │
│ ○ input output ○ │
└────────────────────────┘
```
### Hover Preview
```
┌────────────────────────┐
│ 💬 │
│ MyFunctionNode ┌────┴───────────────────────┐
│ │ Comment Preview │
│ ○ input output│ This function handles... │
└───────────────────│ the user authentication │
│ [...more] │
└────────────────────────────┘
```
### Property Panel Header
```
┌────────────────────────────────┐
│ MyFunctionNode [💬] [⋮] [×] │ ← Comment button in header
├────────────────────────────────┤
│ Properties... │
│ │
```
---
## Implementation Plan
### Phase 1: Property Panel Comment Button
1. Add comment button to property panel header
2. Wire up to existing comment modal
3. Show different text based on comment existence:
- "Add Comment" if no comment
- "Edit Comment" if has comment
### Phase 2: Canvas Indicator (Conditional)
1. Modify node rendering to show indicator ONLY when `node.comment` exists
2. Position indicator consistently (top-right, 6px from edge)
3. Make indicator small (10px × 10px)
4. Ensure indicator doesn't interfere with node selection clicks
### Phase 3: Hover Preview
1. Add hover detection on indicator icon
2. Show popover with comment preview
3. Style popover to look like tooltip
4. Position intelligently (avoid screen edges)
### Phase 4: Remove Old Canvas Button
1. Remove comment button from all node types
2. Clean up related CSS
3. Verify no regressions
---
## Files to Modify
### Property Panel Header
**Create new component:**
- `packages/noodl-editor/src/editor/src/views/panels/propertyeditor/PropertyPanelHeader.tsx`
Or modify existing if header component already exists.
### Node Rendering
**Update:**
- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorNode.ts`
- Remove comment button rendering
- Add conditional comment indicator
- Fix positioning inconsistency
### Comment Indicator Component
**Create:**
- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/CommentIndicator.ts`
- Render small icon
- Handle hover events
- Show preview popover
---
## Detailed Specs
### Comment Indicator Icon
- **Size:** 10px × 10px
- **Position:** 6px from top-right corner of node
- **Icon:** 💬 or SVG note icon
- **Color:** `--theme-color-fg-default-shy` (subtle)
- **Color (hover):** `--theme-color-fg-highlight` (emphasized)
- **Z-index:** Should not block node selection clicks
### Comment Preview Popover
- **Max width:** 300px
- **Max height:** 150px
- **Padding:** 12px
- **Background:** `--theme-color-bg-2`
- **Border:** 1px solid `--theme-color-border-default`
- **Shadow:** `0 4px 12px rgba(0,0,0,0.15)`
- **Text:** First 200 characters of comment
- **Overflow:** Ellipsis ("...") if comment is longer
- **Positioning:** Smart (avoid screen edges, prefer top-right of indicator)
### Property Panel Comment Button
- **Position:** Header bar, near other action buttons
- **Icon:** 💬 or comment icon
- **Tooltip:** "Add Comment" or "Edit Comment"
- **Style:** Consistent with other header buttons
---
## Edge Cases
- **Long comments:** Preview shows first 200 chars with "..."
- **Multiline comments:** Preview preserves line breaks (max 3-4 lines)
- **Empty comments:** Treated as no comment (no indicator shown)
- **Node selection:** Indicator doesn't interfere with clicking node
- **Multiple nodes:** Each shows own indicator/preview independently
- **Read-only mode:** Indicator shown, but button disabled or hidden
---
## Testing Plan
### Canvas Indicator
- [ ] Indicator ONLY shows when comment exists
- [ ] Indicator positioned consistently on all node types
- [ ] Indicator doesn't interfere with node selection
- [ ] Indicator small and subtle
### Hover Preview
- [ ] Preview appears on hover over indicator
- [ ] Preview shows first ~200 chars of comment
- [ ] Preview positioned intelligently
- [ ] Preview disappears when hover ends
- [ ] Preview doesn't block other UI interactions
### Property Panel Button
- [ ] Button visible in header for all nodes
- [ ] Button opens existing comment modal
- [ ] Modal functions identically to before
- [ ] Button text changes based on comment existence
### Removed Old Button
- [ ] No comment button on canvas nodes
- [ ] No positioning inconsistencies
- [ ] No leftover CSS or dead code
---
## Success Criteria
- [ ] Comment button only in property panel (no accidental clicks)
- [ ] Canvas indicator only when comment exists
- [ ] Indicator positioned consistently across all node types
- [ ] Hover preview is helpful and doesn't obstruct workflow
- [ ] Can add/edit/remove comments same as before
- [ ] No confusion about how to access comments
- [ ] Overall cleaner, more intentional UX
---
_Last Updated: January 13, 2026_