changelog.md

# Changelog

### v1.0.0-a.2 (29.06.24)

- Added **implicit events**: setting an input event attribute (such as onchange) to `@method-key` will make it fire the method with the specified key. The `"pub"` method can be triggered like so: `@pub-[channel]-[method]-[key (optional)]`.

- A component with a Tamnoon variable inside it (`<p>@val</p>`) will now set the inner text of the element instead of the inner HTML. The inner HTML can be set by prefixing the variable name with "raw-" like so: `<p>@raw-val</p>`.

- Added the `mix tamnoon.make_dirs` task that creates a "lib/components" directory and a "tamnoon_out" directory.

- Added `Tamnoon.Compiler.escape_html/1` and made it available as `<%= h.(content) %>` inside components.

- Completely rewrote the guides, the readme, and revamped some of the existing module documentation.

#### Minor changes:

- Changed the default port to 8000 from 4000.

- Fixed "imported function conflicts with local function" when invoking a method handler inside the methods module.

- Fixed the client-side handling of updates for elements with the "value" attribute not functioning properly.

- Changed the WebSocket script in the root layout to connect to the WebSocket at the current URL (instead of _localhost:8000/ws_).

- Changed `Tamnoon.Compiler.build_from_root/1` to no longer accept a WebSocket address.

### v1.0.0-a.1 (26.06.24)

- Added the _sync_ method (`Tamnoon.Methods.tmnn_sync/2`) that returns the current state to the client. By default, it is invoked when the WebSocket connection is opened.

- Added the _keep\_alive_ method (`Tamnoon.Methods.tmnn_keep_alive/2`) that is invoked every 55 seconds by the client in order to prevent idle timeouts.

- Moved the WebSocket connection script to a separate file, and updated the default router (`m:Tamnoon.Router`) to serve a default root layout.

#### Minor changes:

- Changed the console message sent when Tamnoon starts to include the full address.

- Changed `Tamnoon.SocketHandler.init/2` so connections have a 120 second idle timeout (instead of 60).

- Added `Tamnoon.Compiler.render_component_dyn/1`.

- Changed `Tamnoon.Compiler.render_component/3` so using `<%= r.(args..) %>` will call `Tamnoon.Compiler.render_component_dyn/1` instead of `Tamnoon.Compiler.render_component/1`, to allow passing in multiple arguments.

- Added (temporary) documentation.


### v1.0.0-a.0 (25.06.24)

Added support for HEEx components and changed the default router to display the root page by default.


### v0.1.1

Very minor changes.


### v0.1.0

First release.