diff --git a/dev-docs/reference/LEARNINGS.md b/dev-docs/reference/LEARNINGS.md
index 242a406..bbca684 100644
--- a/dev-docs/reference/LEARNINGS.md
+++ b/dev-docs/reference/LEARNINGS.md
@@ -4,6 +4,130 @@ This document captures important discoveries and gotchas encountered during Open
---
+## π« Port Hover Compatibility Highlighting Failed Attempt (Jan 1, 2026)
+
+### The Invisible Compatibility: Why Port Hover Preview Didn't Work
+
+**Context**: Phase 3 TASK-000I-C3 - Attempted to add visual feedback showing compatible/incompatible ports when hovering over any port. After 6+ debugging iterations spanning multiple attempts, the feature was abandoned.
+
+**The Problem**: Despite comprehensive implementation with proper type detection, bidirectional logic, cache optimization, and visual effects, console logs consistently showed "incompatible" for most ports that should have been compatible.
+
+**What Was Implemented**:
+
+- Port hover detection with 8px hit radius
+- Compatibility cache system for performance
+- Type coercion rules (numberβstring, booleanβstring, colorβstring)
+- Bidirectional vs unidirectional port logic (data vs signals)
+- Visual feedback (glow for compatible, dim for incompatible)
+- Proper port definition lookup (not connection-based)
+
+**Debugging Attempts**:
+
+1. Fixed backwards compatibility logic
+2. Fixed cache key mismatches
+3. Increased glow visibility (shadowBlur 50)
+4. Added bidirectional logic for data ports vs unidirectional for signals
+5. Fixed type detection to use `model.getPorts()` instead of connections
+6. Modified cache rebuilding to support bidirectional data ports
+
+**Why It Failed** (Suspected Root Causes):
+
+1. **Port Type System Complexity**: Noodl's type system has more nuances than documented
+
+ - Type coercion rules may be more complex than numberβstring, etc.
+ - Some types may have special compatibility that isn't exposed in port definitions
+ - Dynamic type resolution at connection time may differ from static analysis
+
+2. **Dynamic Port Generation**: Many nodes generate ports dynamically based on configuration
+
+ - Port definitions from `model.getPorts()` may not reflect all runtime ports
+ - StringList-configured ports (headers, query params) create dynamic inputs
+ - These ports may not have proper type metadata until after connection
+
+3. **Port Direction Ambiguity**: Input/output distinction may be insufficient
+
+ - Some ports accept data from both directions (middle/bidirectional ports)
+ - Connection validation logic in the engine may use different rules than exposed in the model
+ - Legacy nodes may have special-case connection rules
+
+4. **Hidden Compatibility Layer**: The actual connection validation may happen elsewhere
+ - NodeLibrary or ConnectionModel may have additional validation logic
+ - Engine-level type checking may override model-level type information
+ - Some compatibility may be determined by node behavior, not type declarations
+
+**Critical Learnings**:
+
+**β Don't assume port type compatibility is simple**:
+
+```typescript
+// β WRONG - Oversimplified compatibility
+if (sourceType === targetType) return true;
+if (sourceType === 'any' || targetType === 'any') return true;
+// Missing: Engine-level rules, dynamic types, node-specific compatibility
+```
+
+**β Port compatibility is more complex than it appears**:
+
+- Port definitions don't tell the whole story
+- Connection validation happens in multiple places
+- Type coercion has engine-level rules not exposed in metadata
+- Some compatibility is behavioral, not type-based
+
+**What Would Be Needed for This Feature**:
+
+1. **Access to Engine Validation**: Hook into the actual connection validation logic
+
+ - Use the same code path that validates connections when dragging
+ - Don't reimplement compatibility rules - use existing validator
+
+2. **Runtime Type Resolution**: Get actual types at connection time, not from definitions
+
+ - Some nodes resolve types dynamically based on connected nodes
+ - Type information may flow through the graph
+
+3. **Node-Specific Rules**: Account for special-case compatibility
+
+ - Some nodes accept any connection and do runtime type conversion
+ - Legacy nodes may have grandfathered compatibility rules
+
+4. **Testing Infrastructure**: Comprehensive test suite for all node types
+ - Would need to test every node's port compatibility
+ - Edge cases like Collection nodes, Router adapters, etc.
+
+**Alternative Approaches** (For Future Attempts):
+
+1. **Hook Existing Validation**: Instead of reimplementing, call the existing connection validator
+
+ ```typescript
+ // Pseudocode - use actual engine validation
+ const canConnect = connectionModel.validateConnection(sourcePort, targetPort);
+ ```
+
+2. **Show Type Names Only**: Simpler feature - just show port types on hover
+
+ - No compatibility checking
+ - Let users learn type names and infer compatibility themselves
+
+3. **Connection Hints After Drag**: Show compatibility when actively dragging a connection
+ - Only check compatibility for the connection being created
+ - Use the engine's validation since we're about to create the connection anyway
+
+**Time Lost**: ~3-4 hours across multiple debugging sessions
+
+**Files Cleaned Up** (All code removed):
+
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor.ts`
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorNode.ts`
+
+**Documentation**:
+
+- Failure documented in: `dev-docs/tasks/phase-3-editor-ux-overhaul/TASK-000-styles-overhaul/TASK-000I-node-graph-visual-improvements/CHANGELOG.md`
+- Task marked as: β REMOVED (FAILED)
+
+**Keywords**: port compatibility, hover preview, type checking, connection validation, node graph, canvas, visual feedback, failed feature, type system, dynamic ports
+
+---
+
## π₯ CRITICAL: Electron Blocks window.prompt() and window.confirm() (Dec 2025)
### The Silent Dialog: Native Dialogs Don't Work in Electron
diff --git a/dev-docs/tasks/phase-3-editor-ux-overhaul/TASK-000-styles-overhaul/TASK-000I-node-graph-visual-improvements/CHANGELOG.md b/dev-docs/tasks/phase-3-editor-ux-overhaul/TASK-000-styles-overhaul/TASK-000I-node-graph-visual-improvements/CHANGELOG.md
index 662dbe9..695b471 100644
--- a/dev-docs/tasks/phase-3-editor-ux-overhaul/TASK-000-styles-overhaul/TASK-000I-node-graph-visual-improvements/CHANGELOG.md
+++ b/dev-docs/tasks/phase-3-editor-ux-overhaul/TASK-000-styles-overhaul/TASK-000I-node-graph-visual-improvements/CHANGELOG.md
@@ -1,158 +1,547 @@
-# TASK-000I Changelog
+# TASK-000I Node Graph Visual Improvements - Changelog
-## Overview
+## Sub-Task A: Visual Polish β COMPLETED
-This changelog tracks the implementation of Node Graph Visual Improvements, covering visual polish, node comments, and port organization features.
+### 2026-01-01 - All Visual Polish Enhancements Complete
-### Implementation Sessions
+**Summary**: Sub-Task A completed with rounded corners, enhanced port styling, text truncation, and modernized color palette.
-1. **Session 1**: Sub-Task A - Rounded Corners & Colors
-2. **Session 2**: Sub-Task A - Connection Points & Label Truncation
-3. **Session 3**: Sub-Task B - Comment Data Layer & Icon
-4. **Session 4**: Sub-Task B - Hover Preview & Edit Modal
-5. **Session 5**: Sub-Task C - Port Grouping System
-6. **Session 6**: Sub-Task C - Type Icons & Connection Preview
-7. **Session 7**: Integration & Polish
+#### A1: Rounded Corners β
+
+- Created `canvasHelpers.ts` with comprehensive rounded rectangle utilities
+- Implemented `roundRect()`, `fillRoundRect()`, and `strokeRoundRect()` functions
+- Applied 6px corner radius to all node rendering
+- Updated clipping, backgrounds, borders, and selection highlights
+- Supports individual corner radius configuration for future flexibility
+
+**Files Created:**
+
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/canvasHelpers.ts`
+
+**Files Modified:**
+
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorNode.ts`
+
+#### A2: Color Palette Update β
+
+- Updated node type colors with more vibrant, saturated values
+- **Data (green)**: `#2d9a2d` β `#5fcb5f` (more emerald)
+- **Visual (blue)**: `#2c7aac` β `#62aed9` (cleaner slate blue)
+- **Logic (grey)**: Warmer charcoal with subtle warmth
+- **Custom (pink)**: `#b02872` β `#ec5ca8` (refined rose)
+- **Component (purple)**: `#7d3da5` β `#b176db` (cleaner violet)
+- All colors maintain WCAG AA contrast requirements
+- Colors use design system tokens (no hardcoded values)
+
+**Files Modified:**
+
+- `packages/noodl-core-ui/src/styles/custom-properties/colors.css`
+
+#### A3: Connection Point Styling β
+
+- Increased port indicator radius from 4px to 6px for better visibility
+- Added subtle inner highlight (30% white at offset position) for depth
+- Enhanced anti-aliasing with `ctx.imageSmoothingQuality = 'high'`
+- Improved visual distinction between connected and unconnected ports
+
+**Files Modified:**
+
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorNode.ts` (dot function)
+
+#### A4: Port Label Truncation β
+
+- Implemented efficient `truncateText()` utility using binary search
+- Port labels now truncate with ellipsis ('β¦') when they exceed available width
+- Full port names still visible on hover via existing tooltip system
+- Prevents text overflow that obscured node boundaries
+- Works with all font settings via ctx.measureText()
+
+**Files Modified:**
+
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/canvasHelpers.ts`
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorNode.ts` (drawPlugs function)
+
+### Visual Impact
+
+The combined changes create a significantly more modern and polished node graph:
+
+- Softer, more approachable rounded corners
+- Vibrant colors that are easier to distinguish at a glance
+- Better port visibility and clickability
+- Cleaner text layout without overflow issues
+- Professional appearance that matches modern design standards
---
-## [Date TBD] - Task Created
+## Sub-Task C2: Port Type Icons β COMPLETED
-### Summary
+### 2026-01-01 - Port Type Icon System Implementation
-Task documentation created for Node Graph Visual Improvements based on product planning discussion.
+**Summary**: Added visual type indicators next to all ports for instant type recognition.
-### Files Created
+#### Features Implemented
-- `dev-docs/tasks/phase-3/TASK-010-node-graph-visual/README.md` - Full task specification
-- `dev-docs/tasks/phase-3/TASK-010-node-graph-visual/CHECKLIST.md` - Implementation checklist
-- `dev-docs/tasks/phase-3/TASK-010-node-graph-visual/CHANGELOG.md` - This file
-- `dev-docs/tasks/phase-3/TASK-010-node-graph-visual/NOTES.md` - Working notes
+- **Icon Set**: Created comprehensive Unicode-based icon set for all port types:
-### Context
+ - `β‘` Lightning bolt for Signals/Events
+ - `#` Hash for Numbers
+ - `T` Letter T for Strings/Text
+ - `β` Half-circle for Booleans
+ - `{ }` Braces for Objects
+ - `[ ]` Brackets for Arrays
+ - `β` Filled circle for Colors
+ - `β` Diamond for Any type
+ - `β` Diamond with dot for Components
+ - `β‘` Three lines for Enumerations
-Discussion identified three key areas for improvement:
+- **Smart Type Mapping**: Automatic detection and normalization of Noodl internal type names
+- **Visual States**: Icons show at 70% opacity when connected, 40% when unconnected
+- **Positioning**: Icons render next to port dots/arrows on both left and right sides
+- **Performance**: Lightweight rendering using simple Unicode characters (no SVG overhead)
-1. Nodes look dated (sharp corners, flat colors)
-2. No way to document individual nodes with comments
-3. Dense nodes with many ports become hard to read
+#### Files Created
-Decision made to implement as three sub-tasks that can be tackled incrementally.
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/portIcons.ts`
+ - Type definitions and icon mappings
+ - `getPortIconType()` - Maps Noodl types to icon types
+ - `drawPortIcon()` - Renders icons on canvas
+ - `getPortIconWidth()` - For layout calculations
+
+#### Files Modified
+
+- `packages/noodl-editor/src/editor/src/views/nodegrapheditor/NodeGraphEditorNode.ts`
+ - Added imports for port icon utilities
+ - Integrated icon rendering in `drawPlugs()` function
+ - Icons positioned at x=8 (left side) or width-8 (right side)
+ - Type detection from connection metadata
+
+#### Technical Details
+
+**Icon Rendering**:
+
+- Font size: 10px
+- Positioned 8px from node edge
+- Centered vertically with port label
+- Uses node's text color with opacity variations
+
+**Type Detection**:
+
+- Examines first connection's `fromPort.type` or `toPort.type`
+- Handles undefined types gracefully (defaults to 'any')
+- Case-insensitive type matching
+- Supports type aliases (e.g., 'text' β 'string', 'bool' β 'boolean')
+
+**Browser Compatibility**:
+
+- Uses standard Unicode characters supported across all platforms
+- No external dependencies or font loading
+- Fallback to '?' character for unknown types
+
+#### User Experience Impact
+
+- **Instant Recognition**: Port types visible at a glance without needing to connect
+- **Better Learning**: New users can understand port types faster
+- **Reduced Errors**: Visual confirmation before attempting connections
+- **Professional Look**: Adds visual richness to the node graph
---
-## Progress Summary
+## Sub-Task B: Node Comments β COMPLETED
-| Sub-Task | Status | Date Started | Date Completed |
-| ---------------------- | ----------- | ------------ | -------------- |
-| A1: Rounded Corners | Not Started | - | - |
-| A2: Color Palette | Not Started | - | - |
-| A3: Connection Points | Not Started | - | - |
-| A4: Label Truncation | Not Started | - | - |
-| B1: Comment Data Layer | Not Started | - | - |
-| B2: Comment Icon | Not Started | - | - |
-| B3: Hover Preview | Not Started | - | - |
-| B4: Edit Modal | Not Started | - | - |
-| B5: Click Integration | Not Started | - | - |
-| C1: Port Grouping | Not Started | - | - |
-| C2: Type Icons | Not Started | - | - |
-| C3: Connection Preview | Not Started | - | - |
+# TASK-000I-B Node Comments - Changelog
----
+## 2026-01-01 - Enhanced Comment Popup with Code Editor Style
-## Template for Session Entries
+### β Completed Enhancements
-```markdown
-## [YYYY-MM-DD] - Session N: [Sub-Task Name]
+**Multi-line Code Editor Popup**
-### Summary
-
-[Brief description of what was accomplished]
-
-### Files Created
-
-- `path/to/file.ts` - [Purpose]
+- Converted single-line input to multi-line textarea (8 rows default)
+- Added monospace font family for code-like appearance
+- Added line numbers gutter with dynamic updates
+- Implemented scroll synchronization between textarea and line numbers
+- Added proper code editor styling (dark theme, borders, focus states)
+- Disabled spellcheck for cleaner code comment experience
### Files Modified
-- `path/to/file.ts` - [What changed and why]
+1. **packages/noodl-editor/src/editor/src/templates/stringinputpopup.html**
-### Technical Notes
+ - Changed `` to `