Releases: bartblast/hologram
Releases · bartblast/hologram
Release list
v0.10.0
Key highlights:
- First-class event system - keyboard, scroll, resize, click-outside, and scroll-edge events, with key filters validated at compile time
- Global event bindings via new
<window>and<document>tags - Event stream modifiers -
debounce,throttle,once,stop_propagation,prevent_default, andallow_default - Server-side middleware for cross-cutting concerns
- Broader Elixir parity on the client - comprehension
:reduceand bitstring generators, plustry/rescue/catch/after/else
Full release notes:
https://hologram.page/blog/hologram-v0-10
v0.9.3
Enhancements
- Support Elixir 1.19 and Erlang/OTP 28 (#835)
- Support Elixir 1.20 and Erlang/OTP 29 (#837)
- Port
:string.to_graphemes/1to JavaScript (#844) - Port
:string.jaro_similarity/2to JavaScript (#842) - Port
:lists.suffix/2to JavaScript (#851)
Bug Fixes
- Fix compilation crashing with
CaseClauseErrorwhen an Erlang dependency uses Elixir-style module names, e.g.luerl(#776) - Fix client runtime crashing when navigating to or rendering a
<Link>for a route that declares aparam(#833) - Fix
:erlang.div/2raisingArgumentErrorinstead ofArithmeticErrorfor invalid arguments (#848) - Fix
cp/1/gc/1chardata iteration dropping multi-element improper-list tails, affecting:elixir_utils.jaro_similarity/2(#845)
v0.9.2
v0.9.1
v0.9.0
Key highlights:
- Realtime layer - dispatch actions from your server to connected clients with structured channels and pub/sub fan-out, all in pure Elixir
- Support for Elixir's
withspecial form on the client - AI assistant support - ships
llms.txt,usage-rules.md, andmix holo.gen.agents_md/mix holo.gen.claude_mdtasks so coding assistants understand Hologram's conventions - New
mix holotask to run your app - the Hologram compiler and runtime no longer start automatically in dev/test (behavior change)
Full release notes:
https://hologram.page/blog/hologram-v0-9
v0.8.3
Backward Incompatible Changes
- Remove
mix holo.compiler.page_mfa_cascadesandmix holo.compiler.runtime_mfa_cascadestasks
Enhancements
- Compiler groundwork for
withexpression support (#735) - Improve compiler call graph accuracy for
Date,Time,NaiveDateTime, andDateTimemodules
Bug Fixes
- Fix bundle size explosion predominantly affecting Ash apps (#775)
v0.8.2
Bug Fixes
- Fix
Calendar.ISO.valid_date?/3undefined when invokingDate.new!/3in an action (#740) - Fix client-side Date struct rendering in templates crashing with
:lists.flatten/1error (#742) - Fix
:erlang.list_to_binary/1handling of nested improper-list iodata (#751) - Fix
:erlang.iolist_to_binary/1semantics and error handling (#752) - Fix call graph module edge handling for accurate dynamic call detection (#755)
- Fix protocol dispatch edges not added for new implementations during live reload (incremental call graph patching)
- Fix async MFA detection propagating
Task.await/1reachability through module vertices - Fix compiler normalizer to strip import residue aliases from block AST
- Fix Erlang JS function extraction regex to handle comment lines between Start/End markers (#756)
- Fix Biome formatter failing on Windows when file paths exceed
cmd.execommand line length limit
Enhancements
- Overhaul call graph traversal for protocols and structs - resulting in more accurate client-side bundles
- Manually port
IO.warn/1,IO.warn/2,IO.warn_once/3, andApplication.get_env/3to JavaScript to reduce client-side bundle size - Add debugging mix tasks:
holo.compiler.runtime_mfa_cascades,holo.compiler.page_mfa_cascades - Include diagnostic details in Biome formatter error messages
v0.8.1
v0.8.0
Key highlights:
- Full JavaScript interoperability - call JS functions, use npm packages, interact with Web APIs, and work with Web Components, all from Elixir code
- Expanded
Hologram.JSmodule with new functions: imports, function calls, property access, type introspection, eval, and event dispatching - Async JS support - Promises automatically become Elixir Tasks, laying groundwork for porting the Elixir process model to the client side
Full release notes:
https://hologram.page/blog/hologram-v0-8-0-javascript-interop