Commit graph

33 commits

Author SHA1 Message Date
Snider
7c0a0eff2d docs: add Extract & Insulate design spec (Spec A)
5 new core.Service packages extracted from pkg/display:
clipboard, dialog, notification, environment, screen.
Each with Platform interface insulation, full IPC messages,
and WS bridge integration for the TypeScript SDK.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 14:05:40 +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
09ff28fca1 docs: add go-config wiring design spec and implementation plan (2 tasks)
Wire go-config into display orchestrator to replace the in-memory
loadConfig() stub with real .core/gui/config.yaml file loading and
persistence via handleConfigTask.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:45:46 +00:00
Snider
dbd357f0fd docs: add CLAUDE.md project instructions
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-13 13:38:02 +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
bf6f46345d docs: add Service Conclave IPC implementation plan (6 tasks)
Three-chunk plan wiring core/go IPC into core/gui sub-packages.
Tasks 1-3: Window/systray/menu IPC layers (Service, Register, messages).
Task 4: Display config handlers + Register refactor.
Task 5: HandleIPCEvents IPC→WS bridge + exported mocks.
Task 6: Integration tests + delegation conversion to IPC.

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:11:30 +00:00
Snider
6bf335ac7c docs: add service conclave IPC integration design spec
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:34:14 +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
6e7ca1b815 docs: add display package split implementation plan (12 tasks)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 12:00:15 +00:00
Snider
99a8dda8d2 docs: address spec review — complete interfaces, fix insulation gaps
Some checks failed
Security Scan / security (push) Failing after 9s
Test / test (push) Failing after 34s
Fixes from code review:
- Window type is own struct, not Wails alias; WindowOption rewrites
- PlatformWindow interface: add Position, Size, IsMaximised, IsFocused,
  Show, Hide, Fullscreen, UnFullscreen, OnWindowEvent
- Package-level vars (activeTray, trayMenuCallbacks) become Manager fields
- Menu click handlers live in pkg/display, pkg/menu builds structure only
- WSEventManager insulation via EventSource + PlatformWindow interfaces
- WindowStateManager accepts PlatformWindow, returns own Window struct
- AttachWindow uses display.WindowHandle, not any
- ui/ existing Angular code moves as-is, go:embed updates

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 11:31:16 +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
c7e0d91c48
ci: add Forgejo Actions test and security scan workflows
Some checks failed
Security Scan / security (push) Failing after 8s
Test / test (push) Failing after 29s
Uses reusable workflows from core/go-devops for Go testing
(with race detector and coverage) and security scanning
(govulncheck, gitleaks, trivy).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 03:28:13 +00:00
Claude
a453091cc8
chore: refresh go.sum after upstream tag updates
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 23:36:25 +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
81b8dcf794
Add European Union Public Licence v. 1.2 2026-01-30 08:47:01 +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