4 new MCP tools for the events package:
- event_emit — fire custom events with optional data
- event_on — register event listener via IPC
- event_off — remove listeners by name
- event_list — query all registered listeners
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Window package:
- 15 new PlatformWindow methods (zoom, content, bounds, states, print, flash)
- 16 new IPC types (tasks + queries for all new capabilities)
- ZoomIn/ZoomOut step 0.1, clamped to minimum 0.1
- SetURL, SetHTML, ExecJS for webview content control
- 36 new tests with Good/Bad/Ugly coverage
Events package (NEW — 17th package):
- Custom event system bridged to Core IPC
- Emit, On, Off, OnMultiple, Reset via Platform interface
- ActionEventFired broadcast for agent consumption
- 17 tests
All 17 packages build and test clean.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Platform.Process(accelerator) for programmatic trigger
- TaskProcess IPC task with ActionTriggered broadcast
- ErrorNotRegistered sentinel for remove/process on unknown bindings
- 5 new tests: process good/bad/ugly, remove sentinel, concurrent adds
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Platform.GetCurrent() for active screen query
- ScreenPlacement with Apply() for window positioning rules
- Rect geometry: Origin, Corner, InsideCorner, IsEmpty, Contains, RectSize, Intersect
- Point type, Alignment/OffsetReference constants
- 18 new tests with Good/Bad/Ugly coverage
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Pre-existing build errors in tools_clipboard.go, tools_contextmenu.go,
tools_environment.go — each had coreerr imported twice. Removed duplicates.
All 16 packages build and test clean.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
internal/wails3/ is a submodule of github.com/wailsapp/wails pinned to
v3.0.0-alpha.74. This is the reference source for the stub bridge — the
exact API surface we target.
Upgrade flow:
cd internal/wails3 && git checkout v3.0.0-alpha.XX
diff stubs vs reference
update stubs to match
commit submodule bump + stub changes together
The replace directive in go.mod still points to ./stubs/wails — our code
never imports Wails directly. The submodule is the reference, not the
build dependency.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Apply declarative window specs across display, MCP, and window service paths; route layout/window controls through IPC tasks; and add a local Wails stub so the workspace builds cleanly here.
Co-Authored-By: Virgil <virgil@lethean.io>
Resolve go.mod conflict: keep go-io and go-log as direct dependencies
(used by PR code changes) with dev's newer dependency versions.
Co-Authored-By: Virgil <virgil@lethean.io>
Resolve stale forge.lthn.ai/core/cli v0.1.0 references (tag never existed,
earliest is v0.0.1) and regenerate go.sum via workspace-aware go mod tidy.
Co-Authored-By: Virgil <virgil@lethean.io>
Port the HLCRF application frame from lthn-desktop into core/gui/ui/ as a
reusable Angular framework. Adds:
- ApplicationFrameComponent: header, collapsible sidebar, content area, footer
- SystemTrayFrameComponent: 380x480 frameless panel with provider status cards
- ProviderDiscoveryService: fetches GET /api/v1/providers, loads custom elements
- ProviderHostComponent: renders any custom element by tag via Renderer2
- ProviderNavComponent: dynamic sidebar navigation from provider discovery
- StatusBarComponent: footer with time, version, provider count, WS status
- WebSocketService: persistent connection with auto-reconnect
- ApiConfigService: configurable API base URL
- TranslationService: key-value i18n with API fallback
Navigation is dynamic (populated from providers), sidebar shows icons-only
in collapsed mode with expand on click, dark mode supported throughout.
Co-Authored-By: Virgil <virgil@lethean.io>
All 16 plan and spec files from the 2026-03-13 GUI restructuring are
implemented. Remove them to keep the repo clean.
Co-Authored-By: Virgil <virgil@lethean.io>
Replace all 32 unchecked type assertions (result.(Type)) with safe
ok-pattern checks that return descriptive errors on type mismatch.
Complete stub handlers in tools_window.go (restore, title, visibility,
fullscreen) and tools_layout.go (save, restore, list, delete, get,
tile, snap) using proper IPC message types instead of workarounds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
GetWindowTitle was returning info.Name (the window's identifier) instead
of the actual title. Added Title() to the PlatformWindow interface and
Title field to WindowInfo so the real title flows through queries.
Added wsRequire() helper and input validation for all webview:* WS
message cases — window name is required for every webview action, and
selectors/URLs are validated where they'd cause errors if empty.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Wire up go-webview ConsoleWatcher and ExceptionWatcher on real connectors
after connection creation, converting go-webview types to our own and
broadcasting via s.Core().ACTION().
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix cyclic type panic in contextmenu tools by using map[string]any
for ContextMenuDef which contains self-referencing MenuItemDef.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>