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
25 lines
560 B
Go
25 lines
560 B
Go
package main
|
|
|
|
import (
|
|
"os"
|
|
|
|
"gitea.mixdep.ru/mix/gosentry/src/domain"
|
|
"gitea.mixdep.ru/mix/gosentry/src/ui"
|
|
)
|
|
|
|
func main() {
|
|
// The executable entry point intentionally delegates all startup work to the
|
|
// UI package. Keeping main small makes it easier to add platform-specific
|
|
// packaging later without mixing window setup, storage, and scheduler logic.
|
|
ui.Run(hasArgument(domain.StartInTrayArgument))
|
|
}
|
|
|
|
func hasArgument(argument string) bool {
|
|
for _, current := range os.Args[1:] {
|
|
if current == argument {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|