Files
CodeNomad/packages/ui
bizzkoot 888e365d72 feat: enhance permission modal with tool details, queue nav, session nav, and responsive design
Modal Enhancements:
- Add accurate tool name extraction from message store (same method as inline chat)
- Display 'Tool Call [name]' badge (e.g., 'Tool Call read', 'Tool Call write')
- Add 'Go to Session ↗' button to navigate to originating session
- Add Prev/Next buttons for queue navigation with keyboard shortcuts (←/→)
- Add queue counter showing current position

Responsive Web Design:
- Portrait phones: 90vh max-height with safe margins (avoids browser URL bar)
- Landscape phones: 95vw with 50vh body scroll
- Tablets: adaptive layout
- Touch devices: 44-48px touch targets

Technical Changes:
- Import messageStoreBus for tool part lookup
- Query linked part.tool via permission messageId/callId
- Export setActivePermissionIdForInstance for queue navigation
- Add tool badge CSS styling
2026-01-08 06:38:59 +08:00
..
2026-01-07 08:56:19 +00:00
2025-12-06 12:17:33 +00:00

CodeNomad UI

This package contains the frontend user interface for CodeNomad, built with SolidJS and Tailwind CSS.

Overview

The UI is designed to be a high-performance, low-latency cockpit for managing OpenCode sessions. It connects to the CodeNomad server (either running locally via CLI or embedded in the Electron app).

Features

  • SolidJS: Fine-grained reactivity for high performance.
  • Tailwind CSS: Utility-first styling for rapid development.
  • Vite: Fast build tool and dev server.

Development

To run the UI in standalone mode (connected to a running server):

npm run dev

This starts the Vite dev server at http://localhost:3000.

Building

To build the production assets:

npm run build

The output will be generated in the dist directory, which is then consumed by the Server or Electron app.

Debug Logging

The UI now routes all logging through a lightweight wrapper around debug. The logger exposes four namespaces that can be toggled at runtime:

  • sse Server-sent event transport and handlers
  • api HTTP/API calls and workspace lifecycle
  • session Session/model state, prompt handling, tool calls
  • actions User-driven interactions in UI components

You can enable or disable namespaces from DevTools (in dev or production builds) via the global window.codenomadLogger helpers:

window.codenomadLogger?.listLoggerNamespaces() // => [{ name: "sse", enabled: false }, ...]
window.codenomadLogger?.enableLogger("sse") // turn on SSE logs
window.codenomadLogger?.disableLogger("sse") // turn them off again
window.codenomadLogger?.enableAllLoggers() // optional helper

Enabled namespaces are persisted in localStorage under opencode:logger:namespaces, so your preference survives reloads.