Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
bfd0945
feat(lpc-node-registry): add requester-owned ArtifactStore (M1)
Yona-Appletree May 21, 2026
9753c95
feat(lpc-node-registry): add NodeDefRegistry with load_root and sync …
Yona-Appletree May 21, 2026
4d36e89
fix(engine): mark fixture mapping errors on node instead of aborting …
Yona-Appletree May 21, 2026
442544f
feat(lpc-node-registry): add SourceFileSlot resolve and materialize (M3)
Yona-Appletree May 22, 2026
2e0c3e0
feat(lpc-node-registry): unified sync API and fs-change semantics (M4)
Yona-Appletree May 22, 2026
f041cde
docs(changeset): promote ChangeSet roadmap and restructure milestones
Yona-Appletree May 22, 2026
d265ce5
docs(changeset): add M1 change language and overlay plan
Yona-Appletree May 22, 2026
d41773e
feat(lpc-node-registry): ChangeSet types and overlay lifecycle (M1)
Yona-Appletree May 22, 2026
c3a8e53
docs(changeset): add M2 effective projection plan
Yona-Appletree May 22, 2026
48a86d1
feat(lpc-node-registry): effective projection via NodeDefView (M2)
Yona-Appletree May 22, 2026
81ff051
feat(lpc-node-registry): overlay asset reads for materialize (M3)
Yona-Appletree May 22, 2026
9234bb9
feat(lpc-node-registry): slot ops on overlay + TOML serialize (M4)
Yona-Appletree May 22, 2026
9be6818
feat(lpc-node-registry): commit promotion overlay to fs + entries (M5)
Yona-Appletree May 22, 2026
a9c644b
feat(lpc-node-registry): diff + equivalence gate for compose/morph (M6)
Yona-Appletree May 22, 2026
e8ca23b
feat(lpc-node-registry): gate diff harness behind diff feature
Yona-Appletree May 22, 2026
b58ea53
refactor(lpc-node-registry): Edit* vocabulary and SlotOverlay rename
Yona-Appletree May 22, 2026
a7f6ff6
feat(lpc-node-registry): M8 unified sync with lean pending edit map
Yona-Appletree May 22, 2026
9c3b157
feat(lpc-model): M9 NodeInvocation Ref|Def enum + VariantSet edit ops
Yona-Appletree May 22, 2026
cfa2c12
feat(lpc-model): add Unset default variant to NodeInvocation
Yona-Appletree May 22, 2026
b1c4e06
refactor(lpc-node-registry): split EditOp into SlotEdit and AssetEdit
Yona-Appletree May 22, 2026
17ea345
refactor(lpc-node-registry): M0.1 ArtifactId keys and edit serde tags
Yona-Appletree May 26, 2026
3a3fda1
refactor: minor registry renames
Yona-Appletree May 26, 2026
908d378
refactor(lpc-node-registry): store-owned artifact catalog (M0.1b)
Yona-Appletree May 26, 2026
f22f743
refactor(lpc-node-registry): use ArtifactLocation as sole artifact id…
Yona-Appletree May 26, 2026
ae63cd2
refactor(lpc-model): rename ArtifactLocator to ArtifactSpecifier
Yona-Appletree May 26, 2026
6895d6c
refactor(lpc-node-registry): drop push asset invalidation from sync
Yona-Appletree May 26, 2026
442da90
refactor: remove NodeDefId
Yona-Appletree May 27, 2026
7f94a9f
refactor: ArtifactSpecifier -> ArtifactSpec; ArtifactLocation -> Arti…
Yona-Appletree May 27, 2026
f245141
feat(lpc-node-registry): replace slot overlay with artifact pending o…
Yona-Appletree May 27, 2026
1c91693
refactor(lpc-node-registry): use PendingSlotTarget for overlay slot u…
Yona-Appletree May 27, 2026
15729db
refactor(lpc-node-registry): remove wire edit types, focus overlay API
Yona-Appletree May 27, 2026
a506417
refactor(lpc-node-registry): have diff return ArtifactOverlay
Yona-Appletree May 27, 2026
8b6fac2
refactor(lpc-node-registry): simplify slot edit ops
Yona-Appletree May 27, 2026
9875c34
fix(lpc-node-registry): resolve slot edit review findings
Yona-Appletree May 27, 2026
5593db9
refactor(lpc-node-registry): separate registry structure
Yona-Appletree May 27, 2026
13f928e
refactor(lpc-node-registry): split edit model and apply layers
Yona-Appletree May 27, 2026
505f3f3
wip: edit model
Yona-Appletree Jun 11, 2026
3b71e53
feat(node-registry): canonicalize project overlay api
Yona-Appletree Jun 11, 2026
e17834d
refactor: ArtifactLoc -> ArtifactLocation
Yona-Appletree Jun 11, 2026
eff682e
refactor: move registry identity types into model
Yona-Appletree Jun 11, 2026
b60aa77
test: update source slot sync for ref invocations
Yona-Appletree Jun 11, 2026
2d5c3c2
rebuild node registry as project registry
Yona-Appletree Jun 11, 2026
77dc2a4
refactor: apply renames
Yona-Appletree Jun 11, 2026
62d3400
refactor: project_artifact_bytes -> apply_overlay_bytes
Yona-Appletree Jun 11, 2026
e86e479
clean up asset overlay application
Yona-Appletree Jun 11, 2026
0e1db6a
refactor: lpc-registry renamiing
Yona-Appletree Jun 11, 2026
eb80d20
refactor: introduce asset source model
Yona-Appletree Jun 11, 2026
b271744
refactor: combine materialize code
Yona-Appletree Jun 12, 2026
4806377
test: add registry project fixtures
Yona-Appletree Jun 12, 2026
16f0ec7
refactor: name node invocation slots
Yona-Appletree Jun 12, 2026
052ef9d
docs: record project registry cutover decisions
Yona-Appletree Jun 12, 2026
e4f2e03
feat: add project graph and asset materialization
Yona-Appletree Jun 12, 2026
ce8abec
refactor: consolidate ideas around project in lpc-model
Yona-Appletree Jun 12, 2026
2de2dc8
refactor: additional project model refactors
Yona-Appletree Jun 12, 2026
a0a6ce6
refactor: docs and minor refactoring of project changes
Yona-Appletree Jun 12, 2026
be36461
refactor: simplify project change summaries
Yona-Appletree Jun 12, 2026
74529cb
refactor: share generic change summary model
Yona-Appletree Jun 12, 2026
79f3488
refactor: organizing inventory and assets
Yona-Appletree Jun 12, 2026
ce60ece
refactor: remove AssetSource::Url
Yona-Appletree Jun 12, 2026
324024a
refactor(engine): load projects through registry
Yona-Appletree Jun 12, 2026
f2551f1
refactor: route project edits through overlays
Yona-Appletree Jun 12, 2026
4b217c2
docs: refactor note
Yona-Appletree Jun 12, 2026
c758c60
refactor: apply project registry changes incrementally
Yona-Appletree Jun 12, 2026
cdfc10c
chore: clean project registry fs refresh path
Yona-Appletree Jun 12, 2026
b97a1cb
refactor: tighten asset inventory vocabulary
Yona-Appletree Jun 12, 2026
761625c
refactor: introduce asset slots
Yona-Appletree Jun 13, 2026
69d3b5c
fix: update cli project template asset slot
Yona-Appletree Jun 13, 2026
187ad83
fix: align esp-radio patch
Yona-Appletree Jun 13, 2026
a76dcff
Surface cached shader failures in runtime status
Yona-Appletree Jun 13, 2026
17d441e
docs: note fw-esp32 linked build context
Yona-Appletree Jun 3, 2026
214194f
Extract lpc-hardware crate
Yona-Appletree Jun 12, 2026
00ba29b
refactor: organize lpc-hardware
Yona-Appletree Jun 12, 2026
d6fbd59
refactor: hardware-* -> hw-*
Yona-Appletree Jun 12, 2026
f4f79df
Document and tighten hardware crate boundaries
Yona-Appletree Jun 12, 2026
c010d23
Make ESP32 GPIO endpoints manifest-driven
Yona-Appletree Jun 13, 2026
956863e
Update ESP32 firmware for current HAL APIs
Yona-Appletree Jun 13, 2026
b4e78cd
chore: lock esp-radio 0.18 resolution after HAL API update
Yona-Appletree Jun 13, 2026
42fd63f
refactor: switch serde enums to external tagging for flash savings
Yona-Appletree Jun 13, 2026
b9f03cd
refactor: replace BTreeMap/BTreeSet with sorted-vec collections
Yona-Appletree Jun 13, 2026
23634d5
refactor: extend sorted-vec collection swap to shader crates
Yona-Appletree Jun 13, 2026
b163107
fix: reference nested static records in slot shapes instead of inlining
Yona-Appletree Jun 13, 2026
468f146
chore(fw-esp32): log ws281x RMT driver open and channel init
Yona-Appletree Jun 13, 2026
42f1980
fix: clear clippy -D warnings lints (div_ceil, is_empty, format args)
Yona-Appletree Jun 13, 2026
2a7a651
fix: update lagging test/build sites for collection + model refactors
Yona-Appletree Jun 13, 2026
3c5c580
fix: stream AssetSlot serde without serde Content buffering
Yona-Appletree Jun 13, 2026
6800ca0
test: isolate ambient revision per-thread; quarantine flaky render test
Yona-Appletree Jun 13, 2026
f4a5ff2
style: rustfmt ws281x driver logging
Yona-Appletree Jun 13, 2026
47163d2
Merge origin/main into feature/hardware
Yona-Appletree Jun 13, 2026
61b5910
test: un-ignore events render test; surface swallowed shader-compile …
Yona-Appletree Jun 13, 2026
12c311a
fix(fw-esp32): build ESP-NOW driver against esp-radio 0.18.0 API
Yona-Appletree Jun 13, 2026
21eff8d
ci: pin nightly toolchain; drop unused import; fmt
Yona-Appletree Jun 15, 2026
b1380a6
chore: add `just bump-nightly` to pin the toolchain + unwinding in lo…
Yona-Appletree Jun 15, 2026
d369a6b
chore: one-line bump-nightly help for clean `just --list`
Yona-Appletree Jun 15, 2026
ce6aea9
ci: pin fw-esp32's per-crate toolchain too (build-std needs rust-src)
Yona-Appletree Jun 16, 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
  •  
  •  
  •  
