Changelog for ihp-1.4.0
v1.4.0 (unreleased)
Highlights
- 🚀 Improved Dev Server: faster, more reliable reloads without race conditions.
- 📦 Ecosystem split: IHP now modular (
ihp-ide
,ihp-ssc
,ihp-migrate
,ihp-sitemap
). - 🔧 New helpers:
createRecordDiscardResult
,copyRecord
,queryUnionList
,orderByAscJoinedTable
. - 🛠️ Production-ready: warp + systemd integration, healthcheck endpoint, better job runner handling.
- 🐘 Compiler upgrade: GHC 9.8 (with support for 9.10 and 9.12).
Major Changes
- Added
createRecordDiscardResult
(complementsupdateRecordDiscardResult
) for cases where the result is not needed (e.g. scheduling jobs). - Added
copyRecord
for easier duplication of database records. - Improved Dev Server reliability and performance. Race conditions on rapid file updates are fixed by using proper bracketed resource management.
- Split IHP into multiple packages (
ihp-ide
,ihp-ssc
,ihp-migrate
,ihp-sitemap
) for cleaner dependency boundaries. - Production improvements: integrated
warp-systemd
, added healthcheck endpoint, and improved socket activation. - Upgraded to GHC 9.8, with support for 9.10.x and 9.12.x.
Minor Changes
Nix / Deployment
- Added options:
rtsFlags
,optimizationLevel
,appName
. - Support for aarch64 NixOS deployments.
- Faster
nix build
via caching ofGenerated.Types
. - Simplified migration service (
IHP_MIGRATION_DIR
). - Dropped dependency on
ihp
source to reduce closure size. - Updated nixpkgs to 25.05 and devenv to 1.8.2.
- Use flake overlays instead of manual
mkGhcCompiler
. - Don’t set
system.stateVersion
automatically (configured in project’sflake.nix
).
Job Runner
- Jobs with timeouts are now restarted if workers crash.
- Improved async handling of jobrunner.
- Use
ResourceT
for job worker scheduling to avoid leaks. - Exceptions are now printed to logs for easier debugging.
- Don’t log job worker SQL queries.
DataSync
- Fixes: arrays double-escaped, connections closed prematurely, crash with spaces in table names, non-snake_case column names.
- Features: added
useCount
, customnewRecordBehaviour
, support for event triggers, React 18useSyncExternalStore
. - Avoid creating
large_pg_notifications
table when not needed.
HSX / View Layer
- Added
uncheckedHsx
andcustomHsx
. - Lucid2 port and core library split.
- Added missing HTML attributes.
- Fixed generator issues (brackets, variable references, migrations).
- Use Blaze helpers in HSX.
SQL / Query Layer
- Added
filterWhereInCaseInsensitive
,queryUnionList
,orderByAscJoinedTable
/orderByDescJoinedTable
. - Refactored pagination queries.
- Logging improvements: show final SQL, rounded runtimes, simplified log format with icons.
Storage
- Support custom storage directory via
IHP_STORAGE_DIR
. - Support custom filenames in
storeFileFromPath
. - S3
storagePrefix
now returns base URL. - Fix
createTemporaryDownloadUrlFromPath
.
Miscellaneous
- Support custom base URL in
assetPath
. - Add
withPGListener
. - Always evaluate Blaze HTML.
- Added
mainInParentDirectory
. - Enabled warp file cache in production.
- Set default gracefulShutdownTimeout.
- Improved schema compiler performance.
IHP OpenAI
- Removed deprecated
prompt
field. - Added support for tools and tool calls,
response_format
, Anthropiccache_control
, Google Gemini. - Added
extraHeaders
,finish_reason
,usage
in streaming responses. - Changed
maxTokens
,temperature
,presencePenalty
,frequencyPenalty
toMaybe
. - Improved error messages and quota exceeded feedback.
- Added
reasoningEffort
andparallelToolCalls
. system_fingerprint
is now optional.
Documentation
- Improved deployment docs (workers, systemd integration, AWS Terraform).
- Updated guides for pagination, htmx, realtime SPAs.
- Clarified environment differences between dev/prod.
- Added docs for
validateFieldIO
and scheduled job execution withrunAt
. - Removed outdated NixOS installation instructions.
- Cleaned up Emacs docs.
- Added troubleshooting notes for EC2 deployments.