Skip to content

Releases: bartblast/hologram

v0.10.0

Choose a tag to compare

@bartblast bartblast released this 01 Jul 18:42

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, and allow_default
  • Server-side middleware for cross-cutting concerns
  • Broader Elixir parity on the client - comprehension :reduce and bitstring generators, plus try / rescue / catch / after / else

Full release notes:
https://hologram.page/blog/hologram-v0-10

v0.9.3

Choose a tag to compare

@bartblast bartblast released this 09 Jun 15:01

Enhancements

  • Support Elixir 1.19 and Erlang/OTP 28 (#835)
  • Support Elixir 1.20 and Erlang/OTP 29 (#837)
  • Port :string.to_graphemes/1 to JavaScript (#844)
  • Port :string.jaro_similarity/2 to JavaScript (#842)
  • Port :lists.suffix/2 to JavaScript (#851)

Bug Fixes

  • Fix compilation crashing with CaseClauseError when 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 a param (#833)
  • Fix :erlang.div/2 raising ArgumentError instead of ArithmeticError for invalid arguments (#848)
  • Fix cp/1/gc/1 chardata iteration dropping multi-element improper-list tails, affecting :elixir_utils.jaro_similarity/2 (#845)

v0.9.2

Choose a tag to compare

@bartblast bartblast released this 01 Jun 23:34

Bug Fixes

  • Fix SSE response not being halted, raising Plug.Conn.AlreadySentError when Hologram.Router is mounted ahead of another router (#811)
  • Fix Hologram.Router raising a "no persistent term" error when Hologram is disabled, breaking mix test (#813)

v0.9.1

Choose a tag to compare

@bartblast bartblast released this 30 May 12:43

Performance

  • Remove the Biome formatter from the compiler to fix exponentially slow compilation with deeply nested templates (#809)

v0.9.0

Choose a tag to compare

@bartblast bartblast released this 28 May 01:56

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 with special form on the client
  • AI assistant support - ships llms.txt, usage-rules.md, and mix holo.gen.agents_md / mix holo.gen.claude_md tasks so coding assistants understand Hologram's conventions
  • New mix holo task 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

Choose a tag to compare

@bartblast bartblast released this 05 Apr 19:59

Backward Incompatible Changes

  • Remove mix holo.compiler.page_mfa_cascades and mix holo.compiler.runtime_mfa_cascades tasks

Enhancements

  • Compiler groundwork for with expression support (#735)
  • Improve compiler call graph accuracy for Date, Time, NaiveDateTime, and DateTime modules

Bug Fixes

  • Fix bundle size explosion predominantly affecting Ash apps (#775)

v0.8.2

Choose a tag to compare

@bartblast bartblast released this 22 Mar 18:05

Bug Fixes

  • Fix Calendar.ISO.valid_date?/3 undefined when invoking Date.new!/3 in an action (#740)
  • Fix client-side Date struct rendering in templates crashing with :lists.flatten/1 error (#742)
  • Fix :erlang.list_to_binary/1 handling of nested improper-list iodata (#751)
  • Fix :erlang.iolist_to_binary/1 semantics 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/1 reachability 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.exe command 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, and Application.get_env/3 to 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

Choose a tag to compare

@bartblast bartblast released this 13 Mar 22:59

Bug Fixes

  • Fix clearing next_action from component registry to prevent double execution of actions queued from init (#744)

v0.8.0

Choose a tag to compare

@bartblast bartblast released this 13 Mar 16:29

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.JS module 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

v0.7.1

Choose a tag to compare

@bartblast bartblast released this 14 Feb 00:03

Bug Fixes

  • Fixed error message resolution crash for error types without a message field (#694)
  • Fixed ReferenceError: Erlang_UnicodeUtil is not defined on client-side (#696)