Commit graph

37 commits

Author SHA1 Message Date
Snider
7ea92419ae feat(display): add dock + lifecycle HandleIPCEvents and WS bridge integration
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 1m36s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:42:48 +00:00
Snider
6241bdddb6 feat(lifecycle): add application lifecycle core.Service with Platform interface and IPC
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:41:42 +00:00
Snider
073794aed0 feat(dock): add dock/badge core.Service with Platform interface and IPC
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:40:41 +00:00
Snider
22315d07bb feat(display): wire keybinding, browser, and file drop through orchestrator
Some checks failed
Security Scan / security (push) Failing after 7s
Test / test (push) Failing after 1m32s
Adds EventKeybindingTriggered and EventWindowFileDrop EventType constants.
HandleIPCEvents bridges keybinding.ActionTriggered and window.ActionFilesDropped
to WS events. handleWSMessage bridges WS commands to IPC for keybinding:add,
keybinding:remove, keybinding:list, browser:open-url, browser:open-file.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:38:18 +00:00
Snider
23bf0302d3 feat(window): add file drop support to PlatformWindow interface
Adds OnFileDrop(handler func(paths []string, targetID string)) to PlatformWindow.
trackWindow() now wires file drop callbacks to ActionFilesDropped broadcasts.
Updates both exported MockWindow and unexported mockWindow with the new method.
Wails adapter maps WindowFilesDropped event with DroppedFiles and DropTargetDetails.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:36:55 +00:00
Snider
1e0b89b94e feat(browser): add browser core.Service with Platform interface and IPC
Implements pkg/browser with three-layer pattern: IPC Bus -> Service -> Platform.
Stateless service — delegates OpenURL and OpenFile to platform adapter.
No queries or actions, tasks only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:35:01 +00:00
Snider
3954725d45 feat(keybinding): add keybinding core.Service with Platform interface and IPC
Implements pkg/keybinding with three-layer pattern: IPC Bus -> Service -> Platform.
Service maintains in-memory registry, ErrAlreadyRegistered on duplicates.
QueryList reads from service registry, not platform.GetAll().
ActionTriggered broadcast on shortcut trigger via platform callback.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:34:30 +00:00
Snider
bba743d2cb refactor(display): remove extracted clipboard/dialog/notification/theme/screen code
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 1m33s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:24:06 +00:00
Snider
335d93d05c feat(display): bridge new service Actions to WSEventManager
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:20:43 +00:00
Snider
91f4532b50 feat(screen): add screen core.Service with computed queries via IPC
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:19:56 +00:00
Snider
a7c976ff3c feat(environment): add environment core.Service with theme change broadcasts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:19:05 +00:00
Snider
9dae67407a feat(notification): add notification core.Service with fallback to dialog via IPC
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:18:21 +00:00
Snider
df37dfa041 feat(dialog): add dialog core.Service with Platform interface and IPC
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:17:35 +00:00
Snider
7b8ed9df6f feat(clipboard): add clipboard core.Service with Platform interface and IPC
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:16:54 +00:00
Snider
92333ff2db feat(display): wire go-config for config file persistence
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 1m25s
Replace the in-memory loadConfig() stub with real ~/.core/gui/config.yaml
loading via go-config. handleConfigTask now persists changes to disk via
cfg.Set() + cfg.Commit(). Sub-service applyConfig() stubs fleshed out:
window reads default dimensions (TODO: Manager API), systray stores icon
path, menu reads show_dev_tools flag with accessor.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:54:28 +00:00
Snider
49e1faed54 feat(display): convert delegation to IPC, full conclave integration
Display methods now route through IPC bus instead of direct Manager calls.
Menu/tray setup uses PERFORM. Tray click actions handled via HandleIPCEvents.
WindowInfo aliased from window package. Direct Manager refs removed.
Integration tests verify full 4-service conclave startup and communication.
Service struct no longer holds windows/tray/menus fields — uses windowService()
for direct Manager access where IPC messages are not yet defined.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:36:55 +00:00
Snider
0893456a9e feat(display): add HandleIPCEvents IPC->WS bridge
Display HandleIPCEvents converts sub-service actions to WS events.
ActionServiceStartup triggers buildMenu/setupTray after all services start.
Export mock platforms from each sub-package for integration tests.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:32:16 +00:00
Snider
d29cf62e6f feat(display): refactor to closure Register pattern, add config IPC handlers
Register(wailsApp) returns factory closure for WithService.
OnStartup registers config query/task handlers synchronously.
Handles window.QueryConfig, systray.QueryConfig, menu.QueryConfig.
Remove ServiceName() — auto-derived as 'display' by WithService.
Remove ServiceStartup/Startup — replaced by OnStartup (Startable interface).
Remove actions.go — replaced by sub-package message types.
Add EventTrayClick and EventTrayMenuItemClick event types.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:30:26 +00:00
Snider
3afa0c84d3 feat(menu): add IPC layer — Service, Register factory, message types
Menu package is now a full core.Service with typed IPC messages.
TaskSetAppMenu carries MenuItems with OnClick closures (in-process IPC).

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:26:50 +00:00
Snider
56ef6f3928 feat(systray): add IPC layer — Service, Register factory, message types
Systray package is now a full core.Service with typed IPC messages.
Menu item clicks emit ActionTrayMenuItemClicked via IPC.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:26:18 +00:00
Snider
a59028f112 feat(window): add IPC layer — Service, Register factory, message types
Window package is now a full core.Service with typed IPC messages.
Register(Platform) factory closure captures platform adapter for WithService.
OnStartup queries config and registers query/task handlers.
Platform events converted to IPC actions via trackWindow.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:25:34 +00:00
Snider
afe92e0275 refactor: move ui/ demo to top level
Moved pkg/display/ui/ to top-level ui/ directory. No go:embed
references needed updating.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:27:52 +00:00
Snider
4814f960fb refactor(display): compose window/systray/menu sub-packages into orchestrator
Service now delegates to window.Manager, systray.Manager, and menu.Manager
instead of directly using Wails types. WSEventManager accepts EventSource
interface instead of calling application.Get() directly.
AttachWindowListeners now accepts window.PlatformWindow.

