Conversation
…nhance type definitions - Moved transition, flip, spring, stagger, timeline, keyframes, scroll, and reduced motion functionalities into their respective files for better organization and maintainability. - Introduced new types for better type safety and clarity across the motion module. - Added keyframe presets for common animations and scroll-triggered animation helpers. - Implemented a prefers-reduced-motion detection utility. - Enhanced tests to cover new functionalities and ensure robustness.
…ere Trusted Types und verbessere die HTML-Sanitierung
…ublic API changes. ### Fixed (Unreleased) - **Security**: `security/sanitize` now re-exports `generateNonce()` and `isTrustedTypesSupported()` for legacy deep imports.
…te, die Getter und Setter verknüpfen
- Add devtools integration for store management with functions to register, unregister, and notify state changes. - Refactor store module to separate concerns into distinct files: create-store, mapping, persisted, plugins, registry, types, utils, and watch. - Introduce mapping helpers for state, getters, and actions to simplify component integration. - Implement persistence functionality for stores using localStorage. - Add watch functionality to observe state changes with customizable options. - Enhance tests to cover new features including mapGetters and watchStore.
- Add handleStyle directive for dynamic style binding in style.ts - Add handleText directive for setting text content in text.ts - Create evaluate function for expression evaluation in evaluate.ts - Refactor view module by moving mount and template creation logic to mount.ts - Introduce processElement and processChildren functions for directive processing in process.ts - Define types for binding context, mount options, and directive handlers in types.ts - Update index.ts to export new module structure and types
…stency fix(docs): correct event section heading in Core API guide for BQueryElement
…getting started guide
…ng stability through double-parsing
…s HTML Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…, and SSR safety (#17) * Initial plan * fix: address PR review comments - duplicate keys, cleanup, exports, unwrap, caching, routing, SSR, directives, and test Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix: improve duplicate key warning message to be more accurate Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * test: add coverage for PR fixes - unwrap siblings, defineStore caching, ref cleanup, duplicate keys Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * test: improve duplicate key test with try-finally and reduce duplication Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * docs: clarify unwrap() behavior for all children vs collection-only elements Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Update src/router/router.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/core/index.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: Jonas Pfalzgraf <info@josunlp.de> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…as HTML Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…18) * Initial plan * fix: address PR review comments - router guards, motion kebab-case, component styles, utils exports, docs Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com>
…ly return for plain text
…ion handling (#19) * Initial plan * fix(router): restore full URL with query/hash and use replaceState on cancelled navigation Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * docs(component): update example to use addEventListener instead of inline onclick Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix(view): use rawValue for object refs in bq-ref directive to support expressions Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * test: add coverage for nested bq-ref expressions and router query/hash restoration on cancelled navigation Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix(component): use event delegation in example to survive re-renders; test: add search/hash assertions Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * docs(component): add disconnected hook to example for proper event listener cleanup Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com>
… format (#20) Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…sistency (#22) Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…al handling, and hash-routing interception (#24) Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…iError, and reactive bq-for updates (#26) Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
… cleanup (#27) Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Jonas Pfalzgraf <info@josunlp.de>
…ion parsing (#37) Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Jonas Pfalzgraf <info@josunlp.de> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…lection.find(), element.is() (#39) * Initial plan * fix: css() getter, add Signal.dispose(), effect error handling, debounce/throttle cancel, is(), find() - Fix BQueryElement.css() to return computed style when used as getter - Fix BQueryCollection.css() to return computed style from first element - Add error handling in effect() to catch errors without breaking reactive graph - Add Signal.dispose() method to clear all subscribers - Add cancel() method to debounce() and throttle() return values - Add BQueryElement.is() as jQuery-compatible alias for matches() - Add BQueryCollection.find() for descendant querying - Add getComputedStyle to test setup for happy-dom - Add comprehensive tests for all changes Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * perf: use Set for deduplication in BQueryCollection.find() Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * refactor: address review feedback - delegate is() to matches(), use ownerDocument.defaultView for getComputedStyle, update css() JSDoc - is() now delegates to this.matches() instead of duplicating the implementation - css() getter uses ownerDocument.defaultView?.getComputedStyle() for cross-document/SSR safety - Updated css() JSDoc @returns to describe getter/setter return types - Same fix applied to BQueryCollection.css() getter Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix: properly type debounced/throttled via Object.assign, add getComputedStyle guard in collection.css() - Use Object.assign to create DebouncedFn/ThrottledFn with proper typing - Add typeof getComputedStyle check in BQueryCollection.css() getter for SSR safety Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * docs: add css() getter example to JSDoc, strengthen effect error test - Add getter usage example to BQueryElement.css() JSDoc - Verify effect continues working after catching an error Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix: use strict undefined check for debounce timeoutId instead of truthiness Handles edge case where setTimeout could return 0 in browser environments. Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix: implement removeDependency to prevent stale references on signal disposal * fix: update css() method signatures for better type safety * fix: update css() method signatures for improved type handling --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com>
…valuate.ts and security tests
…pdate AGENT.md for AI agent support feat: implement new features in core API including css() getter, is() method, find() method, and debounce/throttle enhancements fix: improve reactive system error handling and add Signal.dispose() method fix: enhance security validations for srcset and form action attributes docs: update README.md and API documentation with new features and usage examples chore: add llms.txt for LLM optimization and project summary
fix: reset timeoutId in debounce function to avoid unintended behavior
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: Jonas Pfalzgraf <info@josunlp.de> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Fix PR review issues: duplicate keys, cleanup leaks, export conflicts, and SSR safety (#17) Fix security, type safety, and API surface issues from PR #16 review (#18) Fix router cancellation, component example, and ref directive expression handling (#19) Fix router compatibility, isDev default, style cleanup, and changelog format (#20) Fix hash routing bugs and add comprehensive test coverage (#21) Fix router base path handling, bq-if DOM stability, and CHANGELOG consistency (#22) Fix defineComponent tests, store reactivity leak, view directive signal handling, and hash-routing interception (#24) Fix async handling, type safety, environment guards, and add test coverage from PR #16 review (#25) Fix DOM order reversal, stale dependency tracking, localStorage SafariError, and reactive bq-for updates (#26) Fix view template root validation, store optimizations, and utils API cleanup (#27) Fix bq-show display restoration and timeline.seek() time calculation (#28) Fix router base path duplication and add SSR guards for Element checks (#29) Fix interceptLinks() browser behavior and createTemplate() validation (#30) Fix bq-class bracket detection, once() failure caching, mount bq-for validation, and component pre-mount renders (#31) Fix bq-style whitespace handling and spring variable frame rate (#32) Fix bq-on method reference context loss and remove style attribute from security defaults (#33) Fix persistedSignal localStorage test key collision (#34) Fix bq-class directive stale class cleanup for object syntax (#35) Fix timeline() to account for animation iterations in duration calculations (#36) fix: Reactive robustness, security hardening, storage compat, expression parsing (#37) Fix css() getter, add Signal.dispose(), debounce/throttle cancel, collection.find(), element.is() (#39) fix(ci): align ESLint workflow with repo CI conventions (#47) fix: repair corrupted bun.lock breaking CI frozen-lockfile installs (#48) Fix ESLint workflow failure caused by SARIF formatter runtime mismatch (#50)
…component library, and Storybook-based component development (#44) * Initial plan * feat: add composables, config, and default components Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix: polish composable diagnostics and cookie parsing Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix: tighten final async and platform edge cases Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Replace playground workflow with Storybook Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Remove legacy playground alias Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix Storybook preview and Bun lockfile Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix component slots in Storybook preview Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Document slot sanitization for components Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Address review thread feedback Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Address second review thread feedback Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix component rendering: allow standard form attributes in shadow DOM sanitization Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Avoid re-rendering controls while typing Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix useCookie: limit auto-deserialization to JSON structures and enforce Secure with sameSite=None Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix transition token sanitization, generic fetch factories, and cookie init side effects Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix component hook typings, async-data disposal, and config header cloning Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix useFetch header reuse and announcer teardown guards Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Preserve Request headers in useFetch Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Fix async watch tracking in useAsyncData Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Harden cookie parsing and useFetch request handling Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Prevent duplicate component events and preserve Request passthrough Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Preserve Request headers over global fetch defaults Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * Preserve configured createUseFetch data types by default Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> * fix(full): re-export missing AsyncWatchSource, FetchInput, LinkedSignal types and linkedSignal value Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com>
…t library, and global configuration - Introduced `useAsyncData` and `useFetch` for improved async data handling. - Added `registerDefaultComponents` for a native UI component library. - Implemented `defineBqueryConfig` for shared runtime configuration across modules. - Expanded documentation to cover new features and usage examples. - Updated package version to 1.5.0 and dependencies for improved performance and security.
Signed-off-by: Jonas Pfalzgraf <info@josunlp.de>
There was a problem hiding this comment.
Pull request overview
This PR bumps bQuery.js to v1.5.0 and shifts the developer workflow toward Storybook while expanding the library’s reactive/platform capabilities (async fetch composables, shared runtime config, cookies/meta/announcer helpers) and tightening security/reactivity edge cases.
Changes:
- Added Storybook setup + component stories; removed the legacy playground.
- Introduced new public APIs across reactive/platform/motion/component (async data/fetch, global config, cookies/meta/announcer, richer transitions, default component library).
- Improved sanitizer and reactive error-handling; expanded test coverage accordingly.
Reviewed changes
Copilot reviewed 72 out of 75 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.test.json | Stop typechecking the removed playground in test TS config. |
| tsconfig.json | Adjust excludes for Storybook build output. |
| tests/view.test.ts | Add regression coverage for parseObjectExpression backslash/quote edge cases. |
| tests/utils.test.ts | Add tests for debounce.cancel() / throttle.cancel(). |
| tests/setup.ts | Extend happy-dom globals (Document/getComputedStyle/etc.) for new tests. |
| tests/security.test.ts | Add tests for srcset URL validation and form action URL validation. |
| tests/platform.test.ts | Add tests for storage keys, cookies, page meta, announcer, and config cloning behavior. |
| tests/motion.test.ts | Add transition tests for async updates, classes/types, and token sanitization. |
| tests/core.test.ts | Add tests for css() getter, is(), and collection find() behavior. |
| tests/component.test.ts | Add tests for arrow-hook lifecycle support + default component library registration/behavior. |
| stories/textarea.stories.ts | Storybook stories for default textarea component. |
| stories/shared.ts | Shared Storybook bootstrap (global config + default component registration). |
| stories/input.stories.ts | Storybook stories for default input component. |
| stories/checkbox.stories.ts | Storybook stories for default checkbox component. |
| stories/card.stories.ts | Storybook stories for default card component. |
| stories/button.stories.ts | Storybook stories for default button component. |
| src/view/evaluate.ts | Fix object-expression parsing by properly handling consecutive backslashes before quotes. |
| src/security/sanitize-core.ts | Add per-entry srcset validation + validate <form action> as a URL attribute. |
| src/security/constants.ts | Document/adjust slot handling so components can opt-in via allowTags. |
| src/reactive/signal.ts | Re-export async data/fetch composables + their types from the reactive barrel. |
| src/reactive/internals.ts | Make batch flushing resilient to observer errors; prevent batch underflow; add dependency removal helper. |
| src/reactive/index.ts | Surface new async composables + types from the reactive entry point. |
| src/reactive/effect.ts | Catch/log effect and cleanup errors to avoid breaking the reactive graph. |
| src/reactive/core.ts | Add Signal.dispose() to drop subscribers and clean up dependency references. |
| src/reactive/async-data.ts | New async primitives: useAsyncData, useFetch, and createUseFetch with typed lifecycle state. |
| src/platform/storage.ts | Make StorageAdapter.keys() spec-compliant via storage.key(i) iteration. |
| src/platform/meta.ts | New definePageMeta() helper with cleanup for title/meta/link/html/body attributes. |
| src/platform/index.ts | Export new platform helpers (cookies, config, meta, announcer) and related types. |
| src/platform/cookies.ts | New useCookie() reactive cookie helper with JSON heuristics + SameSite/Secure enforcement. |
| src/platform/config.ts | New shared global configuration (defineBqueryConfig / getBqueryConfig) with cloning. |
| src/platform/announcer.ts | New useAnnouncer() ARIA live-region helper with timer-safe teardown. |
| src/motion/types.ts | Expand TransitionOptions to support async updates, classes/types, reduced-motion skip, callbacks. |
| src/motion/transition.ts | Consume global transition defaults; support async updates, classes/types, reduced-motion behavior, hooks. |
| src/full.ts | Re-export new public APIs/types in the full bundle entry. |
| src/core/utils/function.ts | Add DebouncedFn/ThrottledFn types; implement .cancel() on debounce/throttle. |
| src/core/index.ts | Export debounce/throttle enhanced function types from core entry point. |
| src/core/element.ts | Add css() getter overloads + is() alias for matches(). |
| src/core/collection.ts | Add css() getter overloads and find() with deduplication. |
| src/component/types.ts | Broaden lifecycle hook typing to allow arrow functions and optional this binding. |
| src/component/library.ts | New default component library (button/card/input/textarea/checkbox) with safer event behavior and stable controls. |
| src/component/index.ts | Export default component registration + types. |
| src/component/component.ts | Expand Shadow DOM sanitization allowances for slots/parts/form attributes. |
| playground/vite.config.ts | Remove legacy playground Vite config. |
| playground/tsconfig.json | Remove legacy playground TS config. |
| playground/src/state.ts | Remove legacy playground state module. |
| playground/src/index.ts | Remove legacy playground entry point. |
| playground/src/demos/security.ts | Remove legacy playground security demo. |
| playground/src/demos/platform.ts | Remove legacy playground platform demo. |
| playground/src/demos/index.ts | Remove legacy playground demos barrel. |
| playground/src/components/navigation.ts | Remove legacy playground navigation component. |
| playground/src/components/index.ts | Remove legacy playground components barrel. |
| playground/src/components/hero.ts | Remove legacy playground hero component. |
| playground/src/components/foundation.ts | Remove legacy playground foundation components. |
| playground/src/components/footer.ts | Remove legacy playground footer component. |
| playground/src/app.ts | Remove legacy playground app shell. |
| playground/index.html | Remove legacy playground HTML entry. |
| package.json | Version bump + add Storybook scripts/deps + update tooling versions. |
| llms.txt | Add an LLM-oriented repository summary for contributors/agents. |
| eslint.config.js | Update ignore patterns for Storybook build output. |
| docs/index.md | Update landing page feature list to match new capabilities/workflow. |
| docs/guide/security.md | Document srcset + form action URL validation behavior. |
| docs/guide/reactive.md | Document signal dispose + async composables. |
| docs/guide/platform.md | Document global config + cookies/meta/announcer APIs. |
| docs/guide/motion.md | Document expanded transition() options + global defaults. |
| docs/guide/getting-started.md | Update imports/examples and dev workflow to Storybook. |
| docs/guide/components.md | Document default component library + sanitization expectations. |
| docs/guide/api-core.md | Document css() getter, is(), collection find(), and cancelable debounce/throttle. |
| docs/definition.md | Update conceptual docs to include new modules/APIs + Storybook workflow. |
| CONTRIBUTING.md | Replace playground instructions with Storybook instructions. |
| CHANGELOG.md | Add v1.5.0 release notes and reflect the new APIs/workflow. |
| AGENT.md | Add comprehensive AI agent guide covering architecture, exports, invariants, and workflows. |
| .storybook/preview.ts | Storybook preview configuration (layout/controls). |
| .storybook/preview.css | Base Storybook preview styling. |
| .storybook/main.ts | Storybook builder + stories/addons configuration. |
| .prettierignore | Exclude Storybook build output from formatting. |
| .npmignore | Exclude Storybook source assets from published package. |
| .gitignore | Ignore storybook-static/ build output. |
| .github/workflows/label.yml | Add PR labeler workflow. |
| .github/workflows/eslint.yml | Add ESLint CI workflow with SARIF upload. |
| .github/labeler.yml | Add label mapping rules by path. |
| .github/copilot-instructions.md | Expand Copilot guidance to reflect new modules/workflows. |
| .github/ISSUE_TEMPLATE/feature_request.md | Add standardized feature request template. |
| .github/ISSUE_TEMPLATE/bug_report.md | Add standardized bug report template. |
| .github/FUNDING.yml | Comment out unused funding fields for clarity. |
| .cursorrules | Add Cursor-specific contributor rules. |
| .clinerules | Add Cline-specific contributor rules. |
|
@copilot open a new pull request to apply changes based on the comments in this thread |
* Initial plan * chore: ignore storybook static output in npm package Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: JosunLP <20913954+JosunLP@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR bumps bQuery.js to v1.5.0 and significantly expands the library’s first-party platform/reactive/component capabilities while shifting the contributor workflow from the Vite playground to Storybook (plus accompanying CI/doc updates).
Changes:
- Added new public APIs across reactive (
useAsyncData,useFetch,createUseFetch), platform (defineBqueryConfig,getBqueryConfig,useCookie,definePageMeta,useAnnouncer), and component (registerDefaultComponents+ default UI primitives). - Enhanced motion
transition()with async updates, reduced-motion skipping, root classes, transition types, and lifecycle callbacks. - Replaced the legacy playground workflow with Storybook (config + stories), updated docs/README/changelog, and added GitHub workflows for labeling + ESLint SARIF upload.
Reviewed changes
Copilot reviewed 72 out of 75 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.test.json | Removes playground from test TS include set. |
| tsconfig.json | Updates excluded build artifacts (storybook-static) and removes playground exclusion. |
| tests/signal.test.ts | Adds coverage for new async-data/fetch composables and fetch factory typing behavior. |
| tests/setup.ts | Extends happy-dom globals to support new platform tests (Document/SyntaxError). |
| tests/platform.test.ts | Adds extensive tests for useCookie, definePageMeta, useAnnouncer, defineBqueryConfig behaviors. |
| tests/motion.test.ts | Adds coverage for async transition updates, token sanitization, classes/types. |
| tests/component.test.ts | Adds coverage for arrow-function hooks + default component library behavior/security. |
| stories/*.stories.ts, stories/shared.ts | Adds Storybook stories and shared story setup registering default components/config. |
| src/reactive/async-data.ts | Introduces async state + fetch composables and fetch factory helper. |
| src/reactive/signal.ts, src/reactive/index.ts | Re-exports new composables and associated public types. |
| src/platform/config.ts | Adds shared runtime configuration (define/get) with cloning for safety. |
| src/platform/cookies.ts | Adds reactive useCookie with config defaults, parsing rules, and persistence. |
| src/platform/meta.ts | Adds definePageMeta with cleanup support for title/meta/link/html/body attrs. |
| src/platform/announcer.ts | Adds useAnnouncer live-region helper with destroy/clear/timers. |
| src/platform/index.ts | Exposes new platform APIs and types from the platform entrypoint. |
| src/motion/types.ts, src/motion/transition.ts | Expands TransitionOptions and implements config-aware transition enhancements. |
| src/component/library.ts, src/component/index.ts | Adds default component library registration and exports/types. |
| src/component/component.ts | Adjusts shadow DOM sanitization to allow slot + form-related attributes/part. |
| src/security/constants.ts | Documents slot handling rationale relative to sanitization allowlists. |
| src/full.ts | Updates full-bundle exports/types to include new APIs. |
| package.json | Bumps to 1.5.0, adds Storybook scripts/deps, updates tooling deps. |
| eslint.config.js | Updates ignore list for Storybook build output. |
| .storybook/*, .npmignore, .prettierignore, .gitignore | Adds Storybook config and ignores build output where appropriate. |
| docs/*, README.md, llms.txt, AGENT.md, CHANGELOG.md, CONTRIBUTING.md | Documents new APIs/workflow and release notes for 1.5.0. |
| .github/workflows/label.yml, .github/labeler.yml, .github/workflows/eslint.yml | Adds label automation and ESLint scanning with SARIF upload. |
| .github/ISSUE_TEMPLATE/*, .github/copilot-instructions.md | Updates contributor/agent guidance and templates. |
| playground/* | Removes the legacy playground code/config. |
This pull request introduces significant improvements to bQuery.js's project infrastructure, documentation, and developer workflow. Key changes include new GitHub workflows for labeling and ESLint, expanded Copilot instructions and conventions, new rules files for AI agents and cursor guidance, and the addition of Storybook configuration for component documentation. These updates enhance project maintainability, streamline CI/CD processes, and provide clearer guidance for contributors.
CI/CD and GitHub Workflow Enhancements:
.github/workflows/label.ymlto automate pull request labeling based on file paths, leveraging.github/labeler.ymlfor configuration. [1] [2].github/workflows/eslint.ymlfor automated ESLint scanning, SARIF conversion, and uploading results to GitHub, improving code quality checks.Documentation and Contributor Guidance:
.github/copilot-instructions.mdwith detailed module descriptions (including router, store, view), updated build/test commands, and new sections for common pitfalls and AI agent resources. [1] [2] [3] [4].clinerulesand.cursorrulesfiles to provide concise, AI-optimized rules for code additions and cursor behavior, supporting Copilot and agent workflows. [1] [2].github/ISSUE_TEMPLATE/bug_report.mdand.github/ISSUE_TEMPLATE/feature_request.mdfor standardized issue reporting and feature requests. [1] [2]Storybook Integration:
.storybook/main.ts,.storybook/preview.ts, and.storybook/preview.cssfor Storybook configuration, enabling interactive component documentation and visualization. [1] [2] [3].npmignoreand.prettierignoreto exclude Storybook and related directories from published packages and formatting. [1] [2]Other Improvements:
.github/FUNDING.ymlto comment out unused funding platforms for clarity.These changes collectively improve developer experience, project clarity, and CI/CD automation for bQuery.js.