on ae@expose-mkassets help sign in
obelisk/ChangeLog.md
105 lines 10 kB history raw
1# Revision history for obelisk
3This project's release branch is `master`. This log is written from the perspective of the release branch: when changes hit `master`, they are considered released, and the date should reflect that release.
5## Unreleased
7* Fully support HTTP [Range](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range) requests on static assets to support Safari. ([#664](https://github.com/obsidiansystems/obelisk/pull/664))
8* Support non-EC2 deployments. ([#658](https://github.com/obsidiansystems/obelisk/pull/658))
9* Fix `ob deploy test android` to work. ([#645](https://github.com/obsidiansystems/obelisk/pull/645))
10* Fix vulnerability where Android deployments would leave signing keys in the nix store which is world readable. ([#645](https://github.com/obsidiansystems/obelisk/pull/645)) (Thanks to [kmicklas](https://github.com/kmicklas) for the report.)
11* Add `Obelisk.Backend.runBackendWith` to allow several customizations. ([#668](https://github.com/obsidiansystems/obelisk/pull/668), [#644](https://github.com/obsidiansystems/obelisk/pull/644))
12* Add `ob profile` command to run Obelisk projects with profiling. `ob profile` works like `ob run`, but instead of using `ghci`, it builds an executable that is built with profiling enabled. ([#654](https://github.com/obsidiansystems/obelisk/pull/654))
14## v0.6.0.0 - 2020-02-21
16* Fix a bug in `Obelisk.Route.Frontend` where `routeLink`, `routeLinkDynAttr`, and `dynRouteLink` would not behave exactly like `<a href="...">` when run by JavaScript. These functions now scroll to the top of the page when the link is clicked. ([#540](https://github.com/obsidiansystems/obelisk/pull/540))
17* Fix a bug in `ob run`/`ob watch`/`ob repl` where nested Obelisk projects would also be loaded into the session. These are now ignored. ([#652](https://github.com/obsidiansystems/obelisk/pull/652))
18* Improve behavior of `ob run`/`ob watch`/`ob repl` when multiple packages with the same name are encountered. Obelisk now issues a warning and tells you which one it will use. ([#653](https://github.com/obsidiansystems/obelisk/pull/653))
19* Removed `Obelisk.Backend.mkRouteToUrl` since it is easily written in terms of `Obelisk.Route.renderObeliskRoute`:
21 mkRouteToUrl validFullEncoder (k :/ v) = renderObeliskRoute validFullEncoder (FullRoute_Frontend (ObeliskRoute_App k) :/ v)
23* Add `Obelisk.Backend.renderAllJsPath` to expose URL path to `ghcjs/all.js`. ([#545](https://github.com/obsidiansystems/obelisk/pull/545))
24* Add argument to `serveDefaultObeliskApp`, `serveObeliskApp`, and `serveGhcjsApp` to take the path to `all.js` instead of hard-coding it. ([#545](https://github.com/obsidiansystems/obelisk/pull/545))
26## v0.5.0.0 - 2020-02-07
28* Add `Obelisk.Route.(?/)`, a convenience function for constructing routes nested in `Maybe`. ([#457](https://github.com/obsidiansystems/obelisk/pull/457))
29* Add local unpacked packages to the `ob run`, `ob watch`, and `ob repl` sessions. Any `.cabal` or hpack package inside the current obelisk project will be loaded into the session. For `ob run`/`ob watch` this means the session will automatically reload when you save a source file in any of those packages. For `ob repl` it means that `:r` will reload changes to any of those packages. There are some edge cases where this integration is still rough. Report any issues you encounter. ([#489](https://github.com/obsidiansystems/obelisk/pull/489))
30* Add `ob hoogle` command to start a local [Hoogle](https://hoogle.haskell.org/) server for the project. ([#628](https://github.com/obsidiansystems/obelisk/pull/628))
31* `ob thunk pack` will now attempt to automatically detect if the thunk is a private or public repo. To avoid this detection, specify `--private` or `--public` manually. ([#607](https://github.com/obsidiansystems/obelisk/pull/607))
32* Fix a bug in the plain git thunk loader for thunks marked as 'private' when the revision is not in the default branch. ([#648](https://github.com/obsidiansystems/obelisk/pull/648))
33* Improve handling of runtime nix dependencies. This may fix some issues encountered particularly by users on systems other than NixOS.
35## v0.4.0.0 - 2020-01-10
37* Bump reflex-platform which, notably, bumps nixpkgs to 19.09. ([#585](https://github.com/obsidiansystems/obelisk/pull/585))
38* Add new thunk loader for Git repositories that supports `file://` Git remotes and supports private repositories via `builtins.fetchGit` for private repositories (when the `git.json` file specifies `"private": true`). ([#594](https://github.com/obsidiansystems/obelisk/pull/594))
39* Add a new thunk loader for GitHub repositories that uses `builtins.fetchTarball` for public repositories to increase loader performance and uses `fetchFromGitHub` for private repositories (when the `github.json` file specifies `"private": true`). Note that `fetchFromGitHub` requires some Nix configuration for the Nix builder to access the repository. If `ob thunk pack` fails in this case, use `-v` to see Nix's helpful message. ([#594](https://github.com/obsidiansystems/obelisk/pull/594))
40* Add `--public`/`--private` options to `ob thunk pack` to specify if a repository should be treated as a public or private. ([#594](https://github.com/obsidiansystems/obelisk/pull/594))
41* Improve error messaging when a dependency doesn't have the expected `.cabal` or `package.yaml` file. ([#597](https://github.com/obsidiansystems/obelisk/pull/597))
42* Improve the skeleton in small ways. ([#593](https://github.com/obsidiansystems/obelisk/pull/593), [#589](https://github.com/obsidiansystems/obelisk/pull/589))
43* Fix `ob` commands to again support running from any subdirectory of an obelisk project ([#591](https://github.com/obsidiansystems/obelisk/pull/591))
44* Add `reflex-platform-func` argument to Obelisk's `default.nix`. It defaults to it's prior behavior of using the reflex-platform in in `dep`. ([#612](https://github.com/obsidiansystems/obelisk/pull/612))
46## v0.3.0.0 - 2019-12-20
48* Change the structure of Obelisk routes to use a designated
49 `FullRoute` type. This combines frontend and backend routes into one
50 structure. This is a **breaking** change which requires Obelisk apps
51 to take specific migrations. They are:
52 * Rewrite the implementation of `_backend_routeEncoder` in
53 `Backend` to use `mkFullRouteEncoder` instead of
54 `handleEncoder`. Specifically, the backend and frontend cases of
55 the top-level `pathComponentEncoder` become the second and third
56 arguments of `mkFullRouteEncoder` respectively, while the
57 missing route becomes the first argument. An example of how to
58 do this is available in [a reflex-examples
59 commit](https://github.com/reflex-frp/reflex-examples/commits/28f566c3e7dc615578dc74297b7c620c1f13683e).
60 * Replace type constructions of `InL` with `FullRoute_Backend` and
61 `InR` with `FullRoute_Frontend`.
62* Generalised `pathSegmentEncoder`, added `pathFieldEncoder`.
63* Added some `Prism`s to the encoder library for manipulating `DSum`s.
64* Add `ob doc` command, which lists paths to haddock documentation for specified packages.
65* Bump reflex-platform so that obelisk now uses GHC 8.6.5 and the nixos-19.03 nixpkgs set.
66* Add support in `obelisk-route` for single parameters in URL paths.
67* Bump reflex-platform so that obelisk now uses reflex-dom 0.5.2.0.
68* Use a `--pure` nix shell in `ob run` for parity with `ob repl` and more resilience against "works on my machine".
69* Pin usages of `<nixpkgs>` in obelisk thunks, etc. to the nixpkgs used by the project's obelisk impl.
70* Backport ACMEv2 support in obelisk server to regain LetsEncrypt account creation.
71* Enable HTTPS in `ob run`.
72* `ob run` now handles `ghci` errors better, and includes a custom `ghcid`
73 version. As a result, you no longer need to have ghcid installed to
74 use `ob run`, as we provide one for you.
75* `ob` commands now complain less on systems with umasks other than `0022`.
76* Ignore package environment files in `ob run` and `ob repl`.
77* Add `Obelisk.Route.Frontend.routeLinkDynAttr`.
79## v0.2.0.0 - 2019-8-17
81* Configs become ByteStrings.
82* FrontendConfigsT has been changed into ConfigsT and configs are made available via getConfig/getConfigs
83 * The frontend will still only have access to configs that are placed in config/frontend and config/common, while the backend has access to the entire contents of the config directory via `Obelisk.ExecutableConfig.Lookup.getConfigs`.
84* The backend no longer runs in BackendConfigsT.
85* Add tabulation package. See Data.Tabulation for details.
86* Add encoders for `DMap`, `HasFields` (cf. Data.Tabulation), and JSON.
87* Use IP address for nginx proxy pass instead of localhost
89## v0.1.1.0 - 2019-05-17
91* Fix crashes of Android apps on 32-bit ARM devices.
92* Provide a way to indicate acceptance of the Android SDK license by passing `config.android_sdk.accept_license = true;` in the arguments to the import of `.obelisk/impl` in the project's `default.nix`.
93* Add `COMPLETE` pragma to `(:/)`. Using this pattern synonym should no longer generate spurious warnings about non-exhaustive pattern matching.
94* Make asset path hashing strict (see `Obelisk.Asset.Gather`)
95* Add the `ob shell` command to enter a nix shell for an obelisk project
96* Allow skeleton's obelisk to be overridden. This changes the skeleton's default.nix interface: the arguments that it used to take are now part of the new "obelisk" argument.
97* Removed `MonadIO` from `ObeliskWidget` to prevent accidental IO during prerendering. If you need to do IO in a widget it should be on the right hand side of a `prerender`.
98* Significantly changed the interface to the "executable config" packages. `obelisk-executable-config-lookup` is a new internal package which looks up all configs in a platform-specific way. `obelisk-executable-frontend` and `obelisk-executable-backend` provide MTL-style monad classes (`HasFrontendConfigs` and `HasBackendConfigs`) which the frontend and backend, respectively, can use to look up configs. This replaces the old `get` function which ran in `IO`.
99* Add a flag to force thunk packing even if there are unpushed changes in the unpacked thunk.
102## v0.1.0.0 - 2019-03-29
104* Use reflex-dom's `HydrationDomBuilder` to "hydrate" statically rendered DOM served by the Obelisk backend (rather than re-creating DOM and replacing it all).
105* Add `HasCookies` and `CookiesT` to allow `ObeliskWidget`s to access cookies during static and "hydrated" DOM rendering.