Skip to content

Releases: avanelsas/bareforge

Bareforge v0.2.0

30 Apr 07:48
8906838

Choose a tag to compare

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 (or set-props-many) commit; mixed values show with a Mixed placeholder and an is-mixed class.
  • 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 for x-grid / x-card / x-navbar. New ops/wrap-many keeps 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-buttonx-card silently drops variant instead 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 :number kind editors and free-coord :layout :x / :y / :w / :h fields becomes a horizontal drag handle; Shift × 10 step. The whole drag is one undo entry via state/commit-coalesced!.
  • BareDOM theme-token autocomplete. Colour and length fields surface every --x-color-* / --x-space-* / --x-radius-* / --x-font-size-* / --x-border-width token via a native <datalist> injected into the field's shadow root. New bareforge.meta.design-tokens mirrors the 50 tk-* tokens from baredom.components.x-theme.model.
  • ? keyboard cheat sheet. Lists every shortcut and gesture grouped by Editing / Selection / Navigation / File / View. Built on x-modal + x-typography so it inherits the active theme preset.
  • Cmd-K command palette. Built on the BareDOM x-command-palette web 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.patterns carries 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-checkbox covered. 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.hints provides hint strings (Drop nav links / actions, Drop tiles into the grid, Drop x-tab here, etc.) for ~20 container tags. The canvas reconciler stamps data-bareforge-hint on creation; existing CSS reads it via attr() to override the generic (empty) placeholder.

Changed

  • :selection in app-state is now a vector of node ids. New pure helpers state/selected-ids, selected?, single-selected-id; new effectful select-one!, select-clear!, select-toggle!. Internal-only refactor — single-node consumers (resize handles, nudge, inspector lookup, inline-edit teardown) route through single-selected-id and 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-flex is 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: none so 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

28 Apr 11:42
f8573a2

Choose a tag to compare

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-version to 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

27 Apr 20:24
19042ec

Choose a tag to compare

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 published dist/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

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.