Removes migrated files: window.go, window_state.go, layout.go, tray.go, menu.go.
Tests rewritten against mock platform implementations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:27:19 +00:00
Snider
691f17ea05 feat(display): add shared types (EventSource)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:15:45 +00:00
Snider
12a612bba0 feat(menu): add Manager with platform abstraction and builder
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:15:32 +00:00
Snider
940ed0bdae feat(systray): add Manager with platform abstraction and callback registry
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:13:40 +00:00
Snider
7c066ba3d8 feat(window): add Wails v3 adapter
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:12:05 +00:00
Snider
060bbe7c0b feat(window): add tiling, snapping, stacking, and workflow layouts
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:09:31 +00:00
Snider
ff44b8c654 feat(window): add LayoutManager with JSON persistence
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:08:17 +00:00
Snider
3a4a2fc508 feat(window): add StateManager with JSON persistence
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:07:28 +00:00
Snider
ad3c63f093 feat(window): add Window struct, options, and Manager with CRUD
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:05:37 +00:00
Snider
2383bcd743 feat(window): add Platform and PlatformWindow interfaces
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:04:38 +00:00
Snider
88c15d1a8e docs: add display package split design spec
Approved design for restructuring pkg/display/ monolith into 4 focused
packages: window, systray, menu, display (orchestrator).

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 11:27:42 +00:00
Claude
f35e5c5e95
chore: migrate Snider deps from github.com to forge.lthn.ai
Update Enchantrix, Mining dependency paths and snider/i18n import
to forge.lthn.ai equivalents across go.mod files and imports.
Also update go-i18n pseudo-version to v0.0.1 tag.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:40:42 +00:00
Snider
8fc50dc2df fix: update import paths to new repository location 2026-02-16 06:44:02 +00:00
Snider
6c5f4b3d8f fix: update import paths to new repository location 2026-02-16 06:33:58 +00:00
Snider
032c426ac3 feat: initial Wails v3 desktop framework
GUI packages, examples, and documentation for building
desktop applications with Go and web technologies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 08:44:23 +00:00