Commit graph

101 commits

Author SHA1 Message Date
Claude
d9fa59ab04
feat(stubs): rebuild Wails v3 stub bridge from clean dev — 15 files, 479 exports
Some checks failed
Security Scan / security (push) Failing after 24s
Rebuilt from scratch on current dev (post-fleet AX passes).

Stub files:
- application.go (expanded App with 12 managers, WebviewWindow satisfies Window)
- application_options.go (Options, Mac/Win/Linux/iOS/Android, Server, TLS, Assets)
- browser_manager.go, browser_window.go (~47 no-op methods)
- clipboard.go, context_menu.go, dialog.go (full dialog builder API)
- environment.go, events.go (EventManager with On/Off/Emit/Reset)
- keybinding.go, menuitem.go (42 Role constants)
- screen.go (Rect/Point/Size geometry), services.go (generic Service[T])
- webview_window_options.go (full platform types)
- window.go (Window interface ~50 methods)

Wails v3 submodule at internal/wails3/ pinned to alpha 74.
All 16 gui packages build and test clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 17:20:22 +01:00
4533018f80 Merge pull request '[agent/codex:gpt-5.4-mini] Update the code against the AX design principles in ~/spec/r...' (#6) from agent/update-the-code-against-the-ax-design-pr into dev
Some checks failed
Security Scan / security (push) Failing after 30s
Test / test (push) Successful in 1m32s
2026-03-31 13:20:18 +00:00
Virgil
3bcca95b5e refactor(ax): align GUI code with declarative AX principles
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 13:19:46 +00:00
Snider
13a493f57d refactor(ax): AX compliance sweep — comments, error handling, test names
Some checks failed
Security Scan / security (push) Failing after 26s
Test / test (push) Failing after 56s
- Fix window/service.go: replace 3 fmt.Errorf calls with coreerr.E() (removes implicit fmt dependency)
- Add usage-example comments to all bare Register() functions across 10 packages
- Remove redundant prose comments (Options/Service/Register/OnStartup/HandleIPCEvents boilerplate)
- Add Result-type comments to message types in contextmenu, keybinding, notification packages
- Fix test naming to TestFilename_Function_{Good,Bad,Ugly} pattern in display_test, window_test, persistence_test, service_screen_test
- Convert New() and CreateWindowOptions doc comments to usage-example style

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 12:18:41 +01:00
2001e7ed87 Merge pull request '[agent/codex:gpt-5.4-mini] Update the code against the AX design principles in ~/spec/r...' (#4) from main into dev
Some checks failed
Security Scan / security (push) Failing after 35s
Test / test (push) Failing after 41s
2026-03-31 05:57:04 +00:00
Virgil
089bdacadb refactor(ax): align GUI surface with AX principles
Some checks failed
Security Scan / security (push) Failing after 29s
Test / test (push) Successful in 2m21s
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>
2026-03-31 05:56:36 +00:00
Snider
bff6c5b7d3 refactor(ax): add screen service tests and window improvements
Some checks failed
Security Scan / security (push) Failing after 29s
Test / test (push) Failing after 2m2s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 06:38:55 +01:00
Virgil
02ea237a1d refactor(ax): use primary screen size for layouts 2026-03-31 05:38:00 +00:00
Snider
0e624bfb7b refactor(ax): merge mini AX pass
Some checks failed
Security Scan / security (push) Failing after 30s
Test / test (push) Failing after 2m10s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-31 06:32:06 +01:00
Virgil
35f8f5ec51 refactor(ax): align GUI APIs with AX principles 2026-03-31 05:31:00 +00:00
Virgil
2b6e6cee0b refactor(ax): finish AX cleanup in display stack
Some checks failed
Security Scan / security (push) Failing after 28s
Test / test (push) Failing after 2m9s
2026-03-31 05:24:09 +00:00
Virgil
da22bedbc6 refactor(ax): align public APIs with AX principles
Some checks failed
Security Scan / security (push) Failing after 42s
Test / test (push) Failing after 1m31s
2026-03-31 05:13:43 +00:00
Snider
bd58099c17 docs: add AX design principles RFC for agent dispatch
Some checks failed
Security Scan / security (push) Failing after 34s
Test / test (push) Failing after 2m9s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-30 23:56:08 +01:00
9177ea99c9 Merge pull request 'DX audit and fix' (#3) from agent/dx-audit-and-fix--1--review-claude-md into dev
Some checks failed
Security Scan / security (push) Failing after 28s
Test / test (push) Failing after 1m53s
Reviewed-on: #3
2026-03-24 11:43:13 +00:00
Snider
a36392ec08 Merge origin/dev into agent/dx-audit-and-fix--1--review-claude-md
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>
2026-03-24 11:40:56 +00:00
Snider
05a865d8f6 Merge remote-tracking branch 'github/dev'
Some checks failed
Security Scan / security (push) Failing after 38s
Test / test (push) Failing after 1m43s
2026-03-22 00:57:51 +00:00
Snider
97cc7b04ec chore: sync dependencies for v0.1.5
Some checks failed
Security Scan / security (push) Failing after 27s
Test / test (push) Failing after 2m5s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:53:39 +00:00
Snider
0038250839 chore: sync dependencies for v0.1.4
Some checks failed
Security Scan / security (push) Failing after 31s
Test / test (push) Failing after 2m24s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:48:57 +00:00
Snider
b559562dd9 fix(dx): use coreerr.E() and go-io, update CLAUDE.md, add tests
Some checks failed
Security Scan / security (pull_request) Failing after 28s
Test / test (pull_request) Failing after 1m59s
- Replace 90+ fmt.Errorf calls with coreerr.E() from go-log across
  display, window, systray, keybinding, contextmenu, and mcp packages
- Replace os.ReadFile/WriteFile/MkdirAll with coreio.Local in
  window/layout.go and window/state.go
- Update CLAUDE.md: fix key files table for new package structure,
  document error handling and file I/O conventions, add missing deps
- Add 37 tests for window package (task handlers, persistence,
  tiling modes, snap positions, workflow layouts)
- Window coverage: 47.1% → 69.8%

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 09:05:35 +00:00
Snider
29d92601cb chore: sync dependencies for v0.1.3
Some checks failed
Security Scan / security (push) Failing after 34s
Test / test (push) Failing after 2m8s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 22:18:48 +00:00
Snider
fad16c8c76 chore: sync workspace dependencies
Some checks failed
Security Scan / security (push) Failing after 34s
Test / test (push) Failing after 1m44s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:44:56 +00:00
Snider
cfc25a40b8 chore: sync go.mod dependencies
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:37:18 +00:00
Snider
5b57906a08 chore: add .core/ and .idea/ to .gitignore
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 1m55s
2026-03-15 10:17:50 +00:00
Snider
9c737548a0 fix: update stale import paths and dependency versions from extraction
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 2m16s
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>
2026-03-14 13:38:59 +00:00
Snider
0dcc42c7fb feat(ui): add app shell framework with provider discovery
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m28s
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>
2026-03-14 12:41:33 +00:00
Snider
de35a7ab16 fix: correct config module version to v0.1.0
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m26s
The go-config v0.1.2 was renamed to config but tagged as v0.1.0.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 10:29:45 +00:00
Snider
4bdbb68f46 refactor: update import path from go-config to core/config
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m21s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-14 10:26:36 +00:00
Snider
73676c9d88 docs: remove completed plan/spec files
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m57s
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>
2026-03-14 08:21:33 +00:00
Snider
ec492658c2 fix(mcp): add safe type assertions and complete stub handlers
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m40s
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>
2026-03-13 16:28:15 +00:00
Snider
f884d698b2 fix(display): correct GetWindowTitle and add WS input validation
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Has been cancelled
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>
2026-03-13 16:25:29 +00:00
Snider
ed44b6f7f9 fix(webview): broadcast ActionConsoleMessage and ActionException via watchers
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>
2026-03-13 16:23:12 +00:00
Snider
9b7f6a9275 chore: add go-webview and MCP SDK dependencies
Some checks failed
Security Scan / security (push) Failing after 7s
Test / test (push) Failing after 1m43s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:10:33 +00:00
Snider
19b949b8f3 test(mcp): add subsystem tests with IPC round-trip verification
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>
2026-03-13 16:10:06 +00:00
Snider
a89e66c832 feat(mcp): add browser, contextmenu, keybinding, dock, lifecycle tools (11)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:08:34 +00:00
Snider
69a57a6946 feat(mcp): add notification, tray, environment tools (9)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:08:29 +00:00
Snider
985d3c737c feat(mcp): add screen, clipboard, dialog tools (14)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:08:26 +00:00
Snider
39d222d598 feat(mcp): add window and layout tools (22)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:08:22 +00:00
Snider
38fbf083d8 feat(mcp): add webview tools (18)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:08:18 +00:00
Snider
6dab7eae52 feat(mcp): add display subsystem skeleton
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:04:13 +00:00
Snider
b3f380e949 feat(display): add webview IPC->WS bridging (18 cases)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:03:50 +00:00
Snider
e1012982b3 test(webview): add service tests with mock connector
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:02:38 +00:00
Snider
67a364cf4e feat(webview): add service with connector interface and IPC handlers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:01:57 +00:00
Snider
465ef415a3 feat(webview): add IPC message types and own types
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 16:01:03 +00:00
Snider
c2e49c32e7 docs: add MCP bridge implementation plan (13 tasks)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 15:53:48 +00:00
Snider
9ab9d2b235 docs: add MCP bridge & WebView service design (Spec E)
Adds two new packages to core/gui:
- pkg/webview: wraps go-webview CDP client as core.Service with IPC messages
- pkg/mcp: MCP display subsystem registering ~74 GUI tools via IPC translation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 15:25:23 +00:00
Snider
49a83110fb refactor(display): migrate stale Wails calls to IPC, remove wrapper types
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m35s
Migrate handleOpenFile to dialog.TaskOpenFile IPC, handleSaveFile/handleRun/
handleBuild to ActionIDECommand IPC. Remove DialogManager, EnvManager,
EventManager interfaces and wailsDialogManager, wailsEnvManager,
wailsEventManager adapter structs. App interface now has Quit() + Logger() only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:53:50 +00:00
Snider
07bc116abd feat(display): add contextmenu integration and ActionIDECommand to orchestrator
Add HandleIPCEvents cases for contextmenu.ActionItemClicked and
ActionIDECommand, WS->IPC bridge cases for contextmenu:add/remove/get/list,
EventContextMenuClick and EventIDECommand constants.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:52:38 +00:00
Snider
94c17b88c2 feat(contextmenu): add contextmenu core.Service with Platform interface and IPC
Completes full Wails v3 Manager API coverage through the IPC bus.
Service maintains in-memory registry, delegates to Platform for native
context menu operations, broadcasts ActionItemClicked on menu item clicks.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:51:33 +00:00
Snider
2099fa5bd3 docs: add Spec D (context menus & final cleanup) implementation plan
4 tasks: contextmenu package, display integration, stale wrapper
removal, final verification.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:48:46 +00:00
Snider
8133e367a7 docs: add Spec D (context menus & final cleanup) design
pkg/contextmenu wraps the last Wails v3 manager API.
Display cleanup removes stale interfaces.go wrappers,
migrates remaining direct s.app.* calls to IPC.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:44:59 +00:00