freckle-app

Haskell application toolkit used at Freckle.


CHANGELOG | LICENSE

Changes

Unreleased

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.