22 Commits
Author SHA1 Message Date
Bendik Aagaard LynghaugandClaude Fable 5 ce1ec9e4a9 rebrand: buuh — a friendly public fork under the uhhm org
Packages renamed to the @uhhm scope (@uhhm/buuh, @uhhm/buuh-html,
@uhhm/buuh-component, @uhhm/buuh-devtools, @uhhm/buuh-migrate,
@uhhm/bankai). Scoping is load-bearing twice over: npm routes registries
per scope so @uhhm/* resolves against project.uhhm.no while everything
else stays on npmjs, and it means this fork never squats upstream's
names anywhere. The codemod now migrates choo v7 apps to the @uhhm
names. README rewritten with the fork framing and full upstream credit;
the choojs RFC moves to docs/upstream-rfc-draft.md, in the drawer for if
this work ever goes home. API unchanged — choo() is still choo().

Also: Gitea Actions CI + release workflows (npm publish to the uhhm
registry on tag push, CDN bundle uploaded as a generic package),
npm run bundle producing dist-cdn/buuh.js (the whole framework as one
minified ES module for import-map use), docs/publishing.md explaining
what Gitea Packages is (a real npm registry) and is not (a CDN — serve
the bundle from a static host with module-safe MIME instead), and
onload.js constructing window.MutationObserver to match its own guard
(surfaced by smoke-testing the bundle outside a full browser).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
2026-09-08 19:55:20 +02:00
Bendik Aagaard LynghaugandClaude Fable 5 99f9da1e3b feat(bankai): Phase 4 follow-ups — css convention, live titles, prerender, HTTP/2, size budget
- style.css convention: <entry dir>/style.css is imported by the virtual
  client entry (CSS is a client concern; server code never sees it — the
  v8 answer to sheetify), extracted and hashed by Vite, stylesheet-linked
  in the head and preloaded via Early Hints. Counter example styled.
- SSR <title> from state: the server reads the first stream chunk before
  writing the head, by which point stores and the first render slice have
  run — DOMTitleChange emits land in the document title. Counter emits.
- bankai build --prerender /,/about renders routes through the same
  toStream path to static <route>/index.html (precompressed, precached
  by the service worker, served with Early Hints).
- bankai serve --h2: HTTP/2 with a generated local cert (openssl,
  cached; allowHTTP1) — browsers only act on Early Hints over h2/h3.
  Tested with a real h2 client observing the 103 interim response.
- npm run size: the framework wire-size budget, enforced in CI. Whole
  framework (core + html engine + morph + hydrate) is 7.97 kB min+gzip /
  7.15 kB brotli; budget 8.5 kB with the v7 '4kb' context documented
  (that number excluded the html engine, which lived in the browserify
  transform).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014NgfSjHE11oFpoSnLVKLXd
2026-09-08 19:39:25 +02:00
Yoshua Wuyts 8e8e870d45 implement choo v5 API (#425)
* implement choo v5 API

* fix tests

* 5.0.0-3

* 4kb now

* bump nanomorph

* 5.0.0-4

* fix missing deps stuff

* 5.0.0-5

* fix travis

* fixup! oops standard

* chooexpose

* fix state passing

* fixup! update example

* fixup! incorporate feedback

* fixup! more docs

* fixup! even more docs
2017-03-21 03:00:45 +01:00
Ben Drucker 8ea87bc7b9 tests: use bash + set pipefail option in test script (#360)
Closes #356
2017-01-07 02:25:29 +01:00
Yoshua Wuyts a7916ec3f9 [major] choo v4 (#352)
* location: change url on location:setLocation

- [ ] don't break hashing
- [ ] allow not changing the url

fixup! move fns around

fixup! add search string

* app.start: clean

* walk: add

* location: update arg calls

* fixup! location: update

* uri-wrap: fix thunking

* router: update to latest sheet-router (#239)

* router: update to latest sheet-router

* tests: fix for latest version

* tests: fix SSR

* tests: fix history

* tests: spruce up

* docs: update example

* examples: update

* deps: bump sheet-router

* 4.0.0-0

* chore(changelog): 4.0.0 (#211)

* feat(api:) arg order (#268)

* s/data, state/state, data/

* feat(api): swap arguments

* fix(href): fix routing (#271)

* feat(http): remove (#269)

* feat(router): enable hash routing (#273)

* deps: fix mount

* 4.0.0-1

* feat(mount): copy {script,link} tags

* 4.0.0-2

* fix(mount): forEach -> for

Lol can't use forEach

* fix(router): use state.location.href (#282)

* fix(mount): use deep node clone

* 4.0.0-3

* fix(deps): remove hash-match

* 4.0.0-4

* fix(mount): return node

* 4.0.0-5

* fix(router): check if a hash is a valid selector (#339)

* 4.0.0-6

* fix(router): pass params on newstate (#343)

* 4.0.0-7

* feat(docs): update for 4.0.0 (#320)

* feat(docs): update for 4.0.0

* docs: update router example in readme (#337)

* chore(changelog): update for v4 (#351)
2016-12-11 19:35:29 +01:00
Matt McFarland b9698a7527 Fixes for #160
- Added instructions to create the html.js file as requested per the issue.
 - Added the html.min.js file to the vanilla example
 - Tested and working as expected.
2016-08-02 10:17:59 -04:00
Chia-liang Kao 44416fdc63 Actually make scripts/test lint fail 2016-07-23 16:23:24 +08:00
timwis 10d35aaa09 instrument script uses binaries on path, add npm scripts for instrument 2016-07-19 21:40:14 -04:00
timwis e897bf1545 build and test scripts use binaries on path 2016-07-18 13:09:07 -04:00
Yoshua Wuyts f995cac579 script/build: add gz variant 2016-07-13 01:35:53 +02:00
Yoshua Wuyts ed384bc54f scripts/instrument: include deps
But also use zopfli if available!
2016-07-12 23:05:54 +02:00
Yoshua Wuyts 4c935b32cd script/build: prune the prod builds 2016-07-12 19:29:09 +02:00
Yoshua Wuyts 5357ca2614 scripts: add test 2016-07-12 17:27:50 +02:00
Yoshua Wuyts 50daf1f481 script/build: add 2016-07-12 15:29:03 +02:00
Yoshua Wuyts e0fd6ef81f script: add yo-yoify to the mix 2016-07-02 23:05:16 +02:00
Yoshua Wuyts b6b41bc031 script/test-size: bump for more opts 2016-06-20 22:23:11 +01:00
Yoshua Wuyts bb3a6001e7 scripts: shrink size further 2016-05-25 04:05:12 +09:00
Yoshua Wuyts ffca94d59a script/size: remove fullpaths flag 2016-05-22 01:08:46 +09:00
Yoshua Wuyts c5d40b1629 scripts: run uglify over output 2016-05-17 19:41:22 +08:00
Yoshua Wuyts 32ae62d655 example-mailbox: v5 2016-05-13 16:48:46 +07:00
Yoshua Wuyts 4757e791f9 http: add 2016-05-13 12:24:51 +07:00
Yoshua Wuyts 6699f412f7 script: add size test 2016-05-11 14:07:13 +07:00