Skip to content

Releases: RegionallyFamous/bazaar

v1.3.5

13 Apr 23:54

Choose a tag to compare

v1.3.4

13 Apr 22:26

Choose a tag to compare

Full Changelog: v1.3.3...v1.3.4

v1.3.3

13 Apr 22:10

Choose a tag to compare

Full Changelog: v1.3.2...v1.3.3

v1.3.2

13 Apr 21:24

Choose a tag to compare

Full Changelog: v1.3.1...v1.3.2

v1.3.1

13 Apr 15:47

Choose a tag to compare

Full Changelog: v1.3.0...v1.3.1

v1.3.0

13 Apr 14:45

Choose a tag to compare

What's new in v1.3.0

Developer experience

  • npm create ware@latest gets full CLI flags--name, --slug, --framework, --author, --description, --version, --storybook, --out, and --yes make scaffolding non-interactive and agent-friendly
  • manifest.schema.json — a draft-07 JSON Schema for manifest.json so editors validate and autocomplete ware manifests automatically
  • Hello ware — a minimal React reference ware for copy-paste starting points and template smoke-testing

@bazaar/client

  • Rich JSDoc with usage examples on createConfig, createJobs, wpJson, useWpFetch, and the store helpers

Docs & wiki

  • Complete README rewrite — pure narrative, approachable, no code blocks; all technical depth lives in the wiki
  • Wiki accuracy audit — every docs/*.md page reviewed against the actual codebase; 30+ corrections across REST API shapes, manifest field names, CLI argument order, CSP defaults, sandbox trust levels, and more
  • docs/Recipes.md — new copy-paste patterns for common ware tasks
  • AGENTS.md — single entry point for AI assistants building Bazaar wares

Bug fixes

  • CI: build @bazaar/client before running ware Vitest tests so dist/ is available on the runner
  • CI: align Jest coverage thresholds with actual coverage levels
  • E2E: fix recordOpen crash and flaky login
  • E2E: remove redundant manual wp plugin install step

v1.2.6

13 Apr 13:35

Choose a tag to compare

Full Changelog: v1.2.5...v1.2.6

v1.2.5 — Ware audit fixes

13 Apr 11:36

Choose a tag to compare

What's Changed

This release applies comprehensive bug fixes across all seven wares, based on a 10-pass audit covering data flow, logic, TypeScript correctness, persistence, UX, performance, accessibility, security, edge cases, and cross-ware consistency.

All wares — shared improvements

  • Keyboard shortcut handlers now exclude focused <input>, <select>, <textarea>, and contenteditable elements
  • Inline error messages replace alert() calls throughout
  • try/catch guards added to all persistence operations
  • ARIA roles and labels added to interactive elements (tab lists, icon buttons, canvas, heatmap cells)
  • Service worker cache versions bumped to match new ware versions

Board 1.2.0

  • isValidBoardState now validates column and card shapes before applying loaded data
  • saveBoard wraps localStorage.setItem in try/catch and returns a success boolean
  • onDragEnd resets drag state when a drag is cancelled (Escape or drop outside)
  • "Done" column is found by id === 'done' instead of last array position
  • Clear-column confirmation copy corrected (it's destructive, not an archive)
  • onAddCard wrapped in useCallback to prevent unnecessary child re-renders
  • Removed nested draggable from column wrapper; only cards are draggable
  • Due-date comparison uses consistent local-midnight parsing for both overdue flag and display
  • Color-label buttons get descriptive aria-label (e.g. "Red label" not "red")

Flow 1.2.0

  • Space key no longer double-fires when a button is focused — window handler skips interactive elements; Ring onKeyDown calls stopPropagation
  • completeSession and recordSession now await persistence before updating UI state; errors in persistence no longer leave the timer stuck at 00:00
  • Heatmap date keys use consistent local-date format (no more UTC vs local mismatch causing missing day dots)
  • AudioContext nodes cleaned up on unmount; toggleSound audio side-effects moved outside setState
  • Task mutations use functional setTasks(prev => …) updaters to eliminate race conditions
  • Division-by-zero guard for sessionsUntilLong === 0
  • Skip no longer increments the completed-session counter or writes to history
  • parseInt calls include radix 10; focus/break durations clamped to valid ranges

Ledger 1.2.0

  • New invoices carry _isNew: true so the editor heading correctly shows "New Invoice" vs "Edit Invoice"; same fix applied to clients
  • New invoice object is created once on navigation and stored in state — no more new UUID generated on every render
  • PDF filename sanitised before download (strips path separators and control characters)
  • Dashboard "Date" column header renamed to "Created"; invoices past due date show "Overdue" status in display without mutating stored data
  • Line items keyed by id not array index, preventing React reconciliation bugs on reorder
  • aria-label on search inputs; aria-pressed on filter tabs

Mosaic 1.2.0

  • Clear-canvas confirmation no longer falsely says "cannot be undone" — the action pushes to the undo stack
  • Slot data validated on load: mismatched data.length vs size × size × 4 is rejected
  • hexToRgba guards against invalid hex, returning opaque black with a console warning
  • Canvas gets role="img" and a descriptive aria-label
  • Toolbar buttons get aria-label from their tool definition
  • Editor object reference stabilised with useMemo to prevent spurious keyboard-handler re-binds

Sine 1.2.0

  • Oscillator node leak fixed: active notes tracked in a Map; previous node is stopped and disconnected before creating a new one
  • Knob focus ring restored — outline: none replaced with focus-visible style
  • BPM input clamped to 20–300; NaN input rejected
  • Keyboard note buttons release note on mouseLeave (only when mouse button held) and on touchcancel
  • Play/stop button gets aria-label; waveform selector gets aria-pressed and role="group"
  • Knob nudge uses the component's step prop instead of a hard-coded fraction

Swatch 1.2.0

  • ContrastChecker fg/bg stored as swatch IDs instead of indices — survives reorder and delete
  • HarmonyPanel source stored as swatch ID — survives reorder and delete
  • Swatch remove button revealed on :focus-within as well as :hover (keyboard accessible)
  • hexToHsl and relativeLuminance validate hex input; invalid values fall back safely
  • Duplicate harmony tile keys fixed
  • Palette validation checks each swatch for valid id, hex, and name
  • <label> elements linked to their <select> with htmlFor/id
  • Panel switcher uses role="tablist" / role="tab" / role="tabpanel"
  • SVG, CSS, and Tailwind exports sanitise swatch names and hex values before interpolation

Tome 1.1.0

  • Critical: buildTree detects cyclic parentId references and breaks cycles by promoting affected nodes to root — prevents the entire wiki from appearing empty
  • handleDelete now cascades to all descendants (grandchildren and deeper), not just direct children
  • External links rendered by marked get target="_blank" rel="noopener noreferrer"
  • Meta+N (new page) is ignored while the editor is open with unsaved content
  • savePages failures show an inline error banner instead of silently losing data
  • Cancel/Escape in the editor prompts for confirmation if there are unsaved changes
  • loadPages validates schema on load and filters out malformed entries
  • Filtered page list uses useMemo (was incorrectly useCallback)
  • Tree items get role="treeitem", aria-expanded, aria-selected, and aria-level
  • / search shortcut also excludes <textarea> (was only excluding <input>)

Other

  • MenuManager and WareRenderer now depend on WareRegistryInterface rather than the concrete WareRegistry class
  • MenuManagerTest and PluginActivationRedirectTest rewritten without Mockery to fix PHP 8.5 incompatibility (Mockery 1.6.12 code generator fails on PHP 8.5 syntax)

v1.2.4

13 Apr 02:41

Choose a tag to compare

Full Changelog: v1.2.3...v1.2.4

v1.2.3

13 Apr 02:31

Choose a tag to compare

Full Changelog: v1.2.2...v1.2.3