Commit Graph
190 Commits
Author SHA1 Message Date
Bendik Aagaard LynghaugandClaude Fable 5 c9f5ba2fda bench: @choojs/html vs nanohtml v1 vs µhtml v5, happy-dom + real Chromium
npm run bench (happy-dom, all three engines) and npm run bench:browser
(Playwright Chromium, the two ESM engines). Honest numbers recorded in
docs/v8.md: we create ~12% faster than µhtml in real Chromium (the
parse-once/clone design), µhtml updates in place ~5x faster than
fresh-tree + nanomorph (choo's architectural cost, mitigated by component
caching), and server strings are on par with nanohtml v1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
2026-09-08 17:59:53 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 63b56144a5 test(e2e): real-browser pass in Playwright Chromium
Three end-to-end scenarios against a static+SSR test server: the
zero-build page (import map + native ESM, no bundler), the SSR page
(rendered content in the raw response, live after hydration, no mismatch
warnings), and adoption (an expando on the server-rendered node survives
a real render). Renders are raf-batched so assertions poll.

Real Chromium flushed out three fixes happy-dom couldn't see:
- nanoraf called an extracted requestAnimationFrame bare — Illegal
  invocation under strict-mode ESM (sloppy CJS had masked it); wrapped.
- the counter example only routed '/', so serving it from any subpath
  threw; it now has a wildcard fallback.
- hydration mismatch detection is now whitespace-insensitive (the parser
  reparents whitespace, e.g. text after </body>), and page scripts belong
  in <head> when a view owns <body> — same convention bankai v9 used.

CI gets an e2e job with chromium-headless-shell.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
2026-09-08 17:57:27 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 84230b1770 feat(html): browser renderer — runtime-cached tagged templates
Each template literal parses once, keyed by its strings array in a
WeakMap: static parts become a <template> with hole markers, renders
clone and fill. Interpolated values never pass through innerHTML (child
values become text nodes or adopted DOM; attributes go through
setAttribute). Event handlers set as properties so nanomorph copies them.
Document-level roots (<body>/<head>/<html>) parse via DOMParser because
<template> drops them. Replaces the v7 browserify transform entirely —
production speed is now a runtime property.

Tests run in happy-dom (new devDependency), including a check that server
and browser renderers serialize identical markup.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
2026-09-08 16:56:53 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 3d6b474621 chore: scaffold v8 monorepo — npm workspaces, node:test, GitHub Actions CI
The v7 source at the repo root is untouched; v8 work lives in packages/.
See docs/v8.md for layout and status against the modernization plan.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
2026-09-08 15:59:26 +02:00
Renée Kooi 276b07043c 7.1.0 2020-01-23 18:13:33 +01:00
Renée Kooi 2893de86d0 Type improvements (#706)
* use nanobus for the emitter typings

instead of `events`, which is a bit different

* add typings for `cache` option
2020-01-23 18:11:06 +01:00
Bret Comnes 75c6ed6d00 Fix travis stuff 2019-08-14 10:48:33 +02:00
Carl Törnqvist 11aa89d626 7.0.0 2019-08-05 15:46:42 +02:00
Carl Törnqvist 60ed830828 7.0.0-0 2019-06-12 17:25:04 +02:00
Carl Törnqvist 0b4d578f01 Update nanorouter (#701) 2019-06-11 22:51:03 +02:00
alex 555ab4b5f9 Use Object.assign instead of xtend (#616)
As described by #563:

> https://polyfill.io provides a fallback for browsers that don't support it, so for most people this will be a strict improvement.
2019-06-11 22:50:34 +02:00
Carl Törnqvist 3d3b2280f4 6.13.3 2019-04-03 10:53:30 +02:00
Carl Törnqvist a22fca69de Add browser tests (#696) 2019-04-02 14:55:21 +02:00
Carl Törnqvist 5879bdb404 6.13.2 2019-04-02 09:28:02 +02:00
Renée Kooi b9bb656b4c 6.13.1 2018-10-30 12:06:25 +01:00
Renée Kooi d6f6ddb884 Fix inspect script (#654)
`discify` is a different module than intended. discify is an alternative
to disc that works as a plugin, but we were using it as a separate
command line program. This switches it out for disc. The disc command
line program is called `discify` which is probably where the confusion
came from.

Also swapped out unassertify and uglifyify for tinyify, which adds tree
shaking.
2018-10-14 11:06:00 +02:00
Carl Törnqvist 48b19a6654 6.13.0 2018-07-12 12:36:36 +02:00
Carl Törnqvist 6513f4288f Add hash option (#667)
* Add hash option

* Avoid unecessary scroll into view-call

* Update readme with hash option

* Fix typo

* Remove nanolocation dep

* Default hash option to true
2018-07-12 11:29:31 +02:00
Renée Kooi c3a640182c 6.12.1 2018-06-13 15:46:09 +02:00
Renée Kooi ac92939c84 6.12.0 2018-06-13 15:43:19 +02:00
Yerko Palma 1d9b544626 update dependencies (#663) 2018-06-05 10:44:46 -04:00
alex b0cdb6cd63 Build for UMD (#617)
* Build for UMD

8 characters. See choojs/choo#537

* Export UMD as 'Choo' instead, export choo/html also

* Don't export choo/html in all circumstances
2018-05-23 10:28:38 +02:00
Yoshua Wuyts 4ee1e774d3 6.11.0 2018-05-22 10:58:41 +02:00
Renée Kooi 948a4f8a26 Use nanoassert in the browser (#651) 2018-04-04 12:29:01 +02:00
Renée Kooi 4f50c0ae34 Switch to nanohtml (#644) 2018-04-04 12:28:49 +02:00
Yoshua Wuyts 4c6985c819 v6.11.0-preview1 2018-03-30 18:49:08 +02:00
Yoshua Wuyts bddcfbe838 choo components (#639)
* add components

* example: componentize header

* fix choo SSR

* example: componentize footer

* example: fix footer

* update component cache asserts

* componentize todos

* reorder example dir

* fix example tests

* fix dep check test

* Add garbage collection of unused components

* Apply args when calling identity

* update to new component preview

* update nanocomponent

* fix cache err name

* remove static methods from example

* restore app.emit() function

* public API tests

* offset component cache iteration by 2

* whitelist contents of component folder (#643)

* allow lru number arg

* fix lint typo
2018-03-30 18:19:06 +02:00
Yoshua Wuyts 357d50871e 6.10.3 2018-03-14 12:25:47 +01:00
Yoshua Wuyts 74b5f9418e 6.10.2 2018-03-14 12:21:30 +01:00
Renée Kooi 3e95bbdf3c 6.10.1 2018-03-08 23:31:41 +01:00
Yoshua Wuyts 7a86ae8155 6.10.0 2018-03-07 13:21:15 +01:00
Nate Goldman 4251a14015 6.9.0 2018-03-05 15:56:04 -08:00
Nate Goldman cf1f99b94a add support for hyperscript in choo.toString (#635)
* add failing test for hyperscript (#634)

* add support for hyperscript in choo.toString (#634)
2018-03-05 08:11:07 -08:00
Renée Kooi 8937832d5f 6.8.0 2018-02-14 12:52:44 +01:00
Nick Nikolov 658a399e18 Update nanotiming (#628)
In order to resolve https://github.com/choojs/nanotiming/issues/13 in
choo
2018-02-13 22:08:38 +01:00
Yoshua Wuyts 796d41a51b 6.7.0 2018-01-18 00:01:11 +01:00
Marc Bachmann cf8c316189 Separate route matching from rendering (#613)
- This fixes https://github.com/choojs/choo/issues/530
- Adds support for wayfarer/nanorouter subrouters
2018-01-17 23:58:42 +01:00
Yoshua Wuyts 2dab1b593d 6.6.1 2017-12-28 22:18:16 +01:00
Yoshua Wuyts 3c41236669 6.6.0 2017-11-15 12:45:16 +01:00
Yoshua Wuyts ae02900184 use tinyify (#595) 2017-11-01 15:35:03 +01:00
Renée Kooi 2576e2d9ed update repo url (#594) 2017-10-31 12:36:06 +01:00
Yoshua Wuyts b4e561cba1 6.5.1 2017-10-22 15:24:53 +02:00
Yoshua Wuyts 606bfbf0bb 6.5.0 2017-10-20 16:31:23 +02:00
Yoshua Wuyts 2f970403d5 6.4.4 2017-10-20 15:45:46 +02:00
Seiya IZUMI 77b2dc4cae Add html/index.d.ts (#586)
* Add html/index.d.ts

* Import bel

* Fix typo
2017-10-20 15:30:13 +02:00
Yoshua Wuyts 0bedc6cd34 6.4.3 2017-10-18 13:45:24 +02:00
Yoshua Wuyts ae6de94896 6.4.2 2017-10-10 11:57:55 -04:00
Takashi Fujita bfb9ed7625 add index.d.ts into files field on package.json (#576) 2017-10-10 11:56:41 -04:00
Yoshua Wuyts 5305fe6dfe 6.4.1 2017-10-08 13:58:44 -04:00
Todd Kennedy 04973020c1 6.4.0 2017-10-05 16:51:37 -04:00