Skip to content

Releases: obsidiansystems/rhyolite

v1.1.0.0

25 May 01:29
Compare
Choose a tag to compare

What's Changed

Full Changelog: 2023-08-03...v1.1.0.0

2023-08-03 (v1.0.0.0)

03 Aug 17:14
Compare
Choose a tag to compare

What's Changed

Full Changelog: 2023-01-26...2023-08-03

2023-01-26

26 Jan 13:46
Compare
Choose a tag to compare

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 and WrapNullable.

  • Add beam orphan instances for some functor types, such as Product and Proxy.

  • 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 to Rhyolite.Account.Groundhog.Types
  • Added Beam versions of Rhyolite.Task.Groundhog.Worker.taskWorker and Rhyolite.Task.Groundhog.Task, in Rhyolite.Task.Groundhog.Worker and Rhyolite.Task.Beam respectively.

  • Removed Rhyolite.Request.Common, now using functions from Aeson directly. Use decode' instead of decodeValue'.

  • 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' to openWebSocket and remove the previous definition of openWebSocket. 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 to Psql and move it to psql-simple-class.
      • Move Psql (formerly PostgresRaw) instance for groundhog's DbPersist to psql-simple-groundhog.
      • Remove fromIdRow from Rhyolite.Backend.DB.PsqlSimple
      • Move traceQuery and traceExecute 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 to Rhyolite.DB.Groundhog.Orphans in groundhog-legacy.
      • Move Network.PushNotification.Worker to groundhog-legacy and rename it to Rhyolite.Network.PushNotification.Worker.
      • Move Rhyolite.Backend.DB to groundhog-legacy and rename it to Rhyolite.DB.Groundhog.
      • Move the PostgresLargeObject class to psql-simple-class and move its groundhog-based instances to groundhog-legacy.
        • withStreamedLargeObject no longer requires groundhog, but does require a connection. Use liftWithConn to use it with groundhog.
      • Move Rhyolite.Backend.DB.Serializable to Database.PostgreSQL.Serializable in psql-serializable and move its groundhog-based instances to groundhog-legacy's Rhyolite.DB.Groundhog.Serializable module.
      • Move Rhyolite.Backend.Schema and Rhyolite.Backend.Schema.Class to Rhyolite.DB.Groundhog.Schema and Rhyolite.DB.Groundhog.Schema.Class in groundhog-legacy.
      • Move Rhyolite.Schema.Task and Rhyolite.Backend.Schema.Task to Rhyolite.Task.Groundhog, and move Rhyolite.Backend.TaskWorker to Rhyolite.Task.Groundhog.Worker, both in groundhog-legacy.
      • Move Rhyolite.Backend.Schema.TH to Rhyolite.DB.Groundhog.TH in groundhog-legacy.
    • Remove Rhyolite.Map.Monoidal. For =: use Data.Map.Monoidal.singleton instead, and for restrictKeys 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 project rhyolite-notify-listen. The module is now called Rhyolite.DB.NotifyListen. insertAndNotify and related classes and functions can now be found in the groundhog-legacy package in the Rhyolite.DB.NotifyListen.Groundhog module, and in notify-listen-beam for beam versions. The various notify functions now require Psql 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 and Rhyolite.Email to Rhyolite.Email in the new rhyolite-email package.
      • Provide more error information in the interface for sending an email in rhyolite-email.
      • The EmailEnv type has been changed to EmailConfig, which is a structured record type instead of a flat tuple.
    • Move LargeObjectId to psql-simple-class.
    • Remove the Rhyolite.TH module. Use file-embed instead.
    • Move Rhyolite.Backend.EmailWorker to Rhyolite.DB.Groundhog.EmailWorker in groundhog-legacy. Change the schema for QueuedEmail to contain a JSON blob of the Mail object instead of the rendered email bytestring. See the groundhog-legacy migration guide for more information.
    • Move the Account type to groundhog-legacy-types and move associated backend functionality to Rhyolite.DB.Groundhog.Account in groundhog-legacy.
    • Move Signed and MonadSign to signed-data. Move signWithKey, readSignedWithKey, SignT, etc to signed-data-clientsession. Move groundhog instances for MonadSign and SignT to Rhyolite.DB.Groundhog.Orphans.
    • Move Account to groundhog-legacy-types. Move backend code for accounts, e.g., ensureAccountExists to Rhyolite.Account.Groundhog in groundhog-legacy.
    • Move Rhyolite.Schema to groundhog-legacy-types.
    • Rename datastructures to semimap since it only contains SemiMap.
    • Move Rhyolite.Frontend.Widget, Rhyolite.Frontend.Form, and Rhyolite.Frontend.Modal.* to rhyolite-widgets.
  • New:

    • Add a Psql instance for beam's Pg
  • 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 by Logger.
  • Remove runPrerenderedRhyoliteWidget. Use runRhyoliteWidget instead.
  • runObeliskRhyoliteWidget now also returns a Dynamic AppWebSocket.
  • 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 queries
    • AuthMapV 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 and mapModalTM functions for changing the underlying monads of ModalT.
  • Fix bug in functorToWire causing SelectedCount of 0 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 project rhyolite-logging and re-export.
  • Add Rhyolite.Backend.DB.Serializable for doing PostgreSQL transactions in SERIALIZABLE isolation with automatic retrying on serialization errors.
  • Breaking change: Switch runDb to use the Serializable monad for all transactions. This monad is not a transformer and has very few instances. Notably, lifting IO into it must be done manually, and only with great care.
  • Add runDbReadOnlyRepeatableRead to RunDb to make streaming reads easier. Notably, this transaction mode allows MonadIO because it will never retry.
  • Fix thread-safety bug in firebaseWorker.
  • Breaking change: Rework MonadSign to look a lot more like MonadReader so that its instances can more easily avoid MonadIO.
  • Breaking change: Functions in Rhyolite.Backend.EmailWorker now have a constraint requiring that Serializable be the base monad.
  • Add PostgresRaw and PostgresLargeObject instances to SignT.
  • Bump postgresql-simple to avoid WARNING: 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...
Read more

2021-11-18

20 Nov 19:07
Compare
Choose a tag to compare

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 by Logger.
  • Remove runPrerenderedRhyoliteWidget. Use runRhyoliteWidget instead.
  • runObeliskRhyoliteWidget now also returns a Dynamic AppWebSocket.
  • 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 queries
    • AuthMapV 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

Read more