Skip to content

Pull Request: Dev -> Main (UI Redesign, Stability Fixes & Configurable Timeout)#22

Merged
bizzkoot merged 8 commits intomainfrom
dev
Feb 4, 2026
Merged

Pull Request: Dev -> Main (UI Redesign, Stability Fixes & Configurable Timeout)#22
bizzkoot merged 8 commits intomainfrom
dev

Conversation

@bizzkoot
Copy link
Owner

@bizzkoot bizzkoot commented Feb 4, 2026

Summary

This PR significantly enhances the stability and user experience of CodeNomad. It introduces a configurable timeout for ask_user, redesigns the currently rigid "Failed Notification" panel to support Markdown and flexible sizing, and includes critical bug fixes for Electron IPC, CLI port management, and MCP multi-instance stability.

📦 Release Contents

1. ⏱️ Configurable Ask User Timeout

Key Changes:

  • UI Settings: Added a new "Timeout Settings" section in the Advanced Settings modal.
  • Preferences: Introduced askUserTimeout preference (default: 300s / 5m).
  • Architecture: Updated ipc.ts and mcp-bridge.ts to dynamically sync the timeout value from the UI renderer to the main process/MCP server.
  • Documentation: Updated README with instructions on how to configure the timeout.

Commits:

  • feat(ui/settings): implement configurable ask_user tool timeout
  • docs: add configurable timeout instructions to README

2. 🎨 Failed Notification Panel Redesign

Key Changes:

  • Markdown Support: The failed question panel now renders questions using a full Markdown component, supporting code blocks, lists, and formatting.
  • Flexible Sizing: The panel is no longer fixed width; it expands to fit-content (up to the window width) to accommodate long lines or code blocks without aggressive wrapping.
  • Styling: Improved spacing and visual hierarchy for failed notifications.

Commits:

  • feat(ui,electron): redesign notification panel and fix IPC/CLI issues
  • feat(ui): add expandable detail view to failed notification panel

3. 🛠️ Critical Stability & Bug Fixes

Key Changes:

  • Electron IPC Crash: Fixed a "duplicate handler registration" crash on window reload by adding proper cleanup and disposal logic to setupCliIPC.
  • CLI Port Mismatch: Fixed an issue where the CLI server hardcoded localhost:3000, causing failures when the renderer port shifted (e.g., to 3001). Now dynamically reads VITE_DEV_SERVER_URL.
  • MCP Multi-Instance Race Condition: Fixed a critical bug where closing one tab/window wiped out global ask_user listeners for all instances. Now uses specific listener removal.
  • Wizard Stuck State: Fixed the wizard getting stuck in "pending" after timeouts by disabling retries for rejected IDs.
  • Multi-Instance Routing: Resolved routing regressions to ensure questions reach the correct active instance.

Commits:

  • feat(ui,electron): redesign notification panel and fix IPC/CLI issues
  • fix(ui): resolve ask_user routing regression in multi-instance
  • fix(mcp-server): notify UI on ask_user timeout to prevent stuck wizard

📋 Checklist

  • Configurable timeout setting works (tested with 1m and 5m)
  • Failed notifications render Markdown correctly
  • Notification panel expands to fit wide content
  • Electron app reloads (cmd+R) without crashing (IPC fix)
  • CLI connects correctly even on non-3000 ports
  • Multi-tab/window MCP questions work correctly (Listener fix)
  • Wizard correctly closes on timeout

- Send ask_user.rejected event to UI when server-side timeout occurs
- Ensures UI moves timed-out questions to failed notifications and closes wizard
- Fix unused callback parameters in IPC bridge for lint compliance
- Added `askUserTimeout` to `Preferences` interface and schema (default: 5 minutes)
- Added Timeout Settings section to Advanced Settings modal
- Updated `mcp-bridge` to sync timeout configuration with the main process
- Refactored `mcp-bridge` retry logic to prevent stuck wizard on timeout
- Updated `ipc` to handle dynamic timeout configuration for `ask_user` requests
- Remove ensureSingleListener enforcement to allow per-instance listeners
- Restore correct event routing for multiple open workspaces
- Implement expand/collapse functionality for failed notification cards.
- Add detailed views for 'question' and 'permission' notification types.
- Display patterns and resources for permission requests.
- Display full question text and options for questions.
- Update CSS for expandable sections and internal elements.
- Redesign failed question panel with Markdown support and flexible sizing

- Fix Electron IPC double registration error by adding cleanup logic

- Fix CLI port mismatch by using correct dev server URL

- Fix MCP listener race condition in preload script
@bizzkoot bizzkoot merged commit 7c7aa28 into main Feb 4, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments