Releases: avanelsas/bareforge
Bareforge v0.2.0
Minor release. Editor authoring quality-of-life. No document-model, project-file, or export changes — saved projects load identically, every export target stays at full feature parity. Test count: 571 (up from 486), zero release-build warnings under Closure Advanced.
Added
- Multi-select on the canvas and Layers panel.
- Shift-click extends; drag from empty canvas starts a marquee rectangle (Shift+drag extends).
- The selection overlay becomes a pool — one 1px border per selected DOM id. Resize handles only when exactly one node is selected.
- Esc clears the selection; Delete / Backspace removes every selected node in one commit via
ops/remove-many.
- Multi-select inspector edit. With more than one node selected, the Inspector renders the shared-attribute set across all of them. Editing a row dispatches a single
ops/set-attrs-many(orset-props-many) commit; mixed values show with aMixedplaceholder and anis-mixedclass. - Cmd-D duplicate the selection (deep-clone with fresh ids throughout the subtree).
- Cmd-G wraps the selection in an
x-container; Cmd-Shift-G prompts forx-grid/x-card/x-navbar. Newops/wrap-manykeeps a sibling set's document order intact inside the new wrapper. - Cmd-Opt-C / Cmd-Opt-V copy and paste attributes between nodes. Paste is filtered to the target tag's supported attrs so
x-button→x-cardsilently dropsvariantinstead of stamping unknown attributes. macOS Option-modified key (ç,√) falls back to.code(KeyC,KeyV) for cross-platform parity. - Drag-to-scrub numeric inspector rows. The label of
:numberkind editors and free-coord:layout :x / :y / :w / :hfields becomes a horizontal drag handle; Shift × 10 step. The whole drag is one undo entry viastate/commit-coalesced!. - BareDOM theme-token autocomplete. Colour and length fields surface every
--x-color-*/--x-space-*/--x-radius-*/--x-font-size-*/--x-border-widthtoken via a native<datalist>injected into the field's shadow root. Newbareforge.meta.design-tokensmirrors the 50tk-*tokens frombaredom.components.x-theme.model. ?keyboard cheat sheet. Lists every shortcut and gesture grouped by Editing / Selection / Navigation / File / View. Built onx-modal+x-typographyso it inherits the active theme preset.- Cmd-K command palette. Built on the BareDOM
x-command-paletteweb component — owns its own focus, fuzzy filter, scrim, ARIA roles, and theme inheritance. Curated File / View / Selection commands plus one entry per registered BareDOM tag (Insert <tag>) plus the four wrap-in targets. - Layers panel keyboard navigation. Focus the Layers tree, then ↑ / ↓ walk siblings within the parent slot, ← / → step to parent / first child, and Alt+↑ / Alt+↓ reorder within the slot via
ops/move. - Inline component patterns.
bareforge.meta.patternscarries pre-styled named configurations per tag:x-button→ primary / secondary / ghost / danger / loading;x-typography→ h1 / h2 / h3 / body / caption / code;x-alert,x-badge,x-card,x-chip,x-grid,x-divider,x-switch,x-checkboxcovered. Tags with patterns grow a▾caret on their palette tile that toggles an inline flyout of pattern chips. - Per-tag empty-slot hints.
bareforge.meta.hintsprovides hint strings (Drop nav links / actions,Drop tiles into the grid,Drop x-tab here, etc.) for ~20 container tags. The canvas reconciler stampsdata-bareforge-hinton creation; existing CSS reads it viaattr()to override the generic(empty)placeholder.
Changed
:selectioninapp-stateis now a vector of node ids. New pure helpersstate/selected-ids,selected?,single-selected-id; new effectfulselect-one!,select-clear!,select-toggle!. Internal-only refactor — single-node consumers (resize handles, nudge, inspector lookup, inline-edit teardown) route throughsingle-selected-idand degrade gracefully under multi-select. Saved project files are unchanged.- Action helpers in
ui.shortcuts(duplicate!,wrap-in!,copy-attrs!,paste-attrs!) become public so the command palette reuses them instead of re-implementing the selection → commit → reselect flow. - Wrap-in whitelist updated to
x-container / x-grid / x-card / x-navbar.x-flexis removed — it isn't a tag in BareDOM 2.4, so the previous Cmd-Shift-G prompt would have inserted an unknown element. Cmd-G default behaviour (x-container) is unchanged. - In edit mode, the canvas host gets
user-select: noneso the Shift-click and marquee-drag gestures don't paint a native text-selection band over the rendered preview.
Verified
- 571 tests / 1773 assertions / 0 failures / 0 errors.
npx shadow-cljs release app— 0 warnings under Closure Advanced.clj-kondo --lint src test scripts— 0 errors, 0 warnings.cljfmt check— all files formatted.
Try it: https://avanelsas.github.io/bareforge/
Full diff: v0.1.1...v0.2.0
Bareforge v0.1.1
Patch release. Bundles the six post-launch fixes from PRs #2 through #7.
Fixed
- Hosted demo loads end-to-end. The deployed editor was loading the HTML but the JS bundle never executed —
public/index.html, the toolbar brand<picture>, and the CLJS-export plugin's emitted script tag all referenced absolute paths (/js/main.js,/favicon.svg,/assets/bareforge_*.png). On a project Pages site (/<repo>/), those resolved to the user-pages root and 404'd. All paths now relative; demo at https://avanelsas.github.io/bareforge/ works in a fresh browser. - The same fix applies to the
<script src>the CLJS-project export emits, so user-exported CLJS projects hosted at a sub-path now also serve correctly.
Changed
- BareDOM bumped 2.4.0 → 2.4.1 (upstream patch release; no API or component-set changes). Propagates via
bareforge.meta.versions/baredom-versionto all four export paths. - README — vanilla-JS export added to the Features list (it shipped at v0.1.0 but the list still showed three targets); plugin-system pointer added so the export-API capability isn't buried; centered logo + a personal "Why Bareforge?" section between the intro and Features.
Verified
- 486 tests / 1436 assertions / 0 failures / 0 errors.
npx shadow-cljs release app— 0 warnings.- Hosted demo redeploys on this release publish via the Pages workflow.
Try it: https://avanelsas.github.io/bareforge/
Full diff: v0.1.0...v0.1.1
Bareforge v0.1.0
First public release. Visual landing-page builder for BareDOM — drop components, declare data, wire interactivity, export a working page.
Highlights
- 90 BareDOM 2.4.0 components in the palette.
- Four export plugins at full feature parity:
- HTML (CDN-loaded, single file)
- Bundle (self-contained .zip)
- ClojureScript project (interactive shadow-cljs project)
- Vanilla JavaScript (interactive zip, no framework)
- Nine starter templates — eight realistic landing pages plus one kinetic showcase.
- First-run welcome tour with re-launch from File menu, teaching groups / fields / records / bindings / events in plain language.
- Security: doc-level XSS sanitiser (
<script>/on*=/javascript:URLs blocked at load + commit + codegen), Content-Security-Policy<meta>on every export, Subresource Integrity hashes embedded for CDN-mode exports via BareDOM's publisheddist/integrity.json.
Verified
- 486 tests / 1436 assertions / 0 failures / 0 errors.
npx shadow-cljs release app— 0 warnings under Closure Advanced.- CI: lint, format check, test, release-build all green.
Try it
- Hosted demo: https://avanelsas.github.io/bareforge/ (deploys automatically when this release publishes).
- Local:
npm install && npx shadow-cljs watch app→ http://localhost:8765.
See README.md for the walkthrough, docs/architecture.md for contributor orientation, docs/plugins.md for export-plugin authoring, and CHANGELOG.md for the full v0.1.0 surface.
Early alpha — pre-1.0, breaking changes possible. Feedback welcome via Issues or Discussions.