v1.0.0
Two years after the first public release of IHP Iβm very happy and proud to announce the release of version 1.0! π
β Read the full release announcement on the IHP Website.
IHP is a modern batteries-included haskell web framework, built on top of Haskell and Nix. Blazing fast, secure, easy to refactor and the best developer experience with everything you need - from prototype to production.
Major Changes
-
π¨ Bootstrap 5:
We've finally upgraded from Bootstrap 4 to Bootstrap 5 π
E.g. all forms rendered withformFor
now expect you're using bootstrap 5 by default. Bootstrap 4 is still supported and available if needed, e.g. if you don't want to update your application. -
π» M1 Builds:
Thanks to a new mac mini sponsored by MacStadium, we now have prebuilt binaries for Apple M1 devices. Previously it could take up multiple hours to compile everything needed for IHP from scratch. Now this just takes a minute of downloading binaries.
-
ποΈ Schema Designer: Index Management
The IHP Schema Designer now supports creating, editing and deleting column indexes from the GUI. Previously this was only possible by editing theSchema.sql
manually: -
π Smaller & Faster Production Builds
We've optimized the nix build process. Previously when building for production, the output of the nix build process contained many dev tools, like the Postgres server and Haskell Language Server. These are not needed in production. With the recent changes they're excluded from the production build. This saves tons of space. E.g. when packaging a simple IHP app, the file size of the docker image moved from 300MB -> 80MB.The build process now uses all available cores when calling
make
. This will speed up builds that rely on many IHP Scripts.
Other Changes
- Removed github discussions from help popover
- Fixed darkmode design of help popover
- Run :l Main automatically when opening ghci
- Added callstacks to exceptions thrown during config
- added deepseq constraint on Enum so that paramList works as expected.
- Add hs-brolti and wai-middleware-brotli nix config
- Add hs-brotli wai-middleware-brotli To build
- Updated ihp-hsx package definitions
- Enabled split sections for app
- Fixed dev server start fails when build/ihp-lib points to a non existing directory
- Use
record.field
syntax instead ofget #field record
in docs - Added docs on dot notation
- Removed outdated note on unsupported syntax in HSX
- currentAdmin, currentAdminOrNothing, currentAdminId, ensureIsAdmin now works without explicit type passed
- Added generic currentRoleOrNothing
- Fixed haddock build
- Tried adding failing test for https://github.com/digitallyinduced/ihp/issues/1451
- Improve error report when when parsing the Schema.sql fails
- Added note on contributing docs
- Use dot notation in ModelSupport
- Make editor docs more visible
- Updated links to mailing list
- Improved support for preEscapedTextValue
- Refactored ConvertibleStrings instance to use ApplyAttribute instance
- adding some docs on using scripts from ghci
- added testConfig example for script with different logging level
- switch appConfig to testConfig for consistency
- Made a specific example for importing Config and running it from ghci
- Added ParPat and working on ConPat so that generic lambda pattern matching works in HSX
- More of the expression type checking still need to find map to
[HsType]
forTH.Conp
- Trying to map constructors to types for template haskell
- Now working with simple constructor pattern matching (no type annotation) no infix constructors yet.
- Implementation of Exact rdrName allows for use of infix operators in HSX!
- Infix and pattern matching on constructors working. Added tests. No type annotations in Constructor patterns supported.
- Allow formFor with GET method
- Use Queue for ghci output
- Extracted and refactored FileWatcher
- Refactored handling of toolserver
- Refactored state handling of live reload notification server
- Fixed rename table operation doesn't correctly rename other DDL statements
- Fixed running a broken migration causes a bad error message
- Replace ConfigProvider and LoggingProvider with dot notation
- make Welcome page page more responsible
- When dropping a column, also drop related policies
- Fixed user_id quick col has a ihp_user_id() default value, even when RLS is not used
- Fixed race condition in dev server that causes reload to not work
- Exported currentRole functions
- Disabled split-sections
Full Changelog: v0.20.0...v1.0.0
Feature Voting
Help decide what's coming next to IHP by using the Feature Voting!
Updating
β See the UPGRADE.md for upgrade instructions.
If you have any problems with updating, let us know on the IHP forum.
π§ To stay in the loop, subscribe to the IHP release emails (right at the bottom of the page). Or follow digitally induced on twitter.