Releases: obsidiansystems/rhyolite
v1.1.0.0
What's Changed
- Add missing quotes by @alexfmpe in #194
- obelisk 1.1 -> 1.3 by @ali-abrar in #211
- Make authentication easier to use and fix some things about ErrorV by @cgibbard in #213
- widgets: remove Reflex.Dom.Modal.* by @ali-abrar in #210
Full Changelog: 2023-08-03...v1.1.0.0
2023-08-03 (v1.0.0.0)
What's Changed
- Fix typo by @alexfmpe in #205
- Update gitignore by @alexfmpe in #202
- Fix Cabal Definitions by @cidkidnix in #206
- Purify function argument to decrypt token in handleAuthenticatedQuery by @cgibbard in #208
- Update for ghc-8.10 and updated packages by @ali-abrar in #204
Full Changelog: 2023-01-26...2023-08-03
2023-01-26
2023-01-26
-
Breaking: Rhyolite.Frontend.Cookie now always Base64 encodes cookies
-
change taskWorker to not manage the hasRun flag. For the old behavior, use
taskWorker1
which adds back the at-most-once execution behavior. The old_task_hasRun
field of Task is a separate argument. -
Task type no longer uses lenses for field accessors. use field labels or regular functions instead.
-
Fix
Rhyolite.DB.Beam.current_timestamp_
for PostgreSQL server instances whose time zone is not set to UTC. -
Add helper types for beam code, namely
WrapColumnar
andWrapNullable
. -
Add beam orphan instances for some functor types, such as
Product
andProxy
. -
Bump obelisk 1.0.0.0 and reflex-platform (0.9.2.0)
-
Add rhyolite-account-types and rhyolite-account-backend for use with beam-based rhyolite projects
- Moved groundhog-legacy's
Rhyolite.Account
module toRhyolite.Account.Groundhog.Types
- Moved groundhog-legacy's
-
Added Beam versions of
Rhyolite.Task.Groundhog.Worker.taskWorker
andRhyolite.Task.Groundhog.Task
, inRhyolite.Task.Groundhog.Worker
andRhyolite.Task.Beam
respectively. -
Removed
Rhyolite.Request.Common
, now using functions from Aeson directly. Usedecode'
instead ofdecodeValue'
. -
Bump vessel to 0.2.1.0 (pre-release)
-
Add mapAuthenticatedV
-
Extend AuthenticatedV to have a personal view component in addition to private and public ones. Personal views are similar to private ones
in that they require a token to access, but are computed separately per-user.
They're specifically for the case that we expect different users' views to have nothing in common with one another. -
Breaking changes:
- Rename
Rhyolite.Frontend.App.openWebSocket'
toopenWebSocket
and remove the previous definition ofopenWebSocket
. To get the same output as before:(_appWebSocket_notification x, _appWebSocket_response x)
. - Remove the
rhyolite-backend-snap
package. It has been released as snap-stream. Use that package instead. - Remove the
backend-db
package. See the groundhog-legacy migration guide and the notes below:- Remove
Rhyolite.Backend.DB.PsqlSimple.Orphans
. Changes have been moved our fork of postgresql-simple. - Rename
PostgresRaw
toPsql
and move it topsql-simple-class
. - Move Psql (formerly PostgresRaw) instance for groundhog's
DbPersist
to psql-simple-groundhog. - Remove
fromIdRow
fromRhyolite.Backend.DB.PsqlSimple
- Move
traceQuery
andtraceExecute
to psql-simple-class - Use
postgresql-simple-interpolate
for quasiquotated postgresql-simple queries. The following function names have changed:- queryQ -> iquery
- executeQ -> iexecute
- executeQ_ -> iexecute_
- traceQueryQ -> itraceQuery (defined in psql-simple-class)
- traceExecuteQ -> itraceExecute (defined in psql-simple-class)
- traceExecuteQ_ -> itraceExecute_ (defined in psql-simple-class)
- Remove
Rhyolite.Backend.DB.PsqlSimple
as all of its functionality has been moved elsewhere. - Move instances from
Database.Groundhog.Postgresql.Orphans
toRhyolite.DB.Groundhog.Orphans
in groundhog-legacy. - Move
Network.PushNotification.Worker
togroundhog-legacy
and rename it toRhyolite.Network.PushNotification.Worker
. - Move
Rhyolite.Backend.DB
togroundhog-legacy
and rename it toRhyolite.DB.Groundhog
. - Move the
PostgresLargeObject
class topsql-simple-class
and move its groundhog-based instances togroundhog-legacy
.withStreamedLargeObject
no longer requires groundhog, but does require a connection. UseliftWithConn
to use it with groundhog.
- Move
Rhyolite.Backend.DB.Serializable
toDatabase.PostgreSQL.Serializable
inpsql-serializable
and move its groundhog-based instances togroundhog-legacy
'sRhyolite.DB.Groundhog.Serializable
module. - Move
Rhyolite.Backend.Schema
andRhyolite.Backend.Schema.Class
toRhyolite.DB.Groundhog.Schema
andRhyolite.DB.Groundhog.Schema.Class
ingroundhog-legacy
. - Move
Rhyolite.Schema.Task
andRhyolite.Backend.Schema.Task
toRhyolite.Task.Groundhog
, and moveRhyolite.Backend.TaskWorker
toRhyolite.Task.Groundhog.Worker
, both ingroundhog-legacy
. - Move
Rhyolite.Backend.Schema.TH
toRhyolite.DB.Groundhog.TH
ingroundhog-legacy
.
- Remove
- Remove
Rhyolite.Map.Monoidal
. For=:
useData.Map.Monoidal.singleton
instead, and forrestrictKeys
use monoidal-containers >= 0.6.1.0. - Remove rhyolite-aeson-orphans. It has been renamed and moved to bytestring-aeson-orphans and is now used as a dependency.
- Remove the aeson orphan instances for Alt, Any and Down.
- Move
Rhyolite.Backend.Listen
to its own projectrhyolite-notify-listen
. The module is now calledRhyolite.DB.NotifyListen
.insertAndNotify
and related classes and functions can now be found in the groundhog-legacy package in theRhyolite.DB.NotifyListen.Groundhog
module, and innotify-listen-beam
for beam versions. The variousnotify
functions now requirePsql m
. - Remove Rhyolite.HList.
- Remove Data.MonoidMap. It has been moved to monoid-map and is now used as a dependency.
- Narrow the type of
signWithKey
so that the input type matches the output's phantom type parameter. - Move
Rhyolite.Backend.Email
andRhyolite.Email
toRhyolite.Email
in the newrhyolite-email
package.- Provide more error information in the interface for sending an email in
rhyolite-email
. - The
EmailEnv
type has been changed toEmailConfig
, which is a structured record type instead of a flat tuple.
- Provide more error information in the interface for sending an email in
- Move
LargeObjectId
topsql-simple-class
. - Remove the
Rhyolite.TH
module. Usefile-embed
instead. - Move
Rhyolite.Backend.EmailWorker
toRhyolite.DB.Groundhog.EmailWorker
ingroundhog-legacy
. Change the schema forQueuedEmail
to contain a JSON blob of theMail
object instead of the rendered email bytestring. See the groundhog-legacy migration guide for more information. - Move the
Account
type togroundhog-legacy-types
and move associated backend functionality toRhyolite.DB.Groundhog.Account
ingroundhog-legacy
. - Move
Signed
andMonadSign
tosigned-data
. MovesignWithKey
,readSignedWithKey
,SignT
, etc tosigned-data-clientsession
. Move groundhog instances forMonadSign
andSignT
toRhyolite.DB.Groundhog.Orphans
. - Move
Account
togroundhog-legacy-types
. Move backend code for accounts, e.g.,ensureAccountExists
toRhyolite.Account.Groundhog
ingroundhog-legacy
. - Move
Rhyolite.Schema
togroundhog-legacy-types
. - Rename
datastructures
tosemimap
since it only contains SemiMap. - Move
Rhyolite.Frontend.Widget
,Rhyolite.Frontend.Form
, andRhyolite.Frontend.Modal.*
torhyolite-widgets
.
- Rename
-
New:
- Add a
Psql
instance for beam'sPg
- Add a
-
Version bumps:
- vessel 0.2.0.0
2021-11-18
- Fixed a bug in
handleAuthMapQuery
where tokens were always validated
2021-11-16
- Rhyolite.Concurrent: add taggedWorker to make it easier to determine the source of error messages
- Bump groundhog
- Bump obelisk (develop as of 2021-04-19) and reflex-platform (0.7.1.0)
- Remove rhyolite-logging and use monad-logger-extras in rhyolite-db instead.
LoggingEnv
is replaced byLogger
. - Remove
runPrerenderedRhyoliteWidget
. UserunRhyoliteWidget
instead. runObeliskRhyoliteWidget
now also returns a DynamicAppWebSocket
.- Emails
- separate build and send for widget email
- Update widget emails for newer routes.
- Use a record for email configuration.
- Add a function for email with a StaticWidget
- Simple authenticated queries
ErrorV
vessel captures logic for possibly failing queriesAuthMapV
gathers queries associated to different identities so that they can be processed together.AuthenticatedV
distinguishes between public queries that need no authentication and private queries which do.
2020-04-28
- Bump Obelisk to version 0.8 which includes a bump to reflex-platform and nixpkgs 19.09
2020-01-10
- Add
mapModalTM
,mapModalT
andmapModalTM
functions for changing the underlying monads ofModalT
. - Fix bug in
functorToWire
causingSelectedCount
of0
to be considered non-mempty. - Fix regression in rhyolite-frontend so that it builds in GHCJS again
2019-12-20
- Move
Rhyolite.Backend.Logging
to its own projectrhyolite-logging
and re-export. - Add
Rhyolite.Backend.DB.Serializable
for doing PostgreSQL transactions inSERIALIZABLE
isolation with automatic retrying on serialization errors. - Breaking change: Switch
runDb
to use theSerializable
monad for all transactions. This monad is not a transformer and has very few instances. Notably, liftingIO
into it must be done manually, and only with great care. - Add
runDbReadOnlyRepeatableRead
toRunDb
to make streaming reads easier. Notably, this transaction mode allowsMonadIO
because it will never retry. - Fix thread-safety bug in
firebaseWorker
. - Breaking change: Rework
MonadSign
to look a lot more likeMonadReader
so that its instances can more easily avoidMonadIO
. - Breaking change: Functions in
Rhyolite.Backend.EmailWorker
now have a constraint requiring thatSerializable
be the base monad. - Add
PostgresRaw
andPostgresLargeObject
instances toSignT
. - Bump
postgresql-simple
to avoidWARNING: There is no transaction in progress
when there is a serialization error.
2019-10-20
- Deprecated runPrerenderedRhyoliteWidget, use runRhyoliteWidget instead.
- Use GHC 8.6. This necessitated bumps to
- dependent-sum-aeson-orphans
- gargoyle
- ground...
2021-11-18
2021-11-18
- Fixed a bug in
handleAuthMapQuery
where tokens were always validated
2021-11-16
- Rhyolite.Concurrent: add taggedWorker to make it easier to determine the source of error messages
- Bump groundhog
- Bump obelisk (develop as of 2021-04-19) and reflex-platform (0.7.1.0)
- Remove rhyolite-logging and use monad-logger-extras in rhyolite-db instead.
LoggingEnv
is replaced byLogger
. - Remove
runPrerenderedRhyoliteWidget
. UserunRhyoliteWidget
instead. runObeliskRhyoliteWidget
now also returns a DynamicAppWebSocket
.- Emails
- separate build and send for widget email
- Update widget emails for newer routes.
- Use a record for email configuration.
- Add a function for email with a StaticWidget
- Simple authenticated queries
ErrorV
vessel captures logic for possibly failing queriesAuthMapV
gathers queries associated to different identities so that they can be processed together.AuthenticatedV
distinguishes between public queries that need no authentication and private queries which do.
What's Changed
- add aeson-orphans, datastructures... by @hSloan in #1
- GHC 8.4 support by @srid in #2
- Add PostgresLargeObject instance for ReaderT by @3noch in #3
- Support GHC8 (?) by @3noch in #4
- Separate rhyolite-backend-db by @ali-abrar in #9
- Move to MonoidalMap by @ali-abrar in #10
- support regular data declarations for HasRequest TH deriving by @danbornside in #11
- Rhyolite.Schema: Don't require Read instance for Json by @ali-abrar in #13
- PsqlSimple: Add traceQueryQ by @ali-abrar in #14
- Update PsqlSimple.hs by @vaibhavsagar in #15
- WIP: Coalesce very frequent view updates using the view monoid. by @xplat in #20
- Remove DSum and DMap Aeson instances by @3noch in #24
- enable log file rotation; log with timestamps by @danbornside in #26
- Removes some instances that have moved into
reflex
. by @dalaing in #25 - Separate Gargoyle functions into new package by @3noch in #17
- Snapless websocket handling by @3noch in #18
- Tezos reunification by @danbornside in #22
- Export Rhyolite overrides for use in Obelisk by @matthewbauer in #27
- Uncomment instance of Prerender for RhyoliteWidget by @cgibbard in #34
- WIP Get master changes back into develop by @Ericson2314 in #35
- Remove WebSocketUrl and associated conversions by @ali-abrar in #36
- systemd again by @ali-abrar in #38
- Bump groundhog by @ali-abrar in #40
- Bump groundhog, put systemd behind flag, remove WebSocketUrl by @ali-abrar in #39
- Use an app-supplied GADT for db notifications by @ali-abrar in #41
- Drop LoginError by @luigy in #43
- fix worker latchup by @danbornside in #47
- Db obelisk routes encoders by @danbornside in #45
- Add form helpers by @luigy in #46
- frontend-forms: Make the error type a parameter by @Ericson2314 in #49
- frontend-forms: Make the validation function Behavior -> BehaviorValidation --- blocked on #49 by @Ericson2314 in #50
- WIP: Remove Rhyolite.Frontend.Request by @ali-abrar in #31
- Hydration by @ali-abrar in #44
- An extensible list widget by @ali-abrar in #52
- Point back to upstream version of monoidal-containers by @luigy in #51
- Add monoidal-containers override to overrideSrcs by @luigy in #54
- Disallow using ExceptT and similar monads to host runDb calls. by @xplat in #57
- Add precise control of feedback in validationInput by @meditans in #60
- A whole bunch of miscellaneous stuff that happened on a random branch for some reason. by @cgibbard in #61
- WIP: Add HasChangeNotification by @luigy in #48
- Bump obelisk by @alexfmpe in #62
- Add setExpiringCookie function by @meditans in #65
- Fix typos by @alexfmpe in #75
- Make the logging filter configurable for the min level it logs by @dfordivam in #78
- Passthrough arguments to obelisk by @alexfmpe in #79
- Update Changelog for withLoggingMinLevel by @3noch in #80
- Update rhyolite's dependencies and eliminate some (now-)redundant code by @ali-abrar in #85
- Remove Rhyolite.Backend.Snap by @ali-abrar in #86
- frontend: use now-upstreamed functions in Frontend.App and remove dep… by @ali-abrar in #87
- Add Rhyolite.Frontend.Modal.* by @3noch in #81
- Fix missing dependency for gargoyle-postgresql-nix by @jonored in #91
- Make logging for websocket errors configurable by @3noch in #89
- Add runObeliskRhyoliteWidget, standardPipeline. by @cgibbard in #70
- Clean up by @3noch in #93
- Update to use vessel by @ali-abrar in #94
- Include parse error and type name in decode failur for JSON instances by @danbornside in #98
- Remove some warnings from incorrect option flags by @alexfmpe in #101
- Make simpler email template by @Ericson2314 in #104
- Remove outdated reference to rhyolite-backend-db-gargoyle by @alexfmpe in #110
- Add runRhyoliteWidget to provide AppWebSocket by @dfordivam in #114
- Remove duplicated entries from changelog by @alexfmpe in #111
- Bump obelisk for GHC 8.6 by @3noch in #95
- Use serializable isolation with retry everywhere -- safely by @3noch in #106
- Update dependencies for better serializable support by @3noch in #117
- loop harder on notify thread. by @danbornside in #116
- Bump obelisk to version v0.3 by @3noch in #119
- Add mapModalT function. by @eskimor in #105
- Be nice to bad ViewSelectors that don't filter out 0s by @3noch in #120
- Make commit with thoughts from #120 description by @Ericson2314 in #121
- Add one-line module documentation by @meditans in #122
- Better CI coverage by @3noch in #125
- Fix Rhyolite.Frontend.App on GHCJS by @3noch in #124
- Bump obelisk for nixpkgs 19.09 by @3noch in #123
- Bump gargoyle to remove Static.Which ambiguity by @3noch in #126
- Bump obelisk by @alexfmpe in #129
- Bump obelisk to 0.7.0.1 by @3noch in #130
- Add HasConfigs instance for RhyoliteWidget by @srid in #132
- Add HasConfigs instance for ModalT by @srid in #135
- Fix numbering by @alexfmpe in #136
- Add a function for email with a StaticWidget by @jonored in #88
- Create a
RawTask
and rebuildTask
on top of it. ---- includes #63 by @Ericson2314 in https://github.com/obsidiansystems/rhyolite/pull...