[Fx] PROVIDE fx.Lifecycle <= go.uber.org/fx.New.func1() [Fx] PROVIDE fx.Shutdowner <= go.uber.org/fx.(*App).shutdowner-fm() [Fx] PROVIDE fx.DotGraph <= go.uber.org/fx.(*App).dotGraph-fm() [Fx] PROVIDE *logger.Logger <= git.eeqj.de/sneak/routewatch/internal/logger.New() [Fx] PROVIDE *config.Config <= git.eeqj.de/sneak/routewatch/internal/config.New() [Fx] PROVIDE *metrics.Tracker <= git.eeqj.de/sneak/routewatch/internal/metrics.New() [Fx] PROVIDE database.Store <= fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]]) [Fx] PROVIDE *streamer.Streamer <= git.eeqj.de/sneak/routewatch/internal/streamer.New() [Fx] PROVIDE *server.Server <= git.eeqj.de/sneak/routewatch/internal/server.New() [Fx] PROVIDE *routewatch.RouteWatch <= git.eeqj.de/sneak/routewatch/internal/routewatch.New() [Fx] INVOKE git.eeqj.de/sneak/routewatch/internal/routewatch.CLIEntry.func1() [Fx] BEFORE RUN provide: go.uber.org/fx.New.func1() [Fx] RUN provide: go.uber.org/fx.New.func1() in 2.583µs [Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/config.New() [Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/config.New() in 3.667µs [Fx] BEFORE RUN provide: git.eeqj.de/sneak/routewatch/internal/logger.New() [Fx] RUN provide: git.eeqj.de/sneak/routewatch/internal/logger.New() in 3.25µs [Fx] BEFORE RUN provide: fx.Annotate(git.eeqj.de/sneak/routewatch/internal/database.New(), fx.As([[database.Store]]) {"time":"2025-07-28T18:27:39.882605+02:00","level":"INFO","msg":"Opening database","source":"database.go:60","func":"database.New","path":"/Users/user/Library/Application Support/berlin.sneak.app.routewatch/db.sqlite"}