Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
409 commits
Select commit Hold shift + click to select a range
4e63c93
data-ecs: benchmarks for structural changes one kind at a time, throu…
krisnye Oct 18, 2026
8a38f36
data-ecs: perf record at 4e63c933, the baseline for archetypes and cu…
krisnye Oct 18, 2026
979280f
data-ecs: the remove tag kernel benchmark lists has once, as the one …
krisnye Oct 18, 2026
67e9a04
data-ecs: components, resources and traits are named by keys: Compone…
krisnye Oct 18, 2026
47c0be0
data-ecs: Archetype, the type of a readonly list of components, and A…
krisnye Oct 18, 2026
f0f8040
data-ecs: commands take components first: spawn(components) is currie…
krisnye Oct 18, 2026
b6f64df
data-ecs: a key's id is the name of the nearest package.json above it…
krisnye Oct 18, 2026
f860e30
data-ecs: guide, design and threads describe archetypes, commands tha…
krisnye Oct 18, 2026
bd0dabc
data-ecs: prepared spawn and add sites find their plans through one f…
krisnye Oct 18, 2026
676735c
data-ecs: perf record at bd0dabcc for archetypes and curried spawns, …
krisnye Oct 18, 2026
19aa730
data-ecs: kernels read lists imported from other modules: a declarati…
krisnye Oct 18, 2026
bf3f646
data-ecs: sync points grow the plan once per buffer rather than check…
krisnye Oct 18, 2026
ebde4c9
data-ecs: a spawn batch of at most eight rows commits element by elem…
krisnye Oct 18, 2026
1c47400
data-ecs: perf record at ebde4c9b against bd0dabcc: spawn bulk kernel…
krisnye Oct 18, 2026
e5fdeba
data-ecs: interface for identity by value: system, rule and finalizer…
krisnye Oct 18, 2026
47e914d
data-ecs: guide states identity by value: names are labels, not uniqu…
krisnye Oct 18, 2026
318af4a
data-ecs: systems, rules and finalizers are identified by value, neve…
krisnye Oct 18, 2026
8c4ff6a
data-ecs: kernel add and remove read their component exactly: one key…
krisnye Oct 18, 2026
b95078b
data-ecs: checks that need no world run where the declaration is made…
krisnye Oct 18, 2026
e15906d
data-ecs: a terminated kernel pool releases its control lines, task s…
krisnye Oct 18, 2026
f2c30e3
data-ecs: a tick's report is delivered to observers with the tick's v…
krisnye Oct 18, 2026
8d8d2de
data-ecs: kernel chunks keep their create export in an application's …
krisnye Oct 18, 2026
4fdcd03
data-ecs: a run and a tick share one async step, delivering to observ…
krisnye Oct 18, 2026
198fe3e
data-ecs: guide states where declarations are rejected now that check…
krisnye Oct 18, 2026
0eda95c
data-ecs: kernel spawns are staged like main-thread spawns: each spaw…
krisnye Oct 18, 2026
30db2cc
data-ecs: a sync point copies the reused indexes it reserved as a typ…
krisnye Oct 18, 2026
9ad99b5
data-ecs: kernel spawners reserve entities in blocks, from 8 position…
krisnye Oct 18, 2026
2b07c57
data-ecs: a runner stages spawns and ends its block of reservations o…
krisnye Oct 18, 2026
9a3bbaa
data-ecs: perf record at 2b07c576 against ebde4c9b: spawn bulk kernel…
krisnye Oct 18, 2026
bd2a0f1
data-ecs: names are optional for systems, rules and finalizers, and a…
krisnye Oct 18, 2026
3256e6f
data-ecs: the guide moves to src/guide/guide.md and is rewritten smal…
krisnye Oct 18, 2026
df50aac
data-ecs: the guide regroups: archetypes join entities and components…
krisnye Oct 18, 2026
6738d6d
data-ecs: a component's or resource's traits are written once, at reg…
krisnye Oct 18, 2026
1385691
data-ecs: System.composite merges into System.create, whose arguments…
krisnye Oct 18, 2026
3359cbc
data-ecs: threads.md follows the code: threads agree on systems, rule…
krisnye Oct 18, 2026
1a18c6a
data-ecs: threads.md takes the review's fixes: the directory has a fi…
krisnye Oct 18, 2026
e4a3b44
data-ecs: threads phase 1, the shared layout directory: a header at o…
krisnye Oct 18, 2026
163299c
data-ecs: threads.md marks phase 1 built and follows the code: the he…
krisnye Oct 18, 2026
4eff591
data-ecs: perf records for threads phase 1, the shared layout directo…
krisnye Oct 18, 2026
d1d5091
data-ecs: threads phase 2, thread ports and node workers: the pool ta…
krisnye Oct 18, 2026
76276e2
data-ecs: threads.md marks phase 2 built and follows the code: ports …
krisnye Oct 18, 2026
efedcd2
data-ecs: perf records for threads phase 2, thread ports and node wor…
krisnye Oct 18, 2026
d345e63
data-ecs: threads phase 3, command rings for the pool: a worker kerne…
krisnye Oct 18, 2026
11a5ad5
data-ecs: perf records for threads phase 3, command rings for the poo…
krisnye Oct 18, 2026
c4ecbd8
data-ecs: command ring segments as a CommandBuffer's columns, which t…
krisnye Oct 18, 2026
b948fac
data-ecs: perf records for command ring segments as columns (node, ch…
krisnye Oct 18, 2026
3b80e09
data-ecs: threads phase 4, joining: world.share(port) returns a joine…
krisnye Oct 18, 2026
72fff8e
data-ecs: benchmarks remote run (an empty transaction from a joined t…
krisnye Oct 18, 2026
88bff52
data-ecs: a joined thread's dispose closes only a MessagePort it was …
krisnye Oct 18, 2026
f48c804
data-ecs: threads.md marks phase 4 built and follows the code: the ha…
krisnye Oct 18, 2026
1e1a3d1
data-ecs: perf records for threads phase 4, joining, with the new rem…
krisnye Oct 18, 2026
d661906
data-ecs: threads phase 5a, remote object columns and the move log: a…
krisnye Oct 18, 2026
31356b2
data-ecs: a joined thread reads its objects as of the sync point obse…
krisnye Oct 18, 2026
8f1670a
data-ecs: benchmarks log replay (a sync point moving 10K entities tha…
krisnye Oct 18, 2026
ed80f9c
data-ecs: a kernel's command giving a joined thread's object a value …
krisnye Oct 18, 2026
d4c15d3
data-ecs: threads.md marks phase 5a built and follows the code: stora…
krisnye Oct 18, 2026
8a621c1
data-ecs: perf records for threads phase 5a, remote object columns an…
krisnye Oct 18, 2026
f917932
data-ecs: World.Report gains warnings, World.Warning with its "blocki…
krisnye Oct 18, 2026
f391fe7
data-ecs: systems on joined threads (threads phase 5b): a claimed thr…
krisnye Oct 18, 2026
8903ceb
data-ecs: cases of systems on a joined thread, on one thread through …
krisnye Oct 18, 2026
54aa1d0
data-ecs: cases of systems on a joined worker, in node and chromium: …
krisnye Oct 18, 2026
1c1e04e
data-ecs: benchmarks handoff (ten tiers alternating the world's threa…
krisnye Oct 18, 2026
4fe0c7f
data-ecs: mailbox resource times only while the joined thread keeps u…
krisnye Oct 18, 2026
71b7709
data-ecs: threads.md marks phase 5b built and follows the code: syste…
krisnye Oct 18, 2026
ba222da
data-ecs: a joined thread's runner takes its tick from its host's row…
krisnye Oct 18, 2026
fe36a99
data-ecs: perf records for threads phase 5b, systems on joined thread…
krisnye Oct 18, 2026
f5cb7f4
data-ecs: a finalizer on another thread than the world's, which a joi…
krisnye Oct 18, 2026
06fb931
data-ecs: Finalizer.create rejects resource writes and lookups in a f…
krisnye Oct 18, 2026
c5b301f
data-ecs: finalizers on joined threads (threads phase 5c): a finalize…
krisnye Oct 18, 2026
36916f9
data-ecs: cases of finalizers on a joined worker, in node and chromiu…
krisnye Oct 18, 2026
c38f939
data-ecs: benchmark despawn objects 10K (a sync point despawning 10K …
krisnye Oct 18, 2026
9f58fd4
data-ecs: a case of a finalizer placed on a joined thread by its obje…
krisnye Oct 18, 2026
92d25ae
data-ecs: Finalizer.create and Finalizer.changes reject a finalizer o…
krisnye Oct 18, 2026
f6fc722
data-ecs: threads.md marks phase 5c built and follows the code: final…
krisnye Oct 18, 2026
71b7652
data-ecs: hot helpers a system's body reaches stay small, their slow …
krisnye Oct 18, 2026
57a104d
data-ecs: perf records for threads phase 5c, remote finalizers, with …
krisnye Oct 18, 2026
942f714
data-ecs: the interface is the minimal public contract, owned by huma…
krisnye Oct 18, 2026
90cba3b
data-ecs: the interface exports a type only when consumers would decl…
krisnye Oct 18, 2026
52b209d
data-ecs: the plugin marks main-thread system bodies it proves never …
krisnye Oct 18, 2026
5a015a1
data-ecs: tails (threads phase 6): a terminal system on a joined thre…
krisnye Oct 18, 2026
5f1a25f
data-ecs: benchmark tail prompt (ticks of a world system and a 1,000-…
krisnye Oct 18, 2026
43d5c08
data-ecs: a tail's sync, which the thread's replay stops at while it'…
krisnye Oct 18, 2026
3fdcd40
data-ecs: threads.md marks phase 6 built and follows the code: termin…
krisnye Oct 18, 2026
b1be714
data-ecs: perf records for threads phase 6, tails, with the new tail …
krisnye Oct 18, 2026
0d4b09e
data-ecs: share(port) returns nothing, its port an inline type, and j…
krisnye Oct 18, 2026
a15d12b
data-ecs: World.Warning is no longer exported; Report.warnings keeps …
krisnye Oct 18, 2026
323b3b5
data-ecs: a changes finalizer with no watch list leaves out the objec…
krisnye Oct 18, 2026
8162c18
data-ecs: test a joined thread leaving with two runs of its tails que…
krisnye Oct 18, 2026
837e1dc
data-ecs: threads.md records that finalizers on a thread other than w…
krisnye Oct 18, 2026
1c36a24
data-ecs: a joined thread returns to its event loop at least once a t…
krisnye Oct 18, 2026
eb4a730
data-ecs: a joined thread's turn of its event loop costs about a micr…
krisnye Oct 18, 2026
5671328
data-ecs: perf records for a joined thread's turn of its event loop o…
krisnye Oct 18, 2026
3c43e8a
data-ecs: tail snapshots measured against writers waiting for tails a…
krisnye Oct 18, 2026
3ec5fab
data-ecs: perf records for tail snapshots measured against writers wa…
krisnye Oct 18, 2026
3c39e7c
data-ecs: transfers: a run's Transferable input moves to the thread i…
krisnye Oct 18, 2026
dcec1e1
data-ecs: transfers: the `transfer` benchmark, in chromium (a loader …
krisnye Oct 18, 2026
13cf12b
data-ecs: phase 7 built: threads.md states transfers as built (what m…
krisnye Oct 18, 2026
a9302ae
data-ecs: samples import the public surface, as the guide does: the p…
krisnye Oct 18, 2026
8005d4a
data-ecs: the public surface names only types consumers declare with.…
krisnye Oct 18, 2026
13580fd
data-ecs: real-thread cases that timed the machine wait on conditions…
krisnye Oct 18, 2026
aa1d0e5
data-ecs: tests run in three groups, one after another: node files in…
krisnye Oct 18, 2026
64ce2c6
data-ecs: a thread whose view of shared memory missed a growth catche…
krisnye Oct 18, 2026
dd12e95
data-ecs: the guide's setup is its own short section before the basic…
krisnye Oct 18, 2026
6ca30fb
data-ecs: the event-loop case sets each timer from a run on the joine…
krisnye Oct 18, 2026
f11d2a0
data-ecs: the wake case tells ticks that stopped from ticks going on …
krisnye Oct 18, 2026
31e9caa
data-ecs: the real-thread fixtures' hang guards, which give null, -1 …
krisnye Oct 18, 2026
3c5f131
data-ecs: Schema gains two forms JSON lacks, { type: "set", items } a…
krisnye Oct 18, 2026
b17ce5a
data-ecs: components and resources are declared again, by hand, the s…
krisnye Oct 18, 2026
e822387
data-ecs: design.md and threads.md follow declared traits: declaratio…
krisnye Oct 18, 2026
0f06293
data-ecs: benchmarks of reading a world from outside it, as baselines…
krisnye Oct 19, 2026
58a6de2
data-ecs: what a system holds lives as long as its value. Worlds keep…
krisnye Oct 19, 2026
feecbf8
data-ecs: world.remove(system), next to add: takes a value add was gi…
krisnye Oct 19, 2026
2898bf2
data-ecs: perf records for system lifetimes and remove, node and chro…
krisnye Oct 19, 2026
85b434c
data-ecs: indexes, hash and unique, on the world's thread. `Index<D>`…
krisnye Oct 19, 2026
9ad193a
data-ecs: index benchmarks, and hash indexes made faster for them: bu…
krisnye Oct 19, 2026
e2d9228
data-ecs: sorted indexes. `sorted: true` keeps entries in key order, …
krisnye Oct 19, 2026
a82ce60
data-ecs: kernels look up through indexes on the world's thread. A lo…
krisnye Oct 19, 2026
2f2097a
data-ecs: index lookups on pool workers and joined threads. Kernels o…
krisnye Oct 19, 2026
4e2e7ef
data-ecs: hash indexes built again in phases, across the pool. A stru…
krisnye Oct 19, 2026
1fe3f25
data-ecs: index property tests read through kernels too. Each round o…
krisnye Oct 19, 2026
b346a3c
data-ecs: `order` on systems. `order: index`, a sorted index, runs th…
krisnye Oct 19, 2026
45cb848
data-ecs: indexes in the design, threads, perf records and guide. des…
krisnye Oct 19, 2026
cfb4b7e
data-ecs: perf records for indexes, node; and the open regression of …
krisnye Oct 19, 2026
019c861
data-ecs: perf records for indexes, chromium. The pool's index benchm…
krisnye Oct 19, 2026
1d99db6
data-ecs: design.md tracks indexes served by other indexes of one key…
krisnye Oct 19, 2026
4f4c3b1
data-ecs: index lists and their rows share one hidden class. Lists de…
krisnye Oct 19, 2026
8e97261
data-ecs: a lookup's rows on the world's thread check one count, not …
krisnye Oct 19, 2026
3050aef
data-ecs: a lookup makes at most 256 rows ahead of `at`. Since 4f4c3b…
krisnye Oct 19, 2026
d8c57c3
data-ecs: a refresh lists changed rows once, and moves a bucket's ent…
krisnye Oct 19, 2026
ff3decf
data-ecs: a refresh checks once whether an index's key holds objects.…
krisnye Oct 19, 2026
c20ed04
data-ecs: a sorted list makes the rows of its last 256 positions ahea…
krisnye Oct 19, 2026
a20e05e
data-ecs: perf records for the index paths, node and chromium. Agains…
krisnye Oct 19, 2026
2292307
data-ecs: design.md and perf.md for the index paths. design.md states…
krisnye Oct 19, 2026
266a1ca
data-ecs: a task posted after a system's removal never names it. A ti…
krisnye Oct 19, 2026
af4c72f
data-ecs: tests of what a world holds finish optimizing compiles befo…
krisnye Oct 19, 2026
fc2e459
data-ecs: synced systems, the interface. A declaration's `synced: tru…
krisnye Oct 19, 2026
9e4e75f
data-ecs: memory.md holds the maintainers' decisions about working on…
krisnye Oct 20, 2026
ba431ce
data-ecs: synced systems run after each run's and tick's sync point. …
krisnye Oct 20, 2026
dc0ed50
data-ecs: design.md, threads.md, perf.md and the guide for synced sys…
krisnye Oct 20, 2026
a0eedac
data-ecs: lookups by entity report changes. A lookup by entity declar…
krisnye Oct 20, 2026
f3023ea
data-ecs: kernels' lookups by entity report changes. The compiler tak…
krisnye Oct 20, 2026
e312918
data-ecs: benchmarks of lookups by entity with and without changed. `…
krisnye Oct 20, 2026
5b1b2ce
data-ecs: design.md and threads.md for lookups by entity with changed…
krisnye Oct 20, 2026
f50a399
data-ecs: an index's key may be empty. Index.create({ key: [] }) hold…
krisnye Oct 19, 2026
b5b0938
data-ecs: indexes without a key, on every thread and in kernels. A wo…
krisnye Oct 20, 2026
b6f72f7
data-ecs: a sorted table's entries take an even number of words, padd…
krisnye Oct 20, 2026
ffea07d
data-ecs: design.md, threads.md, perf.md and the guide for indexes wi…
krisnye Oct 20, 2026
366cfba
data-ecs: World.add and World.remove on a joined thread take synced s…
krisnye Oct 20, 2026
312853f
data-ecs: synced systems on joined threads. A joined thread's add and…
krisnye Oct 20, 2026
9657a6d
data-ecs: benchmarks of synced systems on joined threads. `joined syn…
krisnye Oct 20, 2026
fae5b3c
data-ecs: design.md, threads.md and perf.md for synced systems on joi…
krisnye Oct 20, 2026
37e1852
data-ecs: @adobe/data-ecs/observe, observer factories on synced syste…
krisnye Oct 20, 2026
6f6c691
data-ecs: observers' equivalence suite. The cases of observers.test.t…
krisnye Oct 20, 2026
865693a
data-ecs: observer factories' benchmarks, and faster plans. Counts an…
krisnye Oct 20, 2026
799754e
data-ecs: a ranged tracker's lookup takes its range as the index's ke…
krisnye Oct 20, 2026
dcfddb7
data-ecs: observer factories' scans gather into their values with one…
krisnye Oct 20, 2026
799a0e1
data-ecs: a synced pass reads back what the GPU wrote, the key parts …
krisnye Oct 20, 2026
d66c9bf
data-ecs: synced systems a joined worker adds: the rows case forces i…
krisnye Oct 20, 2026
9443e81
data-ecs: joined threads' synced posts read back what the GPU wrote b…
krisnye Oct 20, 2026
7fd763d
data-ecs: a synced system added again after its removal registers at …
krisnye Oct 20, 2026
7e2adb2
data-ecs: observer factories' scans of one entry with at most one tes…
krisnye Oct 20, 2026
320260b
data-ecs: design.md and perf.md for synced systems added again with t…
krisnye Oct 20, 2026
3d55888
data-ecs: the guide and samples read through synced systems, not obse…
krisnye Oct 20, 2026
40c584a
data-ecs: a spawn or add site's keys are read in module scope, as the…
krisnye Oct 20, 2026
caa750c
data-ecs: a joined thread's synced systems look up through indexes wi…
krisnye Oct 20, 2026
49ddaca
data-ecs: observer factories notify a subscriber whose first value wa…
krisnye Oct 20, 2026
ce236d5
data-ecs: memory.md: consumers read through plain synced systems; the…
krisnye Oct 20, 2026
3270ae9
data-ecs: the observer factories are internal. package.json no longer…
krisnye Oct 20, 2026
93cbd87
data-ecs: observer factories on a joined thread's world. A world whos…
krisnye Oct 20, 2026
b0f4e65
data-ecs: a joined thread claims only a synced post the world finishe…
krisnye Oct 20, 2026
64bd0a6
data-ecs: a synced system placed on a joined thread by the objects it…
krisnye Oct 20, 2026
342e7d9
data-ecs: observer factories rethrow out of band a rejected run of th…
krisnye Oct 20, 2026
3592aa9
data-ecs: joining.cases.ts runs the case of a thread joined to a worl…
krisnye Oct 20, 2026
3790051
data-ecs: a joined thread marks the synced post it claimed as handled…
krisnye Oct 20, 2026
eafe5d7
data-ecs: benchmarks of the observer factories on a joined thread, an…
krisnye Oct 20, 2026
1a56a59
data-ecs: threads.md says which posts word a joined thread's claim ma…
krisnye Oct 20, 2026
e3f51fb
data-ecs: perf.md: the joined factories' benchmarks in chromium
krisnye Oct 20, 2026
1d3c4e0
data-ecs: a world's wake of a joined thread marks it unread before it…
krisnye Oct 20, 2026
95e5b81
data-ecs: synced systems on joined threads reading only struct resour…
krisnye Oct 20, 2026
8ce1ea6
data-ecs: design.md, threads.md and perf.md for synced posts holding …
krisnye Oct 20, 2026
2668fdc
data-ecs: tests read through the observer factories, not world.observe
krisnye Oct 20, 2026
b30faed
data-ecs: benchmarks read without the built-in observers
krisnye Oct 20, 2026
65cea56
data-ecs: benchmarks count ticks by the clock's changed filter, and l…
krisnye Oct 20, 2026
edd39fd
data-ecs: perf.md: benchmarks without the built-in observers, against…
krisnye Oct 20, 2026
87a8149
data-ecs: observer factories rethrow only their own systems' failures
krisnye Oct 20, 2026
10ec1ce
data-ecs: synced-contained's joined worker test no longer races its a…
krisnye Oct 20, 2026
e96e518
data-ecs: tests and benchmarks no longer use the built-in observers
krisnye Oct 20, 2026
aba64dd
data-ecs: the built-in observers and mailboxes are gone
krisnye Oct 20, 2026
116d00f
data-ecs: design.md, threads.md, perf.md and memory.md without built-…
krisnye Oct 20, 2026
e3c30aa
data-ecs: `synced: true` is `observer: true`
krisnye Oct 20, 2026
5ba8cdf
data-ecs: perf records after the built-in observers' removal and the …
krisnye Oct 20, 2026
a99136a
data-ecs: todo sample whose systems drive every DOM change
krisnye Oct 20, 2026
f2c0b64
data-ecs: todo sample filters rows by a binding of each row, with a b…
krisnye Oct 20, 2026
e420a42
data-ecs: todo sample features describe themselves to the app
krisnye Oct 20, 2026
d0def35
data-ecs: todo sample checks its DOM writes follow what changed, and …
krisnye Oct 20, 2026
05d169d
data-ecs: todo sample README: how the DOM is driven, the structure ke…
krisnye Oct 20, 2026
87e13f4
data-ecs: todo sample comments and line lengths
krisnye Oct 20, 2026
4b7bec3
data-ecs: todo sample keeps a moved row focused, moving it with moveB…
krisnye Oct 20, 2026
71db3cc
data-ecs: todo sample README: moved rows keep their focus
krisnye Oct 20, 2026
b3a1e70
data-ecs: todo sample logs ticks' failures and rejected runs
krisnye Oct 20, 2026
60582a1
data-ecs: todo sample makes rows only while there's a list, and moves…
krisnye Oct 20, 2026
e737c1b
data-ecs: todo sample's import test keeps its layers, and the page se…
krisnye Oct 20, 2026
9f8cb5e
data-ecs: todo sample's proportionality test counts how often DOM sys…
krisnye Oct 20, 2026
75fc6e1
data-ecs: todo sample keeps focus off hidden rows, ignores Enter whil…
krisnye Oct 20, 2026
c5c2548
data-ecs: todo sample measures every number it reports, the tick afte…
krisnye Oct 20, 2026
1e1be52
data-ecs: todo sample profiles where a run's fixed cost goes
krisnye Oct 20, 2026
318d301
data-ecs: todo sample README: findings against the current API, and m…
krisnye Oct 20, 2026
ef0ce2b
data-ecs: followups.md tracks open decisions and the todo sample's fi…
krisnye Oct 20, 2026
3775940
data-ecs: CLAUDE.md: archetypes are named as types
krisnye Oct 21, 2026
92724d8
data-ecs: reports are entities, and a run resolves to its number
krisnye Oct 21, 2026
11ef62f
data-ecs: todo sample logs failures from reports in one observer system
krisnye Oct 21, 2026
76f4670
data-ecs: followups.md: computed index keys and discriminated struct …
krisnye Oct 21, 2026
379726a
data-ecs: every run and tick has a report: `Report.run`, a struct of …
krisnye Oct 21, 2026
3803786
data-ecs: a joined thread refreshes its views of the world's memory b…
krisnye Oct 21, 2026
32d5b18
data-ecs: followups.md: report timing stays on, with what turning it …
krisnye Oct 21, 2026
1cdc495
data-ecs: todo sample: features/index.ts exports every feature, and t…
krisnye Oct 21, 2026
296fc8f
data-ecs: a system's `target` names an input field holding an entity:…
krisnye Oct 21, 2026
2ba2dc3
data-ecs: todo sample: toggling, editing and deleting a todo are syst…
krisnye Oct 21, 2026
977cb36
data-ecs: remove test failure screenshots committed by mistake
krisnye Oct 21, 2026
5160ba0
data-ecs: no runtime dependencies: the plugin's identify transform ma…
krisnye Oct 21, 2026
31a49ea
data-ecs: followups.md: queue the sample's World.create, index change…
krisnye Oct 21, 2026
1c20320
data-ecs: World.run's doc comment, the tick's and design.md's observe…
krisnye Oct 21, 2026
3426c41
data-ecs: todo sample: its app, tests and benchmarks create their wor…
krisnye Oct 21, 2026
2cb5b39
data-ecs: todo sample: shared/attach.ts's attach(element, entity) rec…
krisnye Oct 21, 2026
8b0c2f4
data-ecs: an index lookup's changed: true makes the index a change fi…
krisnye Oct 21, 2026
c6bb3c8
data-ecs: todo sample: bindSummary and bindToggleAll are one observer…
krisnye Oct 21, 2026
84c3b56
data-ecs: the plugin takes an object literal given to one component's…
krisnye Oct 21, 2026
139c513
data-ecs: strings live in shared memory and have no thread: any strin…
krisnye Oct 21, 2026
3f13c90
ecs: data-ecs is now packages/ecs, named @adobe/ecs at version 0.0.0,…
krisnye Oct 21, 2026
4d03c6d
ecs: World.create, from the package root: import { World } from "@ado…
krisnye Oct 21, 2026
ee4c754
ecs: followups: the filtered up benchmarks drifted from this machine'…
krisnye Oct 21, 2026
ea150c0
ecs: World.join, the other entry point: World is { create, join } at …
krisnye Oct 21, 2026
ace6707
ecs: served to node, a kernel's url is its module as a data: url, whi…
krisnye Oct 21, 2026
f8a87ba
ecs: struct values read and write through code generated per layout: …
krisnye Oct 21, 2026
9e5e7f3
ecs: followups: kernel lookups' has and not have a consumer, and rend…
krisnye Oct 21, 2026
f78f9ce
ecs: kernel lookups by entity take has and not, as any system's do: t…
krisnye Oct 21, 2026
9f773aa
ecs: a change set's replaced lists the components an add gave a value…
krisnye Oct 21, 2026
c21e8e1
ecs: commands apply in the order issued, now stated: a run's systems …
krisnye Oct 21, 2026
1367105
ecs: a schema describes an intersection that equals its type: registr…
krisnye Oct 22, 2026
be0be6e
ecs: a declaration using objects of different threads says which: the…
krisnye Oct 22, 2026
a4eef10
ecs: a sync point waits only for tails that read the world's memory, …
krisnye Oct 22, 2026
2115873
ecs: a CPU write to a GPU copy uploads only the chunks it changed, no…
krisnye Oct 22, 2026
0410934
ecs: followups: paint order across render tables, a proposal for orde…
krisnye Oct 22, 2026
8f90134
ecs: System.RenderContext and System.RenderTable are exported, so a p…
krisnye Oct 22, 2026
8e62c31
ecs: memory: checks cover only this package, which is independent of …
krisnye Oct 22, 2026
63f7570
ecs: @adobe/ecs publishes with the other public packages (private fal…
krisnye Oct 22, 2026
9be9a22
ecs: the package ships src, so its source maps resolve and agents can…
krisnye Oct 22, 2026
4f1c43e
ecs: .vitest/, browser tests' attachments and failure screenshots, is…
krisnye Oct 22, 2026
8fe5d51
ecs: the WGSL builtins test holds sin and cos to WGSL's bound, an abs…
krisnye Oct 22, 2026
17c44df
Merge branch 'main' into knye/new-ecs
krisnye Oct 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
94 changes: 94 additions & 0 deletions .claude/rules/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
{
"version": "mohxki3f",
"releaseTag": "rules-2026.04.28.1777338695005",
"generated": "2026-04-28T01:11:35.067Z",
"lastUpdated": "2026-06-25T23:40:22.941Z",
"lastUpdateReleaseTag": "rules-2026.04.28.1777338695005",
"installedDomains": [
"security-global",
"security-lang"
],
"files": {
"security-global/security-global-api.mdc": {
"sha256": "bc5510baa27b5aaa9998ed22a5cb35c8636eb20951eb1f4adca9fb2bd3b7cb9f",
"domain": "security-global"
},
"security-global/security-global-auth.mdc": {
"sha256": "46d4e0b6a5c0ac5693a6346b0df52a81066d9b4d6af93b1caffacde1cff65575",
"domain": "security-global"
},
"security-global/security-global-base.mdc": {
"sha256": "caa12169275a156517e6602213d54871c250d90e3ed56edb429d44ac63796936",
"domain": "security-global"
},
"security-global/security-global-data-protection.mdc": {
"sha256": "cd996de2e9bd366128ab45f04d96755340aa3949114734e0fb57d7f88b71d9fc",
"domain": "security-global"
},
"security-global/security-global-dangerous-flows.mdc": {
"sha256": "c1d5ef612881bd724362caba1d0295ffeee00ebf61f190cbd9399fcbd6683e35",
"domain": "security-global"
},
"security-global/security-global-dependency-mgmt.mdc": {
"sha256": "c7941d14cc884098112a6fa709c0cb7bd1bdd1e6bd4d81320aa86597885ea0c4",
"domain": "security-global"
},
"security-global/security-global-error-handling.mdc": {
"sha256": "41bff2ae7a4dce1eebd89b11a801a4a0d5f133568aeff117541b4eef932d5a57",
"domain": "security-global"
},
"security-global/security-global-injection-prevention.mdc": {
"sha256": "f375934ea9923e7951e4796acbe42676f7db783bb326adaaec3b996ad706211f",
"domain": "security-global"
},
"security-global/security-global-input-validation.mdc": {
"sha256": "b5eb90ff796e9d6eccbe4fb568e82e6b05d1e81df309426eaa6a7e6799c664e1",
"domain": "security-global"
},
"security-global/security-global-mcp-usage.mdc": {
"sha256": "9eea0468b8179d3e98bfc65dd246e1f77740d0500842e6ccce5bd11ab3d19ab2",
"domain": "security-global"
},
"security-global/security-global-output-encoding.mdc": {
"sha256": "c8e418e38ebb547675a0e9b731b42b5ee79312f91cee4267e9227613d5628748",
"domain": "security-global"
},
"security-global/security-global-pathtraversal-prevention.mdc": {
"sha256": "801cdea14c4b81a4fc3cf60883a4f28ab24d8e077a871f66e86590ed2dba455b",
"domain": "security-global"
},
"security-global/security-global-secure-configuration.mdc": {
"sha256": "1b6078fada5d8f435e57c14d936830b699f58b203fb1c4040e6703397a175c5d",
"domain": "security-global"
},
"security-global/security-global-snyk.mdc": {
"sha256": "924cec9c80203e8681704a5174207bab3b6f42a3630708dd7d7fccc4fde5e1b4",
"domain": "security-global"
},
"security-global/security-global-sql-usage.mdc": {
"sha256": "b2fcbc0a8c26625e0e2099c26e17a78ba3b01a98672a28f2fed817f71dd19b7e",
"domain": "security-global"
},
"security-global/security-global-ssrf-prevention.mdc": {
"sha256": "0aa1c358b7e89864b5b0e6f5e1ae28934dcc48a85039d470f1d25b116e96ea54",
"domain": "security-global"
},
"security-global/security-global-xxe-prevention.mdc": {
"sha256": "e9711b4f1db3b3c3146a21d17af4610209c4e56bb070e2c16c416c22e7fb5409",
"domain": "security-global"
},
"security-lang/security-lang-c.mdc": {
"sha256": "96c7a93ca810550cad2e84aa9ff360d63d4fa8eb48eb849070e1b19ff9d0e2e3",
"domain": "security-lang"
},
"security-lang/security-lang-node.mdc": {
"sha256": "9019cc2470bbfc6d01c5c34aff42498a91b59ca9766a34a79de1ebe93cc6c587",
"domain": "security-lang"
}
},
"stats": {
"totalFiles": 19,
"missingFiles": 0,
"domains": 2
}
}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,6 @@ packages/data/references

# Playwright MCP capture artifacts
.playwright-mcp/

# Vitest browser attachments and failure screenshots
.vitest/
2 changes: 1 addition & 1 deletion packages/data-ai/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
"devDependencies": {
"@adobe/data": "workspace:*",
"typescript": "^5.8.3",
"vitest": "^1.6.0"
"vitest": "^5.0.5"
},
"license": "MIT"
}
6 changes: 3 additions & 3 deletions packages/data-gpu-hopper/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@
"@webgpu/types": "^0.1.61",
"jsdom": "^24.1.0",
"typescript": "^5.8.3",
"vite": "^5.1.1",
"vite-plugin-checker": "^0.12.0",
"vitest": "^1.6.0"
"vite": "^8.3.4",
"vite-plugin-checker": "^0.14.5",
"vitest": "^5.0.5"
}
}
9 changes: 6 additions & 3 deletions packages/data-gpu-hopper/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import checker from "vite-plugin-checker";
export default defineConfig({
plugins: [checker({ typescript: true })],
optimizeDeps: {
esbuildOptions: {
tsconfigRaw: {
compilerOptions: { experimentalDecorators: true, useDefineForClassFields: false },
// Legacy decorators and `useDefineForClassFields: false`, as tsconfig.json sets for sources.
rolldownOptions: {
transform: {
decorator: { legacy: true },
assumptions: { setPublicClassFields: true },
typescript: { removeClassFieldsWithoutInitializer: true },
},
},
},
Expand Down
4 changes: 2 additions & 2 deletions packages/data-gpu-samples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
"devDependencies": {
"@webgpu/types": "^0.1.61",
"typescript": "^5.8.3",
"vite": "^5.1.1",
"vite-plugin-checker": "^0.12.0"
"vite": "^8.3.4",
"vite-plugin-checker": "^0.14.5"
}
}
9 changes: 6 additions & 3 deletions packages/data-gpu-samples/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import checker from "vite-plugin-checker";
export default defineConfig({
plugins: [checker({ typescript: true })],
optimizeDeps: {
esbuildOptions: {
tsconfigRaw: {
compilerOptions: { experimentalDecorators: true, useDefineForClassFields: false },
// Legacy decorators and `useDefineForClassFields: false`, as tsconfig.json sets for sources.
rolldownOptions: {
transform: {
decorator: { legacy: true },
assumptions: { setPublicClassFields: true },
typescript: { removeClassFieldsWithoutInitializer: true },
},
},
},
Expand Down
2 changes: 1 addition & 1 deletion packages/data-gpu/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"devDependencies": {
"@webgpu/types": "^0.1.61",
"typescript": "^5.8.3",
"vitest": "^1.6.0"
"vitest": "^5.0.5"
},
"exports": {
".": {
Expand Down
6 changes: 3 additions & 3 deletions packages/data-lit-space-rock-game/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
"@adobe/data-testing": "workspace:*",
"jsdom": "^24.1.0",
"typescript": "^5.8.3",
"vite": "^5.1.1",
"vite-plugin-checker": "^0.12.0",
"vitest": "^1.6.0"
"vite": "^8.3.4",
"vite-plugin-checker": "^0.14.5",
"vitest": "^5.0.5"
}
}
9 changes: 6 additions & 3 deletions packages/data-lit-space-rock-game/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import checker from "vite-plugin-checker";
export default defineConfig({
plugins: [checker({ typescript: true })],
optimizeDeps: {
esbuildOptions: {
tsconfigRaw: {
compilerOptions: { experimentalDecorators: true, useDefineForClassFields: false },
// Legacy decorators and `useDefineForClassFields: false`, as tsconfig.json sets for sources.
rolldownOptions: {
transform: {
decorator: { legacy: true },
assumptions: { setPublicClassFields: true },
typescript: { removeClassFieldsWithoutInitializer: true },
},
},
},
Expand Down
6 changes: 3 additions & 3 deletions packages/data-lit-tictactoe/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
"@adobe/data-testing": "workspace:*",
"jsdom": "^24.1.0",
"typescript": "^5.8.3",
"vite": "^5.1.1",
"vite-plugin-checker": "^0.12.0",
"vitest": "^1.6.0"
"vite": "^8.3.4",
"vite-plugin-checker": "^0.14.5",
"vitest": "^5.0.5"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@
// @vitest-environment jsdom
// jsdom only so the lazy child-element wrappers (`void import(...)`) can load;
// the assertions never touch the DOM.
import { describe, it, expect } from "vitest";
import { afterAll, describe, it, expect } from "vitest";
import { Template } from "@adobe/data-lit";
import { render } from "./tictactoe-app-presentation.js";

// The wrappers start loading their elements; let that finish before the environment is torn down.
afterAll(async () => {
await Promise.all([
import("../tictactoe-board/tictactoe-board-element.js"),
import("../tictactoe-hud/tictactoe-hud-element.js"),
]);
});

describe("tictactoe-app-presentation", () => {
it("mounts the board and the hud", () => {
const t = Template.from(render());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,15 @@
// @vitest-environment jsdom
// jsdom only so the lazy cell wrapper (`void import(...)`) can load; the
// assertions never touch the DOM.
import { describe, it, expect } from "vitest";
import { afterAll, describe, it, expect } from "vitest";
import { Template } from "@adobe/data-lit";
import { render } from "./tictactoe-board-presentation.js";

// The wrappers start loading their elements; let that finish before the environment is torn down.
afterAll(async () => {
await import("../tictactoe-cell/tictactoe-cell-element.js");
});

describe("tictactoe-board-presentation", () => {
it("renders a 3x3 board of nine cells", () => {
const t = Template.from(render());
Expand Down
9 changes: 6 additions & 3 deletions packages/data-lit-tictactoe/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import checker from "vite-plugin-checker";
export default defineConfig({
plugins: [checker({ typescript: true })],
optimizeDeps: {
esbuildOptions: {
tsconfigRaw: {
compilerOptions: { experimentalDecorators: true, useDefineForClassFields: false },
// Legacy decorators and `useDefineForClassFields: false`, as tsconfig.json sets for sources.
rolldownOptions: {
transform: {
decorator: { legacy: true },
assumptions: { setPublicClassFields: true },
typescript: { removeClassFieldsWithoutInitializer: true },
},
},
},
Expand Down
6 changes: 3 additions & 3 deletions packages/data-lit-todo/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@
"@adobe/data-testing": "workspace:*",
"jsdom": "^24.1.0",
"typescript": "^5.8.3",
"vite": "^5.1.1",
"vite-plugin-checker": "^0.12.0",
"vitest": "^1.6.0"
"vite": "^8.3.4",
"vite-plugin-checker": "^0.14.5",
"vitest": "^5.0.5"
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
// © 2026 Adobe. MIT License. See /LICENSE for details.
// @vitest-environment jsdom
// jsdom only so the lazy child-element wrappers can load; assertions never touch the DOM.
import { describe, it, expect } from "vitest";
import { afterAll, describe, it, expect } from "vitest";
import { Template } from "@adobe/data-lit";
import { render } from "./todo-app-presentation.js";

// The wrappers start loading their elements; let that finish before the environment is torn down.
afterAll(async () => {
await Promise.all([
import("../todo-toolbar/todo-toolbar-element.js"),
import("../todo-list/todo-list-element.js"),
import("../../../assign/ui/users-tab/users-tab-element.js"),
]);
});

const props = (over: Partial<Parameters<typeof render>[0]> = {}) => ({
tab: "todos" as const,
setTab: () => {},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
// © 2026 Adobe. MIT License. See /LICENSE for details.
// @vitest-environment jsdom
// jsdom only so the lazy assign wrappers can load; assertions never touch the DOM.
import { describe, it, expect } from "vitest";
import { afterAll, describe, it, expect } from "vitest";
import { nothing } from "lit";
import { Template } from "@adobe/data-lit";
import { render } from "./todo-row-presentation.js";

// The wrappers start loading their elements; let that finish before the environment is torn down.
afterAll(async () => {
await Promise.all([
import("../../../assign/ui/assignee-chips/assignee-chips-element.js"),
import("../../../assign/ui/assignee-dropdown/assignee-dropdown-element.js"),
]);
});

const props = (over: Partial<Parameters<typeof render>[0]> = {}) => ({
ready: true,
name: "Buy milk",
Expand Down
9 changes: 6 additions & 3 deletions packages/data-lit-todo/vite.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import checker from "vite-plugin-checker";
export default defineConfig({
plugins: [checker({ typescript: true })],
optimizeDeps: {
esbuildOptions: {
tsconfigRaw: {
compilerOptions: { experimentalDecorators: true, useDefineForClassFields: false },
// Legacy decorators and `useDefineForClassFields: false`, as tsconfig.json sets for sources.
rolldownOptions: {
transform: {
decorator: { legacy: true },
assumptions: { setPublicClassFields: true },
typescript: { removeClassFieldsWithoutInitializer: true },
},
},
},
Expand Down
2 changes: 1 addition & 1 deletion packages/data-lit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"happy-dom": "^20.14.0",
"lit": "^3.3.1",
"typescript": "^5.8.3",
"vitest": "^1.6.0"
"vitest": "^5.0.5"
},
"exports": {
".": {
Expand Down
6 changes: 3 additions & 3 deletions packages/data-p2p-tictactoe/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@
"devDependencies": {
"@adobe/data-testing": "workspace:*",
"typescript": "^5.8.3",
"vite": "^5.1.1",
"vite-plugin-checker": "^0.12.0",
"vitest": "^1.6.0"
"vite": "^8.3.4",
"vite-plugin-checker": "^0.14.5",
"vitest": "^5.0.5"
}
}
9 changes: 6 additions & 3 deletions packages/data-p2p-tictactoe/vite.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import checker from "vite-plugin-checker";
export default defineConfig({
plugins: [checker({ typescript: true })],
optimizeDeps: {
esbuildOptions: {
tsconfigRaw: {
compilerOptions: { experimentalDecorators: true, useDefineForClassFields: false },
// Legacy decorators and `useDefineForClassFields: false`, as tsconfig.json sets for sources.
rolldownOptions: {
transform: {
decorator: { legacy: true },
assumptions: { setPublicClassFields: true },
typescript: { removeClassFieldsWithoutInitializer: true },
},
},
},
Expand Down
8 changes: 4 additions & 4 deletions packages/data-persistence/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@
"@adobe/data": "workspace:*"
},
"devDependencies": {
"@vitest/browser": "^1.6.0",
"playwright": "^1.46.1",
"@vitest/browser-playwright": "^5.0.5",
"playwright": "^1.64.1",
"typescript": "^5.8.3",
"vite": "^5.1.1",
"vitest": "^1.6.0"
"vite": "^8.3.4",
"vitest": "^5.0.5"
},
"exports": {
".": {
Expand Down
Loading
Loading