Changelog for freckle-app-1.9.1.0
Unreleased
v1.9.1.0
- Add
Freckle.App.Kafkafor producing kafka events
v1.9.0.3
- Use option
PGSCHEMAenvironment variable to set schema at connection start.
v1.9.0.2
- Fix for not setting ECS Metadata tags in
StatsClient
v1.9.0.1
-
Report errors getting ECS Metadata during
withStatsClientinitializationThis does change the type of
getEcsMetadata, but we consider it a patch-level bump because that module is very unlikely to be used directly.
v1.9.0.0
- Refactor
Freckle.App.Waiinterface - Add
addThreadContextFromStatsTags - Replace
HasXRayVaultDatawithMonadTracer - Introduce
AppT
v1.8.1.0
- Add
runDBSimplefor use cases where instrumentation is not valuable.
v1.8.0.0
- Fix bug: gauges not being published.
- Add HasVaultData type class to remove the dependency on Yesod's MonadHandler
v1.7.1.0
- Add Incremental CSV parsing
v1.7.0.0
-
Add XRay and EKG support to freckle-app's runDB.
This involves an breaking change in
runDB's constraints, thus the major version bump.
v1.6.0.3
-
Revert regrouping of
SqlErrorbyurlConsider
/foos/1vs/foos/2: grouping naively byurlmakes these two errors when we wanted them to be one. This can't be solved without knowledge of the routing system, so we can't do it from within this library as-is. Therefore, we've reverted the feature for now.
v1.6.0.2
- Strip query string from URLs used to group timeout exceptions in Bugsnag.
v1.6.0.1
- The built-in Bugsnag
BeforeNotifywill further groupSqlErrors that are timeouts (57014) by Request URL (when request info is present in theEvent)
v1.6.0.0
-
Remove
AppVersionThis also removes the
test-gitflag.This was over-engineered, in our opinion. If you're making use of the conventional
DD_variables that theStatsmodule expects, you should be able to:- Replace any
appVersion :: AppVersionwithappVersion :: Text - Replace
appVersion <- getAppVersionwithappVersion <- maybe "unknown" pack <$> lookupEnv "DD_VERSION" - Replace
avName appVersionwithappVersion - Remove uses of
avCreatedAt
- Replace any
-
Add
Freckle.App.Dotenv, wrappingdotenvAnd move
Freckle.App.Test.withAppto use it instead ofLoadEnv. This is behavior-neutral except:-
We no longer load
.envafter.env.test, we only load.env.testMissing variables should generate errors prompting you to copy values from the former to the latter as required.
-
We will verify the
.envfile against an.env.exampleif present.
-
-
Add
Freckle.App.Bugsnag.Metadata
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.Datadogmodules forFreckle.App.StatsequivalentsIt's not a drop-in, but the required changes should be mechanical:
- Instead of
HasDogStats{Client,Tags}, implement a singleHasStatsClient - Instead of
mkStatsClientusewithStatsClient(the new style ofrunApphad will enable that) - Use
taggedinstead of extra arguments to metric sends - Move to the new
Rts,Gauge, andMiddleware.Statsmodules
- Instead of
-
Change signature of
runAppandwithAppInstead of passing a loaded
App(or a function that loads anApp) torunAppandwithApp, you should now pass a function that takes a function and calls it on the loadedApp.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
runCapturedLoggingTWe can use
Blammo.Logging.Logger.newTestLoggerinstead. SeeMemcachedSpecas an example. -
Compatibility down to LTS 12.26 / GHC 8.4
v1.3.0.0
- Adjust
Freckle.App.Testinterface- Remove
runAppTest - Add
appExamplefor making a expectation concretelyAppExample - Add
expectationFailure, andpending(With)helpers inMonadIO
- Remove
v1.2.0.2
Env.keptcompatibility with envparse-0.5
v1.2.0.1
-
Use
Env.keptwith parsing that occurs inmakePostgresPoolThis ensure all
PGvariables 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 usemakePostgresPoolWith. -
Add
Freckle.App.Env.keptto re-define aParserso 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 fwithEnv.parse f $ Env.keptto 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
HasLogginginstance and addHasLoggerThis will require storing a
Loggeron your runtimeApptype, instead of aLogLevel(et al) in your staticAppSettingstype. (Or move torunSimpleLoggingT.) -
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), useLOG_DESTINATION=std(out|err)(note thatstdoutis the default) - If using
LOG_OUTPUT=file, useLOG_DESTINATION=@fancy.log(yes, that's this option did) - If using
LOG_FORMAT=terminal, useLOG_FORMAT=tty(note that this is the defualt)
-
v1.1.0.0
-
Require
MonadLoggerIOinmakePostgresPool(and so respect that logging context from DB activities).Previous behavior can be recovered by using
runNoLoggingT makePostgresPool. -
Re-implement
FronRow.App.Envvia external library,envparseSome conversions will be required:
-
Reader ashould now beReader Error a -
Parser ashould now beParser Error a -
parseshould now beparse id -
var x X nonEmptyshould now bevar (x <=< nonempty) X memptyNote that
(str <=< nonempty)is redundant. -
var (f <$> g) X mshould now bef <$> var g X mNote that
defwill now need a value the same type asg, notf. -
switchandflagno longer acceptdef(the non-active value is an implicit default; the previous behavior was kind of surprising and ambiguous). -
handleEitherhas been removed. Users will have to parse a complete value and then further validate/throw externally. -
Previously, we always behaved as if
keepwas applied. Add that explicitly if you need that behavior.
-
v1.0.4.0
- Add
Freckle.App.Bugsnagfor Bugsnag logging in applications. - Increased default PG poolsize to 10.
v1.0.3.0
-
Add
Freckle.App.Memcachefor using memcached in Apps -
Add
Freckle.App.Scientistfor using scientist in Apps
v1.0.2.10
-
Support GHC 9.0 and 9.2
-
Change
Waifunction arguments for producingRouteNameandTraceIdto tagsTo 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
--regionin 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(use1.1.0.0in development)
v1.0.2.1
- Add
denyFrameEmbeddingMiddlewarefor 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.Gaugefor client side stateful gauges. - Added
Freckle.App.Datadog.Rtsfor sending RTS statistics to DataDog.
v1.0.0.4
-
Support seconds or milliseconds in
PGSTATEMENTTIMEOUTNOTE: 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
respondQueryCanceledYesod Middlewares -
Add
makeRequestMetricsMiddleware
v1.0.0.3
- Add
package.yamltoextra-source-files.
v1.0.0.2
- Extract tests that require
gitinto a new suite.
v1.0.0.1
- Ensure
releaseGitHub Action completes properly.
v1.0.0.0
First tagged release.