Releases: RegionallyFamous/bazaar
Releases · RegionallyFamous/bazaar
v1.3.5
Full Changelog: v1.3.4...v1.3.5
v1.3.4
Full Changelog: v1.3.3...v1.3.4
v1.3.3
Full Changelog: v1.3.2...v1.3.3
v1.3.2
Full Changelog: v1.3.1...v1.3.2
v1.3.1
Full Changelog: v1.3.0...v1.3.1
v1.3.0
What's new in v1.3.0
Developer experience
npm create ware@latestgets full CLI flags —--name,--slug,--framework,--author,--description,--version,--storybook,--out, and--yesmake scaffolding non-interactive and agent-friendlymanifest.schema.json— a draft-07 JSON Schema formanifest.jsonso 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/*.mdpage 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 tasksAGENTS.md— single entry point for AI assistants building Bazaar wares
Bug fixes
- CI: build
@bazaar/clientbefore running ware Vitest tests sodist/is available on the runner - CI: align Jest coverage thresholds with actual coverage levels
- E2E: fix
recordOpencrash and flaky login - E2E: remove redundant manual
wp plugin installstep
v1.2.6
Full Changelog: v1.2.5...v1.2.6
v1.2.5 — Ware audit fixes
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>, andcontenteditableelements - Inline error messages replace
alert()calls throughout try/catchguards 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
isValidBoardStatenow validates column and card shapes before applying loaded datasaveBoardwrapslocalStorage.setItemin try/catch and returns a success booleanonDragEndresets 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)
onAddCardwrapped inuseCallbackto prevent unnecessary child re-renders- Removed nested
draggablefrom column wrapper; only cards are draggable - Due-date comparison uses consistent local-midnight parsing for both
overdueflag 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
onKeyDowncallsstopPropagation completeSessionandrecordSessionnow 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;
toggleSoundaudio side-effects moved outsidesetState - 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
parseIntcalls include radix 10; focus/break durations clamped to valid ranges
Ledger 1.2.0
- New invoices carry
_isNew: trueso 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
idnot array index, preventing React reconciliation bugs on reorder aria-labelon search inputs;aria-pressedon 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.lengthvssize × size × 4is rejected hexToRgbaguards against invalid hex, returning opaque black with a console warning- Canvas gets
role="img"and a descriptivearia-label - Toolbar buttons get
aria-labelfrom their tool definition - Editor object reference stabilised with
useMemoto 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: nonereplaced withfocus-visiblestyle - BPM input clamped to 20–300;
NaNinput rejected - Keyboard note buttons release note on
mouseLeave(only when mouse button held) and ontouchcancel - Play/stop button gets
aria-label; waveform selector getsaria-pressedandrole="group" - Knob nudge uses the component's
stepprop instead of a hard-coded fraction
Swatch 1.2.0
ContrastCheckerfg/bg stored as swatch IDs instead of indices — survives reorder and deleteHarmonyPanelsource stored as swatch ID — survives reorder and delete- Swatch remove button revealed on
:focus-withinas well as:hover(keyboard accessible) hexToHslandrelativeLuminancevalidate hex input; invalid values fall back safely- Duplicate harmony tile keys fixed
- Palette validation checks each swatch for valid
id,hex, andname <label>elements linked to their<select>withhtmlFor/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:
buildTreedetects cyclicparentIdreferences and breaks cycles by promoting affected nodes to root — prevents the entire wiki from appearing empty handleDeletenow cascades to all descendants (grandchildren and deeper), not just direct children- External links rendered by
markedgettarget="_blank" rel="noopener noreferrer" Meta+N(new page) is ignored while the editor is open with unsaved contentsavePagesfailures show an inline error banner instead of silently losing data- Cancel/Escape in the editor prompts for confirmation if there are unsaved changes
loadPagesvalidates schema on load and filters out malformed entries- Filtered page list uses
useMemo(was incorrectlyuseCallback) - Tree items get
role="treeitem",aria-expanded,aria-selected, andaria-level /search shortcut also excludes<textarea>(was only excluding<input>)
Other
MenuManagerandWareRenderernow depend onWareRegistryInterfacerather than the concreteWareRegistryclassMenuManagerTestandPluginActivationRedirectTestrewritten without Mockery to fix PHP 8.5 incompatibility (Mockery 1.6.12 code generator fails on PHP 8.5 syntax)
v1.2.4
Full Changelog: v1.2.3...v1.2.4
v1.2.3
Full Changelog: v1.2.2...v1.2.3