Changelog of @hackage/freckle-app 1.5.1.0

Unreleased

v1.5.0.1

  • Export Freckle.App.Stats.tagsL

v1.5.0.1

  • Relax lower bound on primitive

v1.5.0.0

  • Remove Freckle.App.Datadog modules for Freckle.App.Stats equivalents

    It's not a drop-in, but the required changes should be mechanical:

    • Instead of HasDogStats{Client,Tags}, implement a single HasStatsClient
    • Instead of mkStatsClient use withStatsClient (the new style of runApp had will enable that)
    • Use tagged instead of extra arguments to metric sends
    • Move to the new Rts, Gauge, and Middleware.Stats modules
  • Change signature of runApp and withApp

    Instead of passing a loaded App (or a function that loads an App) to runApp and withApp, you should now pass a function that takes a function and calls it on the loaded App.

    This is necessary for apps that hold onto values that require cleanup, like withStatsClient.

    -- This doesn't work
    loadApp :: IO App
    loadApp = do
      -- ...
      withStatsClient $ \appStatsClient -> do
        -- ???
    
    -- This does
    loadApp :: (App -> IO a) -> IO a
    loadApp f = do
      -- ...
      withStatsClient $ \appStatsClient -> do
        f App { .. }
    

    The old form can be trivially converted to the new form like so,

    loadApp :: (App -> IO a) -> IO a
    loadApp f = f =<< loadApp'
    
    loadApp' :: IO App
    loadApp' = -- old code
    
  • Add functions that check properties that we like to commonly test.

v1.4.0.0

  • Remove runCapturedLoggingT

    We can use Blammo.Logging.Logger.newTestLogger instead. See MemcachedSpec as an example.

  • Compatibility down to LTS 12.26 / GHC 8.4

v1.3.0.0

  • Adjust Freckle.App.Test interface
    • Remove runAppTest
    • Add appExample for making a expectation concretely AppExample
    • Add expectationFailure, and pending(With) helpers in MonadIO

v1.2.0.2

  • Env.kept compatibility with envparse-0.5

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

  • 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

    • 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)

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

  • Add Freckle.App.Bugsnag for Bugsnag logging in applications.
  • Increased default PG poolsize to 10.

v1.0.3.0

  • Add Freckle.App.Memcache for using memcached in Apps

  • Add Freckle.App.Scientist for using scientist in Apps

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

    makeLoggingMiddleware app getRouteName getTraceId ...
    

    With

    makeLoggingMiddleware app getTags ...
      where
        getTags req = catMaybes
          [ ("route", ) <$> getRouteName req
          , ("trace_id", ) <$> getTraceId req
          ]
    

    And similar for makeRequestMetricsMiddleware.

v1.0.2.9

  • Add some common textual encoding functions to prelude

v1.0.2.8

  • Don't allow aeson-2.0

v1.0.2.7

  • Remove explicit --region in IAM DB token call
  • Relax lower-bounds throughout

v1.0.2.6

  • Add a looser lower-bound on containers

v1.0.2.5

  • Add a looser lower-bound on bytestring
  • Add a looser lower-bound on template-haskell

v1.0.2.4

  • Add a looser lower-bound on base

v1.0.2.3

  • Add Freckle-specific prelude.

v1.0.2.2

  • Target hspec-junit-formatter-1.0.3.0 (use 1.1.0.0 in development)

v1.0.2.1

  • Add denyFrameEmbeddingMiddleware for denying HTML frame embedding.

v1.0.2.0

  • Add 'Freckle.App.Yesod.Route' to allow printing route names.

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

  • 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

  • Add package.yaml to extra-source-files.

v1.0.0.2

  • Extract tests that require git into a new suite.

v1.0.0.1

  • Ensure release GitHub Action completes properly.

v1.0.0.0

First tagged release.