## [_Unreleased_](https://github.com/freckle/freckle-app/compare/v1.2.0.1...main) ## [v1.2.0.1](https://github.com/freckle/freckle-app/compare/v1.2.0.0...v1.2.0.1) - Use `Env.kept` with parsing that occurs in `makePostgresPool` This ensure all `PG` variables are kept in the environment after parsing, to again match pre-v1.1 behavior. If you would prefer not to keep these variables, parse them yourself (e.g. with `envParseDatabaseConf`) and use `makePostgresPoolWith`. - Add `Freckle.App.Env.kept` to re-define a `Parser` so that all variables are kept after reading. Not doing this can break tests if you are re-parsing the environment for each example. Replace `Env.parse f` with `Env.parse f $ Env.kept` to recover how this module behaved prior to v1.1. ## [v1.2.0.0](https://github.com/freckle/freckle-app/compare/v1.1.0.0...v1.2.0.0) - Remove `Freckle.App.Logging`, integrate with [blammo][] instead. This will require the following end-user changes: - Remove `HasLogging` instance and add `HasLogger` This will require storing a `Logger` on your runtime `App` type, instead of a `LogLevel` (et al) in your static `AppSettings` type. (Or move to `runSimpleLoggingT`.) - Replace WAI middleware with [Blammo integration][blammo-wai] - Replace Yesod functions with [Blammo integration][blammo-yesod] And changes to environment variable values: - If using `LOG_OUTPUT=std(out|err)`, use `LOG_DESTINATION=std(out|err)` (note that `stdout` is the default) - If using `LOG_OUTPUT=file`, use `LOG_DESTINATION=@fancy.log` (yes, that's this option did) - If using `LOG_FORMAT=terminal`, use `LOG_FORMAT=tty` (note that this is the defualt) [blammo]: https://hackage.haskell.org/package/Blammo [blammo-wai]: https://github.com/freckle/blammo/#integration-with-wai [blammo-yesode]: https://github.com/freckle/blammo/#integration-with-yesod ## [v1.1.0.0](https://github.com/freckle/freckle-app/compare/v1.0.4.0...v1.1.0.0) - Require `MonadLoggerIO` in `makePostgresPool` (and so respect that logging context from DB activities). Previous behavior can be recovered by using `runNoLoggingT makePostgresPool`. - Re-implement `FronRow.App.Env` via external library, `envparse` Some conversions will be required: - `Reader a` should now be `Reader Error a` - `Parser a` should now be `Parser Error a` - `parse` should now be `parse id` - `var x X nonEmpty` should now be `var (x <=< nonempty) X mempty` Note that `(str <=< nonempty)` is redundant. - `var (f <$> g) X m` should now be `f <$> var g X m` Note that `def` will now need a value the same type as `g`, not `f`. - `switch` and `flag` no longer accept `def` (the non-active value is an implicit default; the previous behavior was kind of surprising and ambiguous). - `handleEither` has been removed. Users will have to parse a complete value and then further validate/throw externally. - Previously, we always behaved as if `keep` was applied. Add that explicitly if you need that behavior. ## [v1.0.4.0](https://github.com/freckle/freckle-app/compare/v1.0.3.0...v1.0.4.0) - Add `Freckle.App.Bugsnag` for Bugsnag logging in applications. - Increased default PG poolsize to 10. ## [v1.0.3.0](https://github.com/freckle/freckle-app/compare/v1.0.2.10...v1.0.3.0) - Add `Freckle.App.Memcache` for using memcached in Apps - Add `Freckle.App.Scientist` for using [scientist][] in Apps [scientist]: https://github.com/freckle/scientist-hs#readme ## [v1.0.2.10](https://github.com/freckle/freckle-app/compare/v1.0.2.9...v1.0.2.10) - Support GHC 9.0 and 9.2 - Change `Wai` function arguments for producing `RouteName` and `TraceId` to tags To maintain the same behavior, replace ```hs makeLoggingMiddleware app getRouteName getTraceId ... ``` With ```hs makeLoggingMiddleware app getTags ... where getTags req = catMaybes [ ("route", ) <$> getRouteName req , ("trace_id", ) <$> getTraceId req ] ``` And similar for `makeRequestMetricsMiddleware`. ## [v1.0.2.9](https://github.com/freckle/freckle-app/compare/v1.0.2.8...v1.0.2.9) - Add some common textual encoding functions to prelude ## [v1.0.2.8](https://github.com/freckle/freckle-app/compare/v1.0.2.7...v1.0.2.8) - Don't allow `aeson-2.0` ## [v1.0.2.7](https://github.com/freckle/freckle-app/compare/v1.0.2.6...v1.0.2.7) - Remove explicit `--region` in IAM DB token call - Relax lower-bounds throughout ## [v1.0.2.6](https://github.com/freckle/freckle-app/compare/v1.0.2.5...v1.0.2.6) - Add a looser lower-bound on `containers` ## [v1.0.2.5](https://github.com/freckle/freckle-app/compare/v1.0.2.4...v1.0.2.5) - Add a looser lower-bound on `bytestring` - Add a looser lower-bound on `template-haskell` ## [v1.0.2.4](https://github.com/freckle/freckle-app/compare/v1.0.2.3...v1.0.2.4) - Add a looser lower-bound on `base` ## [v1.0.2.3](https://github.com/freckle/freckle-app/compare/v1.0.2.2...v1.0.2.3) - Add Freckle-specific prelude. ## [v1.0.2.2](https://github.com/freckle/freckle-app/compare/v1.0.2.1...v1.0.2.2) - Target `hspec-junit-formatter-1.0.3.0` (use `1.1.0.0` in development) ## [v1.0.2.1](https://github.com/freckle/freckle-app/compare/v1.0.2.0...v1.0.2.1) - Add `denyFrameEmbeddingMiddleware` for denying HTML frame embedding. ## [v1.0.2.0](https://github.com/freckle/freckle-app/compare/v1.0.1.0...v1.0.2.0) - Add 'Freckle.App.Yesod.Route' to allow printing route names. ## [v1.0.1.0](https://github.com/freckle/freckle-app/compare/v1.0.0.4...v1.0.1.0) - Added `Freckle.App.Datadog.Gauge` for client side stateful gauges. - Added `Freckle.App.Datadog.Rts` for sending RTS statistics to DataDog. ## [v1.0.0.4](https://github.com/freckle/freckle-app/compare/v1.0.0.3...v1.0.0.4) - Support seconds or milliseconds in `PGSTATEMENTTIMEOUT` NOTE: We consider this a non-breaking change because the environment variable interface is backwards-compatible. By normal Haskell rules, it would be major since it's changing the type of something exported. - Add `respondQueryCanceled` Yesod Middlewares - Add `makeRequestMetricsMiddleware` ## [v1.0.0.3](https://github.com/freckle/freckle-app/compare/v1.0.0.2...v1.0.0.3) - Add `package.yaml` to `extra-source-files`. ## [v1.0.0.2](https://github.com/freckle/freckle-app/compare/v1.0.0.1...v1.0.0.2) - Extract tests that require `git` into a new suite. ## [v1.0.0.1](https://github.com/freckle/freckle-app/compare/v1.0.0.0...v1.0.0.1) - Ensure `release` GitHub Action completes properly. ## [v1.0.0.0](https://github.com/freckle/freckle-app/tree/v1.0.0.0) First tagged release.