01fd572a89
## Summary Completed Phase 5 refactoring and reached the target architecture. **Architectural milestone achieved:** - Service layer owns all state and is the sole writer - UI is a thin Fyne view, all widget updates marshaled via `fyne.Do` - Core engines are stateless and injectable - Domain types are pure (no `yaml:"-"` fields) - Full module builds and `go vet ./...` clean ## Changes - Bump version: 0.3.6 → 0.4.0 - Update CHANGELOG with Phase 5 summary - Add ROADMAP "Refactoring Follow-Ups" section ## Known follow-up work 1. **Linux test build broken** — `runner_test.go` needs `//go:build windows` tag 2. **File-size limits exceeded** — `operations.go` (486 lines), `jobs_view.go` (415 lines) See ROADMAP.md for details. --------- Co-authored-by: mixeme <mix.public@ya.ru> Reviewed-on: #1
44 lines
1.4 KiB
Go
44 lines
1.4 KiB
Go
package app
|
|
|
|
import (
|
|
"gitea.mixdep.ru/mix/gosentry/src/platform/desktop"
|
|
)
|
|
|
|
// InstallDesktopIcon installs the application's .desktop file and icon on
|
|
// Linux (no-op on other platforms). The resulting icon path is stored in
|
|
// store.Paths.DesktopIcon so ApplyAutostart can reference it.
|
|
func (s *Service) InstallDesktopIcon(appID string, iconBytes []byte) {
|
|
if iconPath, err := desktop.InstallDesktopIntegration(appID, s.store.Paths.ExecutablePath, iconBytes); err == nil {
|
|
s.store.Paths.DesktopIcon = iconPath
|
|
}
|
|
}
|
|
|
|
// AutostartStatus reports whether the platform autostart entry matches the
|
|
// current StartOnLogin setting in the stored config.
|
|
func (s *Service) AutostartStatus() (ok bool, message string) {
|
|
s.mu.Lock()
|
|
enabled := s.store.Config.StartOnLogin
|
|
execPath := s.store.Paths.ExecutablePath
|
|
manager := s.manager
|
|
s.mu.Unlock()
|
|
if manager == nil {
|
|
return false, "autostart not available"
|
|
}
|
|
return manager.Status(enabled, execPath)
|
|
}
|
|
|
|
// ApplyAutostart writes or removes the platform autostart entry to match the
|
|
// current StartOnLogin setting in the stored config. Call after UpdateSettings.
|
|
func (s *Service) ApplyAutostart() error {
|
|
s.mu.Lock()
|
|
enabled := s.store.Config.StartOnLogin
|
|
execPath := s.store.Paths.ExecutablePath
|
|
iconPath := s.store.Paths.DesktopIcon
|
|
manager := s.manager
|
|
s.mu.Unlock()
|
|
if manager == nil {
|
|
return nil
|
|
}
|
|
return manager.Set(enabled, execPath, iconPath)
|
|
}
|