Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 0 additions & 52 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,6 @@ jobs:
- name: Check du discipline (no gobj on host, no make-el shim)
run: bb scripts/check_du_discipline.bb

- name: Check barebuild boundary (BareDOM <-> BareBuild)
run: bb scripts/check-barebuild-boundary.bb

- name: Build ESM library
run: npm run build

Expand Down Expand Up @@ -124,52 +121,3 @@ jobs:
run: npm test
env:
CHROMIUM_FLAGS: "--no-sandbox"

demo-e2e:
name: Demo app E2E (Playwright)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6

- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '21'

- uses: actions/setup-node@v6
with:
node-version: '22'

- uses: DeLaGuardo/setup-clojure@13
with:
cli: 'latest'

- name: Setup Babashka
run: |
curl -sLO https://raw.githubusercontent.com/babashka/babashka/master/install
chmod +x install
sudo ./install --dir /usr/local/bin
bb --version

- run: npm ci

# barebuild-* is not published to npm yet, so build the ESM library and
# install a local pack OVER the demo app's registry pin (same approach as
# `bb smoke-build`). Once barebuild-* ships, the demo's ^3.x pin resolves
# from the registry and these two steps collapse to a plain `npm install`.
- name: Build ESM library (for the local pack)
run: npx shadow-cljs release lib

- name: Pack and install the library into the demo app (over the pin)
run: |
TGZ="$(npm pack --silent | tail -1)"
echo "packed $TGZ"
cd barebuild/demo-app
npm install "$GITHUB_WORKSPACE/$TGZ"

- name: Install Playwright chromium + OS deps
run: cd barebuild/demo-app && npx playwright install --with-deps chromium

- name: Run demo-app read-path E2E
run: cd barebuild/demo-app && bb e2e
14 changes: 1 addition & 13 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,8 @@ jobs:
run: |
TAG="${GITHUB_REF_NAME}"
VERSION="${TAG#v}"
# Dist-tag from any semver pre-release identifier so a pre-release NEVER moves
# `latest`: 4.0.0-alpha.0 → alpha, 4.0.0-rc.1 → rc, 3.5.0 → latest (no identifier).
DIST_TAG=$(printf '%s' "$VERSION" | sed -n 's/^[0-9.]*-\([A-Za-z]*\).*/\1/p')
[ -z "$DIST_TAG" ] && DIST_TAG=latest
PRERELEASE=false; [ "$DIST_TAG" = latest ] || PRERELEASE=true
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "dist_tag=${DIST_TAG}" >> "$GITHUB_OUTPUT"
echo "prerelease=${PRERELEASE}" >> "$GITHUB_OUTPUT"

# Added this step to fix UnsupportedClassVersionError
- name: Setup Java
Expand Down Expand Up @@ -84,15 +77,11 @@ jobs:
- name: Publish to NPM
run: |
npm config set //registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}
npm publish --access public --tag "${{ steps.version.outputs.dist_tag }}"
npm publish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