5 changes: 3 additions & 2 deletions .github/workflows/pre-merge.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:
# - name: Install Rust toolchain
# uses: dtolnay/rust-toolchain@stable
# with:
# toolchain: nightly
# toolchain: nightly-2026-04-27
# components: rustfmt, clippy, rust-src
#
# - name: Install RISC-V target
Expand Down Expand Up @@ -87,10 +87,11 @@ jobs:
repository: light-player/lp-regalloc2
path: lp-regalloc2

# Toolchain is pinned in lp2025/rust-toolchain.toml; keep this in sync.
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly
toolchain: nightly-2026-04-27
components: rustfmt, clippy, rust-src

- name: Install RISC-V target
Expand Down
9 changes: 8 additions & 1 deletion .idea/lp2025.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 25 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,31 @@ just build-rv32 # cargo build --target riscv32imac-... -p ...
just build # parallel: host + rv32
```

### ESP32 linked-build pitfall

For `fw-esp32`, **linked firmware builds, size measurements, and bloat
analysis must run from `lp-fw/fw-esp32/`** (or through a just recipe that
`cd`s there first, such as `just build-fw-esp32`). The crate-local
`.cargo/config.toml` and linker setup are part of the build.

This is fine from the workspace root because it does not final-link:

```bash
cargo check -p fw-esp32 --target riscv32imac-unknown-none-elf --profile release-esp32 --features esp32c6,server
```

For a real linked ELF or size numbers, do this instead:

```bash
cd lp-fw/fw-esp32
cargo build --target riscv32imac-unknown-none-elf --profile release-esp32 --features esp32c6,server
rust-size ../../target/riscv32imac-unknown-none-elf/release-esp32/fw-esp32
```

Running `cargo build -p fw-esp32 ...` from the workspace root can fail at final
link with `memory region not defined: ROTEXT`, because it bypasses the
crate-local firmware build context.

For targeted host validation of specific crates:

```bash
Expand Down
72 changes: 56 additions & 16 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@
members = [
# lp-base workspace members
"lp-base/lp-perf",
"lp-base/lp-collection",
"lp-base/lpfs",
# lp-app workspace members
"lp-core/lpc-engine",
"lp-core/lpc-view",
"lp-core/lpc-hardware",
"lp-core/lpc-shared",
"lp-app/lpa-server",
"lp-app/lpa-client",
Expand All @@ -18,7 +20,7 @@ members = [
"lp-core/lpc-model",
"lp-core/lpc-slot-codegen",
"lp-core/lpc-slot-macros",
"lp-core/lpc-slot-mockup",
"lp-core/lpc-registry",
"lp-core/lpc-wire",
# lps workspace members
"lp-shader/lps-builtin-ids",
Expand Down Expand Up @@ -62,6 +64,7 @@ default-members = [
# lp-app workspace members
"lp-core/lpc-engine",
"lp-core/lpc-view",
"lp-core/lpc-hardware",
"lp-core/lpc-shared",
"lp-app/lpa-server",
"lp-app/lpa-client",
Expand All @@ -70,6 +73,7 @@ default-members = [
"lp-fw/fw-tests",
"lp-cli",
"lp-core/lpc-model",
"lp-core/lpc-registry",
"lp-core/lpc-wire",
# lps workspace members (excluding lps-builtins-emu-app)
"lp-shader/lps-builtin-ids",
Expand Down Expand Up @@ -143,7 +147,7 @@ cranelift-interpreter = { git = "https://github.com/light-player/lp-cranelift",

# regalloc2 - fork (ChunkedVec for OOM mitigation, feature-gating ION allocator)
regalloc2 = { git = "https://github.com/light-player/lp-regalloc2", branch = "lightplayer", default-features = false, features = ["std"] }
lp-collection = { git = "https://github.com/light-player/lp-common", branch = "main", default-features = false }
lp-collection = { path = "lp-base/lp-collection", default-features = false }

# Common dependencies

Expand Down
Loading
Loading