UNPKG

21.1 kBMarkdownView Raw
1# Changelog
2
3## [1.8.4] - 2022-11-05
4
5* Fix the _exact same_ regression in `revealed` logic as in 1.8.2
6
7## [1.8.3] - 2022-11-04
8
9* A new [`htmx:confirm` event](/events#htmx:confirm) was added that allows for asynchronous confirmation dialogs to
10 be integrated into htmx requests
11* The new [head-support](/extensions/head-support) extension allows for more elaborate head tag merging than standard htmx
12 supports. This functionality may be integrated into htmx 2.0, depending on feedback.
13* The new [multi-swap](/extensions/multi-swap) provides more elaborate swapping of multiple elements on a screen using
14 a custom swap strategy
15* Many doc fixes (thank you to everyone who contributed!)
16
17## [1.8.2] - 2022-10-12
18
19* Fix regression in `revealed` logic
20
21## [1.8.1] - 2022-10-11
22
23* We now keep a count of outstanding requests for an indicator, so more than one overlapping request can share the same
24 indicator without issues
25* We now track the attribute state of an element and re-initialize it if `htmx.process()` is called on the element and
26 the attributes have changed
27* [Idiomorph](https://github.com/bigskysoftware/idiomorph) is now available for all your morph-swapping needs
28* The `unset` directive now works properly for `hx-vals` and `hx-vars`
29* The title of the page is now properly set on a history cache miss
30* The new [`hx-validate`](https://htmx.org/attributes/hx-validate) attribute will force elements to validate before a request, even if
31 they are not within a form being submitted
32* Many smaller bug and docs fixes
33
34## [1.8.0] - 2022-7-12
35
36* **NOTE**: This release involved some changes to touchy code (e.g. history support) so please test thoroughly and let
37 us know if you see any issues
38* Boosted forms now will automatically push URLs into history as with links. The [response URL](https://caniuse.com/mdn-api_xmlhttprequest_responseurl)
39 detection API support is good enough that we feel comfortable making this the default now.
40 * If you do not want this behavior you can add `hx-push-url='false'` to your boosted forms
41* The [`hx-replace-url`](https://htmx.org/attributes/hx-replace-url) attribute was introduced, allowing you to replace
42 the current URL in history (to complement `hx-push-url`)
43* Bug fix - if htmx is included in a page more than once, we do not process elements multiple times
44* Bug fix - When localStorage is not available we do not attempt to save history in it
45* [Bug fix](https://github.com/bigskysoftware/htmx/issues/908) - `hx-boost` respects the `enctype` attribute
46* `m` is now a valid timing modifier (e.g. `hx-trigger="every 2m"`)
47* `next` and `previous` are now valid extended query selector modifiers, e.g. `hx-target="next div"` will target the
48 next div from the current element
49* Bug fix - `hx-boost` will boost anchor tags with a `_self` target
50* The `load` event now properly supports event filters
51* The websocket extension has had many improvements: (A huge thank you to Denis Palashevskii, our newest committer on the project!)
52 * Implement proper `hx-trigger` support
53 * Expose trigger handling API to extensions
54 * Implement safe message sending with sending queue
55 * Fix `ws-send` attributes connecting in new elements
56 * Fix OOB swapping of multiple elements in response
57* The `HX-Location` response header now implements client-side redirects entirely within htmx
58* The `HX-Reswap` response header allows you to change the swap behavior of htmx
59* The new [`hx-select-oob`](https://htmx.org/attributes/hx-select-oob) attribute selects one or more elements from a server response to swap in via an out of band swap
60* The new [`hx-replace-url`](https://htmx.org/attributes/hx-replace-url) attribute can be used to replace the current URL in the location
61 bar (very similar to `hx-push-url` but no new history entry is created). The corresponding `HX-Replace-Url` response header can be used as well.
62* htmx now properly handles anchors in both boosted links, as well as in `hx-get`, etc. attributes
63
64## [1.7.0] - 2022-02-22
65
66* The new [`hx-sync`](https://htmx.org/attributes/hx-sync) attribute allows you to synchronize multiple element requests on a single
67 element using various strategies (e.g. replace)
68 * You can also now abort an element making a request by sending it the `htmx:abort` event
69* [Server Sent Events](/extensions/server-sent-events) and [Web Sockets](/extensions/web-sockets) are now available as
70 extensions, in addition to the normal core support. In htmx 2.0, the current `hx-sse` and `hx-ws` attributes will be
71 moved entirely out to these new extensions. By moving these features to extensions we will be able to add functionality
72 to both of them without compromising the core file size of htmx. You are encouraged to move over to the new
73 extensions, but `hx-sse` and `hx-ws` will continue to work indefinitely in htmx 1.x.
74* You can now mask out [attribute inheritance](/docs#inheritance) via the [`hx-disinherit`](https://htmx.org/attributes/hx-disinherit) attribute.
75* The `HX-Push` header can now have the `false` value, which will prevent a history snapshot from occuring.
76* Many new extensions, with a big thanks to all the contributors!
77 * A new [`alpine-morph`](/extensions/alpine-morph) allows you to use Alpine's swapping engine, which preserves Alpine
78 * A [restored](/extensions/restored) extension was added that will trigger a `restore` event on all elements in the DOM
79 on history restoration.
80 * A [loading-states](/extensions/loading-states) extension was added that allows you to easily manage loading states
81 while a request is in flight, including disabling elements, and adding and removing CSS classes.
82* The `this` symbol now resolves properly for the [`hx-include`](https://htmx.org/attributes/hx-include) and [`hx-indicator`](https://htmx.org/attributes/hx-indicator)
83 attributes
84* When an object is included via the [`hx-vals`](https://htmx.org/attributes/hx-vals) attribute, it will be converted to JSON (rather
85 than rendering as the string `[Object object]"`)
86* You can now pass a swap style in to the `htmx.ajax()` function call.
87* Poll events now contain a `target` attribute, allowing you to filter a poll on the element that is polling.
88* Two new Out Of Band-related events were added: `htmx:oobBeforeSwap` & `htmx:oobAfterSwap`
89
90## [1.6.1] - 2021-11-22
91
92* A new `HX-Retarget` header allows you to change the default target of returned content
93* The `htmx:beforeSwap` event now includes another configurable property: `detail.isError` which can
94 be used to indicate if a given response should be treated as an error or not
95* The `htmx:afterRequest` event has two new detail properties: `success` and `failed`, allowing you to write
96 trigger filters in htmx or hyperscript:
97 ```applescript
98 on htmx:afterRequest[failed]
99 set #myCheckbox's checked to true
100 ```
101* Fixed the `from:` option in [`hx-trigger`](https://htmx.org/attributes/hx-trigger) to support `closest <CSS selector>`
102 and `find <CSS selector>` forms
103* Don't boost anchor tags with an explicit `target` set
104* Don't cancel all events on boosted elements, only the events that naturally trigger them (click for anchors, submit
105 for forms)
106* Persist revealed state in the DOM so that on history navigation, revealed elements are not re-requested
107* Process all [`hx-ext`](https://htmx.org/attributes/hx-ext) attributes, even if no other htmx attribute is on the element
108* Snapshot the current URL on load so that history support works properly after a page refresh occurs
109* Many, many documentation updates (thank you to all the contributors!)
110
111
112## [1.6.0] - 2021-10-01
113
114* Completely reworked `<script>` tag support that now supports the `<script src="...'/>` form
115* You can now use the value `unset` to clear a property that would normally be inherited (e.g. hx-confirm)
116* The `htmx-added` class is added to new content before a swap and removed after the settle phase, which allows you
117 more flexibility in writing CSS transitions for added content (rather than relying on the target, as with `htmx-settling`)
118* The `htmx:beforeSwap` event has been updated to allow you to [configure swapping](https://htmx.org/docs/#modifying_swapping_behavior_with_events)
119 behavior
120* Improved `<title>` extraction support
121* You can listen to events on the `window` object using the `from:` modifier in `hx-trigger`
122* The `root` option of the `intersect` event was fixed
123* Boosted forms respect the `enctype` declaration
124* The `HX-Boosted` header will be sent on requests from boosted elements
125* Promises are not returned from the main ajax function unless it is an api call (i.e. `htmx.ajax`)
126
127## [1.5.0] - 2021-7-12
128
129* Support tracking of button clicked during a form submission
130* Conditional polling via the [hx-trigger](https://htmx.org/attributes/hx-trigger) attribute
131* `document` is now a valid pseudo-selector on the [hx-trigger](https://htmx.org/attributes/hx-trigger) `from:` argument, allowing you
132 to listen for events on the document.
133* Added the [hx-request](https://htmx.org/attributes/hx-request) attribute, allowing you to configure the following aspects of the request
134 * `timeout` - the timeout of the request
135 * `credentials` - if the request will send credentials
136 * `noHeaders` - strips all headers from the request
137* Along with the above attribute, you can configure the default values for each of these via the corresponding `htmx.config`
138 properties (e.g. `htmx.config.timeout`)
139* Both the `scroll` and `show` options on [hx-swap](https://htmx.org/attributes/hx-swap) now support extended syntax for selecting the
140 element to scroll or to show, including the pseudo-selectors `window:top` and `window:bottom`.
141
142## [1.4.1] - 2021-6-1
143
144* typo fix
145
146## [1.4.0] - 2021-5-25
147
148* Added the `queue` option to the [hx-trigger](https://htmx.org/attributes/hx-trigger) attribute, allowing you to specify how events
149 should be queued when they are received with a request in flight
150* The `htmx.config.useTemplateFragments` option was added, allowing you to use HTML template tags for parsing content
151 from the server. This allows you to use Out of Band content when returning things like table rows, but it is not
152 IE11 compatible.
153* The `defaultSettleDelay` was dropped to 20ms from 100ms
154* Introduced a new synthetic event, [intersect](https://htmx.org/docs#pecial-events) that allows you to trigger when an item is scrolled into view
155 as specified by the `IntersectionObserver` API
156* Fixed timing issue that caused exceptions in the `reveal` logic when scrolling at incredible speeds - <https://github.com/bigskysoftware/htmx/issues/463>
157* Fixed bug causing SVG titles to be incorrectly used as page title - <https://github.com/bigskysoftware/htmx/issues/459>
158* Boosted forms that issue a GET will now push the URL by default - <https://github.com/bigskysoftware/htmx/issues/485>
159* Better dispatch of request events when an element is removed from the DOM
160* Fixed a bug causing `hx-prompt` to fail
161* The `htmx.config.withCredentials` option was added, to send credentials with ajax requests (default is `false`)
162* The `throttle` option on `hx-trigger` does not delay the initial request any longer
163* The `meta` key is ignored on boosted links
164* `<script>` tags are now evaluated in the global scope
165* `hx-swap` now supports the `none` option
166* Safari text selection bug - <https://github.com/bigskysoftware/htmx/issues/438>
167
168## [1.3.3] - 2021-4-5
169
170* Added the [`hx-disabled`](https://htmx.org/docs#security) attribute to allow htmx to be turned off for parts of the DOM
171* SSE now uses a full-jitter exponential backoff algorithm on reconnection, using the `htmx.config.wsReconnectDelay`
172 setting
173
174## [1.3.2] - 2021-3-9
175
176* Bug fixes
177
178## [1.3.1] - 2021-3-9
179
180* IE11 fixes
181
182## [1.3.0] - 2021-3-6
183
184* Support a `target` modifier on `hx-trigger` to filter based on the element targeted by an event. This allows
185 lazy binding to that target selector.
186* Events are no longer consumed by the first element that might handle them, unless the `consume` keyword is
187 added to the `hx-trigger` specification
188* Added the `htmx:beforeSend` event, fired just before an ajax request begins
189* SSE swaps are properly settled
190* Fixed bug that was improperly cancelling all clicks on anchors
191* `htmx.ajax()` now returns a promise
192
193## [1.2.1] - 2021-2-19
194
195* Fixed an issue with the history cache, where the cache was getting blown out after the first navigation backwards
196* Added the `htmx.config.refreshOnHistoryMiss` option, allowing users to trigger a full page refresh on history cache miss
197 rather than issuing an AJAX request
198
199## [1.2.0] - 2021-2-13
200
201### New Features
202
203* `hx-vars` has been deprecated in favor of `hx-vals`
204* `hx-vals` now supports a `javascript:` prefix to achieve the behavior that `hx-vars` provided
205* The new `hx-headers` attribute allows you to add headers to a request via an attribute. Like `hx-vals` it supports
206 JSON or javascript via the `javascript:` prefix
207* `hx-include` will now include all inputs under an element, even if that element is not a form tag
208* The [preload extension](https://htmx.org/extensions/preload/) now offers a `preload-images="true"` attribute that will aggressively load images in preloaded content
209* On requests driven by a history cache miss, the new `HX-History-Restore-Request` header is included so that the server
210 can differentiate between history requests and normal requests
211
212### Improvements & Bug fixes
213
214* Improved handling of precedence of input values to favor the enclosing form (see [here](https://github.com/bigskysoftware/htmx/commit/a10e43d619dc340aa324d37772c06a69a2f47ec9))
215* Moved event filtering logic *after* `preventDefault` so filtering still allows events to be properly handled
216* No longer trigger after swap events on elements that have been removed via an `outerHTML` swap
217* Properly remove event handlers added to other elements when an element is removed from the DOM
218* Handle the `scroll:` modifier in `hx-swap` properly when an `outerHTML` swap occurs
219* Lots of docs fixes
220
221## [1.1.0] - 2021-1-6
222
223* Newly added [preload extension](https://htmx.org/extensions/preload/) allows you to preload resources for lower
224 latency requests!
225* Support the `ignore:` modifier for extensions
226* Updated form variable order inclusion to include the enclosing form *last* so that, in the presence of multiple
227 values, the most relevant value is the most likely to be selected by the server
228* Support for the [`htmx.ajax()`](https://dev.htmx.org/api/#ajax) javascript function, to issue an htmx-style ajax
229 request from javascript
230* Removed the following htmx request headers for better cache behavior: `HX-Event-Target`, `HX-Active-Element`,
231 `HX-Active-Element-Name`, `HX-Active-Element-Value`
232* Added the [`hx-preserve`](https://dev.htmx.org/attributes/hx-preserve) attribute, which allows
233 you to preserve elements across requests (for example, to keep a video element playing properly)
234* The [path-deps](https://dev.htmx.org/extensions/path-deps/#refresh) now surfaces a small api
235 for refreshing path dependencies manually in javascript
236* Now support the `from:` clause on [`hx-trigger`](https://dev.htmx.org/attributes/hx-trigger) to
237 allow an element to respond to events on other elements.
238* Added the `htmx:beforeProcessNode` event, renamed the (previously undocumented) `htmx:processedNode` to `htmx:afterProcessNode`
239* Added `closest` syntax support for the [`hx-indicator`](https://dev.htmx.org/attributes/hx-indicator) attribute
240* Added `on load` support for the newest version of [hyperscript](https://hyperscript.org)
241* Added the `htmx.config.allowEval` configuration value, for CSP compatibility
242* Bug fixes & improvements
243
244## [1.0.2] - 2020-12-12
245
246* Extend all API methods to take a string selector as well as an element
247* Out of band swap elements need not be top level now
248* [`hx-swap-oob`](https://htmx.org/attributes/hx-swap-oob) now can accept a CSS selector to retarget with
249
250## [1.0.1] - 2020-12-04
251
252* AJAX file upload now correctly fires events, allowing for [a proper progress bar](https://htmx.org/examples/file-upload)
253* htmx api functions that expect an element now can accept a string selector instead:
254 ```js
255 htmx.on('#form', 'htmx:xhr:progress', function(evt) {
256 htmx.find('#progress').setAttribute('value', evt.detail.loaded/evt.detail.total * 100)
257 });
258 ```
259* htmx now properly handles the `multiple` attribute on `<select>` elements
260
261## [1.0.0] - 2020-11-24
262
263* Bumped the release version :)
264
265## [0.4.1] - 2020-11-23
266
267* Fixed bug with title tag support when title tag contained HTML entities
268* Pass properties for the `loadstart`, `loadend`, `progress`, `abort` events through properly to the htmx equivalents
269
270## [0.4.0] - 2020-11-16
271
272* Now support the `HX-Redirect` and `HX-Refresh` response headers for redirecting client side and triggering a page refresh, respectively
273* `hx-vars` now overrides input values
274* `<title>` tags in responses will be used to update page titles
275* All uses of `eval()` have been removed in favor of `Function`
276* [`hx-vals`](https://htmx.org/attributes/hx-vals) is available as a safe alternative to `hx-vars`. It uses `JSON.parse()` rather than evaluation, if you wish to safely pass user-provided values through to htmx.
277
278## [0.3.0] - 2020-10-27
279
280* `hx-trigger` parsing has been rewritten and now supports [trigger filters](https://htmx.org/docs/#trigger-filters) to filter
281 events based on arbitrary javascript expressions
282* htmx now supports two additional response headers `HX-Trigger-After-Swap` and `HX-Trigger-After-Settle` allowing
283 an event to be triggered after a given life cycle event (instead of before the swap)
284* The `requestConfig` is now passed out to events surrounding the AJAX life cycle
285* htmx now evaluates `<script>` tags as javascript when no language is defined on them
286* A new [`event-header`](https://htmx.org/extensions/event-header) extension, which will include a serialized JSON representation of the triggering event in requests
287
288## [0.2.0] - 2020-9-30
289
290* AJAX file upload [support](https://htmx.org/docs#files)
291* The HTML validation API is [respected](https://htmx.org/docs#validation)
292
293## [0.1.0] - 2020-9-18
294
295* *BREAKING CHANGE*: The SSE attribute [`hx-sse`](https://htmx.org/attributes/hx-sse/) and the Web Sockets attribute [`hx-ws`](https://htmx.org/attributes/hx-ws) have changed syntax to now use colon separators: `hx-sse='connect:/chat swap:message'`
296* The SSE attribute [`hx-sse`](https://htmx.org/attributes/hx-sse/) allows for swapping content directly on an event, in addition to triggering an htmx element,
297with the new `swap:<event name>` syntax.
298* [`hx-target`](https://htmx.org/attributes/hx-target) now supports a `find` syntax to find elements below the element by a CSS selector
299* htmx plays better with deferred loading and many package managers
300* All htmx events are dispatched in both camelCase as well as kebab-case, for better compatibility with AlpineJS and other frameworks. (e.g. `htmx:afterOnLoad` will also be triggered as
301`htmx:after-on-load`)
302* [hypeerscript](https://hyperscript.org) is now initialized independently of htmx
303
304## [0.0.8] - 2020-7-8
305
306* The `view` modifier on `hx-swap` has been renamed to `show`: `hx-swap='innerHTML show:top'`
307
308## [0.0.7] - 2020-6-30
309
310* The [`hx-swap`](https://htmx.org/attributes/hx-swap) attribute now supports two new modifiers:
311 * `scroll` - allows you to scroll the target to the `top` or `bottom`
312 * `view` - allows you to scroll the `top` or `bottom` of the target into view
313* The [`hx-push-url`](https://htmx.org/attributes/hx-push-url) attribute now can optionally take a URL to push, in addition to `true` and `false`
314* Added the [`hx-vars`](https://htmx.org/attributes/hx-vars) attribute that allows you to dynamically add to the parameters that will be submitted with a request
315
316## [0.0.6] - 2020-6-20
317
318* Custom request/response headers no longer start with the `X-` prefix, which is no longer recommended
319* empty verb attributes are now allowed and follow the anchor tag semantics (e.g. `<div hx-get></div>`)
320* nunjuks inline rendering is now supported in the `client-side-templates` extension
321* the new `ajax-header` extension includes the `X-Requested-With` header
322* bad JSON is now handled more gracefully
323* `hx-swap="none"` will cause no swap to take place <https://github.com/bigskysoftware/htmx/issues/89>
324* `hx-trigger` now supports a `throttle` modifier <https://github.com/bigskysoftware/htmx/issues/88>
325* the focused element is preserved if possible after a replacement
326* perf improvements for large DOM trees with sparse `hx-` annotations
327
328## [0.0.4] - 2020-5-24
329
330* Extension mechanism added
331* SSE support added
332* WebSocket support added
333
334## [0.0.3] - 2020-5-17
335
336* Renamed to htmx
337* A bug fix for the `hx-prompt` attribute
338* A bug fix for multiple `hx-swap-oob` attributes
339* Moved the default CSS indicator injection into its own sheet to avoid breaking
340* Added the `htmx.config.includeIndicatorStyles` configuration option so people can opt out of injecting the indicator CSS
341
342
343## [0.0.1] - 2020-5-15
344
345* Initial release (originally named kutty)
346
\No newline at end of file