- name: Build and Publish to Clojars
# Pre-releases (alpha) are npm/ESM-only — skip the Clojure jar. (The jar is for
# source-consuming CLJS apps, not the alpha audience; skipping also avoids
# re-deploying an unbumped jar version, which Clojars rejects.)
if: ${{ steps.version.outputs.prerelease == 'false' }}
run: |
clojure -T:build jar
clojure -X:deploy
Expand All @@ -106,6 +95,5 @@ jobs:
tag_name: ${{ steps.version.outputs.tag }}
name: "v${{ steps.version.outputs.version }}"
generate_release_notes: true
prerelease: ${{ steps.version.outputs.prerelease == 'true' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ Components **must** use shared utility modules — never reimplement locally:
- **`component/register!`** — element registration from declarative options map
- **`du/setv!`** / **`du/getv`** — host-element instance-field storage (refs, model cache, handlers). The trace-recorder hook lives here; `gobj/set` / `gobj/get` on `el` is forbidden and enforced by `bb scripts/check_du_discipline.bb`. Use `gobj` only on non-host JS objects.
- **`du/set-attr!`** / **`du/remove-attr!`** — attribute writes. Goes through the trace recorder. **Exception:** per-frame writes inside `requestAnimationFrame` loops (e.g. `animate!` → `render-*!`) use **`du/set-attr-untraced!`** / **`du/remove-attr-untraced!`** to keep the recorder readable. Even after host-attribution + rate-limiting, a high-fanout animation can emit 60+ records/sec under distinct attribute keys; the untraced variants do the native DOM write without firing the hook. Use only in hot paths, with a one-line `;; Hot path: rAF-driven` comment so the intent is greppable. References: `x_liquid_glass/render-satellites!`, `x_soft_body/render-path!`, `x_liquid_dock/animate!`.
- **`du/setv-untraced!`** — instance-field write without firing the trace hook. Reserved for **bookkeeping with no diagnostic display value**, of two kinds. (1) **Animation bookkeeping** stamped every frame: the canonical trio is **`k-raf`** (requestAnimationFrame id), **`k-last-frame`** (previous frame timestamp), and **`k-time`** (accumulated animation time) — the recorder seeing 60+ writes/sec of these adds noise without adding signal. (2) **Transient non-displayable handles** whose *value* is opaque and uninterpretable in a time-travel trace (and may not be structured-cloneable) — e.g. an in-flight **`AbortController`** (`barebuild-data`'s `k-abort`), where the *meaningful* lifecycle it tracks is already traced through a sibling state field + dispatched event. In both cases add a one-line greppable rationale at the field (mirroring the `;; Hot path: rAF-driven` attr-write convention) so the deviation reads as intentional. Use the normal `du/setv!` for actual UI state (selection, hover, pressed, active-source, …).
- **`du/setv-untraced!`** — instance-field write without firing the trace hook. Reserved for **bookkeeping with no diagnostic display value**, of two kinds. (1) **Animation bookkeeping** stamped every frame: the canonical trio is **`k-raf`** (requestAnimationFrame id), **`k-last-frame`** (previous frame timestamp), and **`k-time`** (accumulated animation time) — the recorder seeing 60+ writes/sec of these adds noise without adding signal. (2) **Transient non-displayable handles** whose *value* is opaque and uninterpretable in a time-travel trace (and may not be structured-cloneable) — e.g. an in-flight **`AbortController`** (`k-abort`), where the *meaningful* lifecycle it tracks is already traced through a sibling state field + dispatched event. In both cases add a one-line greppable rationale at the field (mirroring the `;; Hot path: rAF-driven` attr-write convention) so the deviation reads as intentional. Use the normal `du/setv!` for actual UI state (selection, hover, pressed, active-source, …).
- **`du/has-attr?`** / **`du/get-attr`** — attribute reads in `read-model`
- **`du/dispatch!`** / **`du/dispatch-cancelable!`** — event dispatch
- **`du/install-properties!`** — install property accessors from `model/property-api` (Tier 0; see _Property accessor tiers_ above)
Expand Down
3 changes: 1 addition & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ All adapters are auto-generated from the same Custom Elements Manifest, so addin

## Components

**103 UI web components across 11 categories** — from foundational UI controls to morphing animations, organic effects, and scroll-driven storytelling — plus **3 [BareBuild](./barebuild/docs/read-side.md) orchestration elements** (read-side: router / route / data).
**103 UI web components across 11 categories** — from foundational UI controls to morphing animations, organic effects, and scroll-driven storytelling.

| Category | Count | Examples |
|----------|------:|----------|
Expand All @@ -118,7 +118,6 @@ All adapters are auto-generated from the same Custom Elements Manifest, so addin
| **Effects** | 12 | Liquid Glass · Confetti · Neural Glow · Metaball Cursor · Organic Shape |
| **Scroll** | 5 | Scroll · Scroll Parallax · Scroll Stack · Scroll Story · Scroll Timeline |
| **Utility** | 2 | i18n · i18n Provider |
| **Orchestration** | 3 | BareBuild Router · Route · Data — read-side; not adapter-wrapped |

See [**docs/components.md**](./docs/components.md) for the full per-component catalogue with one-line descriptions and links to each component's API documentation.

Expand Down
16 changes: 0 additions & 16 deletions barebuild/bb.edn

This file was deleted.

74 changes: 0 additions & 74 deletions barebuild/cli/barebuild_new.clj

This file was deleted.

50 changes: 0 additions & 50 deletions barebuild/cli/smoke_build.clj

This file was deleted.

8 changes: 0 additions & 8 deletions barebuild/demo-app/.gitignore

This file was deleted.

89 changes: 0 additions & 89 deletions barebuild/demo-app/README.md

This file was deleted.

Loading