Commit graph

541 commits

Author SHA1 Message Date
ayo
20e31e4796
fix: nested components no longer wipe each other on re-render (#59)
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-20 23:46:14 +02:00
ayo
4b4cbc6cc8
docs: add comparison page and a new why (#58) 2026-07-20 22:49:40 +02:00
Ayo
5fc24633f5 chore: remove netlify.toml
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-20 20:47:34 +02:00
Ayo
37552b4d65 chore: release v6.1.0
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
Release / Changelog (push) Waiting to run
Release / Publish to npm (push) Waiting to run
2026-07-20 20:47:05 +02:00
Ayo
d230d962ec fix: string templates also renders in shadow DOM
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-20 20:46:43 +02:00
Ayo
50a21b817d chore: update readme
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-20 20:36:04 +02:00
Ayo
e3fb0254c7 chore: update readme
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-20 20:35:10 +02:00
Ayo
561294f72c docs: fix build failing
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-20 20:31:27 +02:00
Ayo
b26cb30b9b chore: release v6.0.0
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
Release / Changelog (push) Waiting to run
Release / Publish to npm (push) Waiting to run
2026-07-20 20:26:43 +02:00
Ayo
f290e049bd feat: custom prop <> attr conversion
Override `toAttribute()` and `fromAttribute()` methods to
implement custom conversion between props and attributes
2026-07-20 20:18:06 +02:00
Ayo
1b3e251a9d feat!: reflect boolean props as bare attributes
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
Boolean props follow the HTML presence/absence semantics.
- We stick close to standard HTML behavior: flag="false" is treated as
true in most cases. Standard bare attributes disabled and required for
form fields are interpreted as true with non-existence as false.
- The use-cases for aria-*="false" and contenteditable="false" are also
supported by typing them in the JS class as string ("true" | "false").
This "true" | "false" opt-in is types-only. At runtime it's just a
string, and strings already serialize literally and are never removed —
so the enumerated/aria path needs no runtime code.
2026-07-20 19:57:23 +02:00
Ayo
136343962d chore: release v5.2.0
Some checks failed
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
Release / Changelog (push) Has been cancelled
Release / Publish to npm (push) Has been cancelled
2026-07-19 23:33:09 +02:00
Ayo
c7d87086a2 feat: smart diffing
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 23:32:19 +02:00
ayo
56cb1de7db
chore: update README.md
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 21:51:55 +02:00
Ayo
93e4248359 chore: update readme
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 21:43:11 +02:00
Ayo
be9c6b7cf4 chore: update readme
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 21:42:41 +02:00
Ayo
fa8d1df36e chore: pnpm allowBuilds
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 21:36:07 +02:00
Ayo
27377746ef chore: release v5.1.0
Some checks failed
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
Release / Changelog (push) Has been cancelled
Release / Publish to npm (push) Has been cancelled
2026-07-19 21:33:54 +02:00
Ayo
133881a127 feat: composing stylesheets
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 21:19:01 +02:00
Ayo
2da6cd5afc feat: new cem analyzer plugin (cem-plugin)
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 21:06:22 +02:00
Ayo
861310c6bf feat: typed props
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
- jsdocs / types change only to enforce giving shapt to `static props`
2026-07-19 18:27:52 +02:00
Ayo
737ef54763 fix: boolean props w/ bare attr as true
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-19 18:14:13 +02:00
Ayo
5635e6eb4a chore: update readme
Some checks failed
Tests / Unit (push) Has been cancelled
Tests / E2E (push) Has been cancelled
2026-07-11 15:54:01 +02:00
Ayo
a83b4893ab chore: update readme
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-11 15:53:04 +02:00
Ayo
a2c232a3cb chore: release v5.0.1
Some checks failed
Tests / Unit (push) Has been cancelled
Tests / E2E (push) Has been cancelled
Release / Changelog (push) Has been cancelled
Release / Publish to npm (push) Has been cancelled
2026-07-05 19:34:15 +02:00
Ayo
16b1bf00b4 ci: drop gh packages publish
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-05 19:33:16 +02:00
Ayo
3a97b6356c ci: fix gh publish 2026-07-05 19:33:16 +02:00
Ayo
8d5ad928e8 ci: add gh package publish scope 2026-07-05 19:33:16 +02:00
Ayo
231c62531b ci: publish gh package w/o scope 2026-07-05 19:33:16 +02:00
Ayo
e62d613203 chore: fix package repo 2026-07-05 19:33:16 +02:00
Ayo
e0ec0fcb7c ci: detect tagged release 2026-07-05 19:33:16 +02:00
Ayo
b0e48e404d ci: publishing
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-05 17:16:02 +02:00
Ayo
f320e845bb chore: nightly full e2e and size limit tests
Some checks are pending
Tests / Unit (push) Waiting to run
Tests / E2E (push) Waiting to run
2026-07-05 16:33:10 +02:00
Ayo
b5b7008abf chore: allow esbuild build
Some checks are pending
Tests / Unit (happy-dom) (push) Waiting to run
Tests / E2E (Chromium + Firefox + WebKit) (push) Waiting to run
Tests / Size limit (push) Waiting to run
2026-07-05 16:25:23 +02:00
Ayo
02ca084197 chore: update pnpm allowBuilds
Some checks are pending
Tests / Unit (happy-dom) (push) Waiting to run
Tests / E2E (Chromium + Firefox + WebKit) (push) Waiting to run
Tests / Size limit (push) Waiting to run
2026-07-05 16:18:35 +02:00
Ayo
6af7598973 chore: add github test actions
Some checks are pending
Tests / Unit (happy-dom) (push) Waiting to run
Tests / E2E (Chromium + Firefox + WebKit) (push) Waiting to run
Tests / Size limit (push) Waiting to run
2026-07-05 16:10:35 +02:00
Ayo
ef20daa140 chore: pre-commit test:all 2026-07-05 15:43:23 +02:00
Ayo
ce30b114a2 chore: new demo workspace & e2e tests
- this adds a new demo web app with vite HMR for development
- all examples are covered with e2e tests
2026-07-05 15:40:53 +02:00
Ayo
038674a74e chore: update README note 2026-07-05 12:38:17 +02:00
Ayo
891e63c335 chore: release v5.0.0
Some checks failed
Release / release (push) Has been cancelled
2026-07-05 12:27:42 +02:00
Ayo
34f7ff0ff5 chore: update release script 2026-07-05 12:25:36 +02:00
Ayo
4cbd27269d chore: fix package release script 2026-07-05 12:17:55 +02:00
Ayo
bdd066929b chore: add .nvmrc 2026-07-05 12:17:31 +02:00
Ayo
5b70f90c8b chore: add simple-git dev dep 2026-07-05 12:17:31 +02:00
Ayo
e806d9604f chore: add release workflow 2026-07-05 12:17:31 +02:00
Ayo
f5703af9f4 chore: add release script 2026-07-05 12:01:58 +02:00
Ayo
5503e57897 feat: buffer attribute changes until end of onInit
The assumption of everything starting at `onInit` breaks when browsers
triggers `attributeChanged` first after parsing HTML. This buffers all
property initialization after `onInit` logic for more predictable
behavior
2026-07-05 11:54:44 +02:00
Ayo
61d0a5adf9 feat!: better distinction between props & attr
`onChanges` now introduces an `attribute` in its arguments and
repurposes the `property` to be used for this.props lookup
- `property` is now the camelCase key for `this.props`
- `attribute` is the kebab-case attribute name (i.e., what used to be
  `property` before v5)
2026-07-05 11:43:56 +02:00
Ayo
0e367fa2ec fix: wrong attr behavior caused by empty strings 2026-07-05 11:25:05 +02:00
Ayo
248ef14322 fix: no TypeErorr for default props; add strictProps
- Remove thrown error if type difference is found in defined props
- Introduce strictProps toggle for error behavior
- Extract size changes to its own log file
2026-07-05 11:11:36 +02:00