- Hooks: per-instance timers in useReady; cleanup for useIntersectionObserver;
useWebSocket no longer reconnects after unmount/refresh, drains the queue
and dispatches non-JSON messages
- Modal/Popover/Dropdown: onClose only on close, Escape to close, no stray
DOM props, hooks before early return, scrollbar-aware positioning,
top-left/top-right dropdown positions
- Elements: Toast/Search/StarRating per-instance timers, Pagination labels
and empty state, Breadcrumbs titles, LinkList dividers/props, segment-wise
active-link matching (new utils/link-matches-path), Table object cells
- Form: Select with a default option is changeable, Input clear notifies
controlled parents and copy works on textareas, Checkbox random label,
NumberInputButtons runaway interval, upload prop/spread fixes
- Layout: Button disabled while loading, Stack gap and Span truncate via
inline styles, Img fallbackImageSrc, className/JSDoc fixes
- Editors/MDX/AI: TinyMCE id/cleanup/stale handler/duplicate scripts,
AceEditor debounce, markdown heights and frontmatter regex, last
assistant message, AIPromptBlock prompt ref
- Utils: fetchApi headers/FormData/fetchOptions/no mutation, base64 file
names and read errors, slugify underscore trim, serializeQuery zero values
- Tests for fetchApi, link matching, slugify and serializeQuery
- AGENTS.md updated for the package layout
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- Move components/ to src/ and compile to dist/ with tsc
- Add root barrel export plus deep-import subpath exports and base.css export
- Post-compile step: copy base.css, add .js import extensions, mark client modules
- Add publish.sh and .npmrc for the Gitea npm registry
- Fix type errors, guard TinyMCE env access, drop ace-builds type dependency
- Rename clashing props type names, remove Next.js scaffolding and unused deps
Co-Authored-By: Claude Opus 5.5 <[email protected]>