GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Fix css() getter, add Signal.dispose(), debounce/throttle cancel, collection.find(), element.is() by Copilot · Pull Request #39 · bQuery/bQuery

Conversation

Copilot AI commented Feb 10, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor
  • Thorough codebase analysis and understanding
  • Bug Fix: css() getter on BQueryElement — css('color') without a value now returns the computed style value instead of this
  • Bug Fix: css() getter on BQueryCollection — Returns computed style from first element, empty string for empty collections
  • Improvement: effect() error handling — Effect functions that throw are now caught with console.error, preventing the reactive graph from breaking
  • Improvement: dispose() method on Signal — New method to clear all subscribers, preventing memory leaks when signals are no longer needed
  • Improvement: debounce() returns DebouncedFn with cancel() — Cancel pending debounced invocations
  • Improvement: throttle() returns ThrottledFn with cancel() — Reset throttle timer to allow immediate re-execution
  • New Feature: BQueryElement.is() method — jQuery-compatible alias for matches() for improved readability
  • New Feature: BQueryCollection.find() method — Find descendants matching a selector across all elements, with O(n) deduplication via Set
  • Test Setup: getComputedStyle polyfill — Added missing getComputedStyle to happy-dom test setup
  • Add tests for all changes (16 new tests, 475 total pass)
  • Run lint and type checks (all pass)
  • Code review feedback addressed (all rounds)
  • Security scan (CodeQL: 0 alerts)

💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Initial plan
f05b920
Copilot AI assigned Copilot and JosunLP Feb 10, 2026
Copilot started work on behalf of JosunLP February 10, 2026 12:27
View session
Copilot AI and others added 2 commits February 10, 2026 12:34
@JosunLP
fix: css() getter, add Signal.dispose(), effect error handling, debou…
51f6ab0
…nce/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 <[email protected]>
@JosunLP
perf: use Set for deduplication in BQueryCollection.find()
73639ac
Co-authored-by: JosunLP <[email protected]>
Copilot AI changed the title [WIP] Review project for improvements, errors, and new features Fix css() getter, add Signal.dispose(), debounce/throttle cancel, collection.find(), element.is() Feb 10, 2026
Copilot AI requested a review from JosunLP February 10, 2026 12:39
Copilot finished work on behalf of JosunLP February 10, 2026 12:39
@JosunLP
JosunLP marked this pull request as ready for review February 10, 2026 14:06
Copilot AI review requested due to automatic review settings February 10, 2026 14:06
Copilot started reviewing on behalf of JosunLP February 10, 2026 14:06
View session
Copilot AI reviewed Feb 10, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses several core API gaps/bugs in bQuery, improving jQuery-parity and reactive/runtime ergonomics (CSS getters, reactive cleanup, cancellable debounce/throttle, and new DOM query/matching helpers).

Changes:

  • Fixes css() getter behavior for BQueryElement / BQueryCollection by returning computed style values when called as a getter.
  • Adds reactive/runtime enhancements: Signal.dispose() and error catching/logging in effect().
  • Extends core utilities and DOM traversal APIs: cancellable debounce()/throttle(), BQueryCollection.find(), and BQueryElement.is().

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/core/element.ts Adds css() getter overloads/implementation and introduces is() alias.
src/core/collection.ts Adds css() getter behavior for collections and implements find() with deduping.
src/core/utils/function.ts Adds DebouncedFn/ThrottledFn types and implements cancel() for debounce/throttle.
src/core/index.ts Re-exports new debounce/throttle function types.
src/reactive/core.ts Adds Signal.dispose() for clearing subscribers.
src/reactive/effect.ts Wraps tracked effect execution in try/catch with console.error.
tests/setup.ts Registers getComputedStyle in the happy-dom global test setup.
tests/core.test.ts Adds tests for css getter behavior, is(), and collection.find().
tests/utils.test.ts Adds tests for debounce/throttle cancel().
tests/signal.test.ts Adds tests for Signal.dispose() and effect error handling.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/core/element.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/core/element.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/core/element.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/core/collection.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@JosunLP

JosunLP commented Feb 10, 2026

Copy link
Copy Markdown
Collaborator

@copilot apply changes based on the comments in this thread

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot started work on behalf of JosunLP February 10, 2026 14:32
View session
@JosunLP
refactor: address review feedback - delegate is() to matches(), use o…
ce85d22
…wnerDocument.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 <[email protected]>

Copilot AI commented Feb 10, 2026

Copy link
Copy Markdown
Contributor Author

@copilot apply changes based on the comments in this thread

All 4 review comments addressed in ce85d22:

  • is() delegates to this.matches()
  • css() JSDoc updated with getter/setter return types
  • Both BQueryElement.css() and BQueryCollection.css() getters now use ownerDocument.defaultView?.getComputedStyle() for cross-document/SSR safety
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot finished work on behalf of JosunLP February 10, 2026 14:34
@JosunLP
JosunLP requested a review from Copilot February 10, 2026 14:42
Copilot started reviewing on behalf of JosunLP February 10, 2026 14:43
View session
Copilot AI reviewed Feb 10, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/core/utils/function.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/core/utils/function.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/core/collection.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@JosunLP

JosunLP commented Feb 10, 2026

Copy link
Copy Markdown
Collaborator

@copilot apply changes based on the comments in this thread

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot started work on behalf of JosunLP February 10, 2026 15:11
View session
@JosunLP
fix: properly type debounced/throttled via Object.assign, add getComp…
e4c7222
…utedStyle 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 <[email protected]>

Copilot AI commented Feb 10, 2026

Copy link
Copy Markdown
Contributor Author

@copilot apply changes based on the comments in this thread

All 3 review comments addressed in e4c7222:

  • debounced and throttled now use Object.assign() for proper DebouncedFn/ThrottledFn typing
  • BQueryCollection.css() getter now has typeof getComputedStyle !== 'function' guard matching BQueryElement.css()
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot finished work on behalf of JosunLP February 10, 2026 15:13
@JosunLP
JosunLP requested a review from Copilot February 10, 2026 15:14
Copilot started reviewing on behalf of JosunLP February 10, 2026 15:14
View session
Copilot AI reviewed Feb 10, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread tests/signal.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/core/element.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@JosunLP

JosunLP commented Feb 10, 2026

Copy link
Copy Markdown
Collaborator

@copilot apply changes based on the comments in this thread

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot AI commented Feb 10, 2026

Copy link
Copy Markdown
Contributor Author

@copilot apply changes based on the comments in this thread

Both review comments addressed in 734789b:

  • Effect error test now verifies the effect continues working after catching an error
  • css() JSDoc now includes a getter usage example
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot finished work on behalf of JosunLP February 10, 2026 20:19
@JosunLP
JosunLP requested a review from Copilot February 10, 2026 20:21
Copilot started reviewing on behalf of JosunLP February 10, 2026 20:21
View session
Copilot AI reviewed Feb 10, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 1 comment.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/core/utils/function.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@JosunLP

JosunLP commented Feb 10, 2026

Copy link
Copy Markdown
Collaborator

@copilot apply changes based on the comments in this thread

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot started work on behalf of JosunLP February 10, 2026 20:27
View session
@JosunLP
fix: use strict undefined check for debounce timeoutId instead of tru…
7d76a7c
…thiness

Handles edge case where setTimeout could return 0 in browser environments.

Co-authored-by: JosunLP <[email protected]>

Copilot AI commented Feb 10, 2026

Copy link
Copy Markdown
Contributor Author

@copilot apply changes based on the comments in this thread

Applied in 7d76a7c — debounce() now uses timeoutId !== undefined instead of truthiness checks.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

Copilot finished work on behalf of JosunLP February 10, 2026 20:29
@JosunLP
JosunLP requested a review from Copilot February 10, 2026 20:59
Copilot started reviewing on behalf of JosunLP February 10, 2026 21:00
View session
Copilot AI reviewed Feb 10, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/reactive/core.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tests/core.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread tests/core.test.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@JosunLP
fix: implement removeDependency to prevent stale references on signal…
000ae96
… disposal
@JosunLP
JosunLP requested a review from Copilot February 10, 2026 21:09
Copilot started reviewing on behalf of JosunLP February 10, 2026 21:10
View session
Copilot AI reviewed Feb 10, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated 2 comments.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Comment thread src/core/collection.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

Comment thread src/core/element.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

JosunLP added 2 commits February 10, 2026 22:16
@JosunLP
fix: update css() method signatures for better type safety
bb7e6f1
@JosunLP
fix: update css() method signatures for improved type handling
1d5ef9a
@JosunLP
JosunLP requested a review from Copilot February 10, 2026 21:18
Copilot started reviewing on behalf of JosunLP February 10, 2026 21:19
View session
Copilot AI reviewed Feb 10, 2026
View reviewed changes

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 11 out of 11 changed files in this pull request and generated no new comments.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@JosunLP
JosunLP merged commit b713ef1 into development Feb 10, 2026
13 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@JosunLP
JosunLP deleted the copilot/improve-project-quality branch February 10, 2026 21:22
JosunLP added a commit that referenced this pull request Feb 10, 2026
@JosunLP @github-advanced-security
Version Release 1.4.0 (#40)
fdda2e6
* Refactor motion module: Split functionality into separate files and enhance 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.

* Füge Sicherheitsmodule hinzu: Modularisiere interne Logik, implementiere Trusted Types und verbessere die HTML-Sanitierung

* - **Router**: Internals modularized into focused submodules with no public API changes.

### Fixed (Unreleased)

- **Security**: `security/sanitize` now re-exports `generateNonce()` and `isTrustedTypesSupported()` for legacy deep imports.

* Füge defineComponent-Funktion hinzu und modularisiere Komponentenlogik in Submodule

* Füge linkedSignal-Funktion hinzu: Erstelle schreibbare berechnete Werte, die Getter und Setter verknüpfen

* feat(store): implement devtools integration and refactor store structure

- 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.

* feat(view): implement directive handlers for dynamic binding

- 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

* feat(core): add attribute helpers and collection DOM manipulation methods

* feat(core): modularize utility functions into focused helper modules

* feat(component): sanitize markup in defineComponent to enhance security

* feat(security): sanitize component render markup for Shadow DOM consistency
fix(docs): correct event section heading in Core API guide for BQueryElement

* feat(release): bump version to 1.3.0 and update changelog

* feat(docs): update module sizes in README and add module overview in getting started guide

* feat(security): enhance mXSS detection in sanitizeHtmlCore by verifying stability through double-parsing

* Potential fix for code scanning alert no. 9: DOM text reinterpreted as HTML

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Fix PR review issues: duplicate keys, cleanup leaks, export conflicts, 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 <[email protected]>

* fix: improve duplicate key warning message to be more accurate

Co-authored-by: JosunLP <[email protected]>

* test: add coverage for PR fixes - unwrap siblings, defineStore caching, ref cleanup, duplicate keys

Co-authored-by: JosunLP <[email protected]>

* test: improve duplicate key test with try-finally and reduce duplication

Co-authored-by: JosunLP <[email protected]>

* docs: clarify unwrap() behavior for all children vs collection-only elements

Co-authored-by: JosunLP <[email protected]>

* Update src/router/router.ts

Co-authored-by: Copilot <[email protected]>

* Update src/core/index.ts

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>
Co-authored-by: Jonas Pfalzgraf <[email protected]>
Co-authored-by: Copilot <[email protected]>

* feat(security): implement safe HTML parsing with DOMParser and enhance mXSS detection

* Potential fix for code scanning alert no. 12: DOM text reinterpreted as HTML

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Fix security, type safety, and API surface issues from PR #16 review (#18)

* Initial plan

* fix: address PR review comments - router guards, motion kebab-case, component styles, utils exports, docs

Co-authored-by: JosunLP <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* feat(security): enhance HTML parsing with input normalization and early return for plain text

* feat(security): implement dedicated HTML parsing helper to enhance safety and clarity

* Fix router cancellation, component example, and ref directive expression handling (#19)

* Initial plan

* fix(router): restore full URL with query/hash and use replaceState on cancelled navigation

Co-authored-by: JosunLP <[email protected]>

* docs(component): update example to use addEventListener instead of inline onclick

Co-authored-by: JosunLP <[email protected]>

* fix(view): use rawValue for object refs in bq-ref directive to support expressions

Co-authored-by: JosunLP <[email protected]>

* test: add coverage for nested bq-ref expressions and router query/hash restoration on cancelled navigation

Co-authored-by: JosunLP <[email protected]>

* fix(component): use event delegation in example to survive re-renders; test: add search/hash assertions

Co-authored-by: JosunLP <[email protected]>

* docs(component): add disconnected hook to example for proper event listener cleanup

Co-authored-by: JosunLP <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* Fix router compatibility, isDev default, style cleanup, and changelog format (#20)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix hash routing bugs and add comprehensive test coverage (#21)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix router base path handling, bq-if DOM stability, and CHANGELOG consistency (#22)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Add JsDelivr badge to README (#23)

* Fix defineComponent tests, store reactivity leak, view directive signal handling, and hash-routing interception (#24)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix async handling, type safety, environment guards, and add test coverage from PR #16 review (#25)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix DOM order reversal, stale dependency tracking, localStorage SafariError, and reactive bq-for updates (#26)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix view template root validation, store optimizations, and utils API cleanup (#27)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Jonas Pfalzgraf <[email protected]>

* Fix bq-show display restoration and timeline.seek() time calculation (#28)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix router base path duplication and add SSR guards for Element checks (#29)

* Initial plan

* Fix router base path duplication and add SSR guards for Element checks

Co-authored-by: JosunLP <[email protected]>

* Fix SSR safety for interceptLinks default parameter and null router handling

Co-authored-by: JosunLP <[email protected]>

* Address PR review comments: add window guard, fix base="/" edge case, clarify error comments, and add test coverage

Co-authored-by: JosunLP <[email protected]>

* Fix window guard short-circuit and remove trailing whitespace

Co-authored-by: JosunLP <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* Fix interceptLinks() browser behavior and createTemplate() validation (#30)

* Initial plan

* Fix interceptLinks() to respect browser behaviors and improve createTemplate() validation

- Add guards for standard browser behaviors in interceptLinks():
  * Only intercept left-clicks (button 0)
  * Respect Ctrl/Cmd/Shift/Alt modifier keys for new tabs
  * Skip already-prevented events
  * Check for MouseEvent type
- Add proper validation in createTemplate() to ensure exactly one root element
- Note: Did not change beforebegin reversal behavior as current implementation is correct

Co-authored-by: JosunLP <[email protected]>

* Simplify createTemplate validation logic

Remove redundant check - since we already verified el exists, we only need to check for multiple roots

Co-authored-by: JosunLP <[email protected]>

* Improve comment clarity in createTemplate validation

Co-authored-by: JosunLP <[email protected]>

* Improve comment accuracy in validation and event handling

Co-authored-by: JosunLP <[email protected]>

* Simplify comment for better clarity

Co-authored-by: JosunLP <[email protected]>

* Add test coverage for browser behavior guards and template validation

- Add tests for interceptLinks() modifier key guards (Ctrl, Cmd, Shift, Alt)
- Add tests for interceptLinks() button checks (middle-click, right-click)
- Add test for interceptLinks() defaultPrevented check
- Add tests for createTemplate() multiple root element validation
- Add test for createTemplate() with whitespace handling
- All 422 tests pass

Co-authored-by: JosunLP <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* Fix bq-class bracket detection, once() failure caching, mount bq-for validation, and component pre-mount renders (#31)

* Initial plan

* Fix bq-class array detection, once() failure handling, mount bq-for guard, and component pre-mount renders

Co-authored-by: JosunLP <[email protected]>

* Add test coverage for once(), bq-class bracket access, mount bq-for validation, and component hasMounted

Co-authored-by: JosunLP <[email protected]>

* Fix trailing whitespace in view tests

Co-authored-by: JosunLP <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* Enhance prop coercion error handling, add Web Animations API check in timeline, and improve watch options with immediate and custom equality support

* Refactor tests to improve error message handling and update bq-class syntax; remove redundant bq-for test case

* Add GitHub Actions workflow for testing with Bun

* Potential fix for code scanning alert no. 16: Workflow does not contain permissions

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Refactor import statements for consistency, enhance untrack functionality to prevent dependency tracking for computed values, and add related tests

* Refactor imports for consistency, enhance Actions type to include getters, and clean up whitespace in various files

* Update warning message in bq-for tests to reflect index-based key fallback

* Implement lazy context proxy for signal unwrapping in evaluate function

* Format YAML and TypeScript files for consistency and readability

* Add early completion for flip animation on zero dimensions or no change

* Optimize evaluation functions by implementing caching for compiled expressions

* Füge Typdefinitionen für die Sicherheitsfunktionen hinzu und optimiere die Typumwandlung in der Prop-Koerzierungsfunktion

* Optimiere den Cache für evaluateRaw-Funktionen und verbessere die Schlüsselgenerierung

* Update README.md

Co-authored-by: Copilot <[email protected]>

* Verbessere die Handhabung von Funktionsreferenzen in der bq-on:event-Direktive und optimiere die Cache-Logik in defineStore

* Verbessere die Typisierung und Validierung in der generateNonce-Funktion, füge Chunking für die String-Erstellung hinzu; aktualisiere die truncate-Dokumentation und verbessere die Proxy-Implementierung in createLazyContext

* Füge eine LRU-Cache-Implementierung für die Auswertung von Ausdrücken hinzu und verbessere die Cache-Verwaltung; implementiere Tests für die Cache-Leerung

* Verbessere die Handhabung von Leerzeichen in der class-Direktive und aktualisiere die Bun-Version in der CI-Konfiguration

* Aktualisiere die Bun-Version auf 1.3.7 in den CI-Konfigurationen und verbessere die Fehlerbehandlung beim Erstellen der Trusted Types-Policy.

* Verbessere die Handhabung der erforderlichen Eigenschaften im defineComponent und führe eine verzögerte Initialisierung des Mounts durch; aktualisiere die Typdefinitionen für die merge-Funktion zur Unterstützung von bis zu 5 Quellen.

* Füge Fallback für SSR/non-DOM-Umgebungen in der transition-Funktion hinzu und verbessere die Handhabung von localStorage in den Tests.

* Fix bq-style whitespace handling and spring variable frame rate (#32)

* Initial plan

* Fix bq-style whitespace handling and spring variable frame rate

Co-authored-by: JosunLP <[email protected]>

* Improve documentation for spring variable frame rate timing

Co-authored-by: JosunLP <[email protected]>

* Add test for bq-style directive with leading whitespace

Co-authored-by: JosunLP <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* Fix bq-on method reference context loss and remove style attribute from security defaults (#33)

* Initial plan

* Fix bq-on method reference docs and remove style from default allowed attributes

Co-authored-by: JosunLP <[email protected]>

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* Fix persistedSignal localStorage test key collision (#34)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix bq-class directive stale class cleanup for object syntax (#35)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Jonas Pfalzgraf <[email protected]>

* Fix timeline() to account for animation iterations in duration calculations (#36)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix createTemplate to reject templates with bq-if directive on the root element

* Fix test job permissions in GitHub Actions workflow

* Fix timeline to conditionally apply final keyframe styles based on commitStyles flag

* Fix createRouter to correctly handle base path matching for navigation

* 🔀 Update CHANGELOG.md

Co-authored-by: Copilot <[email protected]>

* Fix handleShow to ensure cross-document compatibility for computed display values

* Enhance prop coercion by adding explicit control for constructor invocation in PropDefinition

* Update devDependencies to latest versions for improved compatibility

* chore: update dependencies in package.json and improve test readability

- Updated eslint-config-prettier from ^9.1.2 to ^10.1.8
- Updated globals from ^15.15.0 to ^17.2.0
- Updated rimraf from ^5.0.10 to ^6.1.2
- Updated typedoc from ^0.25.13 to ^0.28.16
- Updated vite from ^5.4.21 to ^7.3.1
- Cleaned up whitespace in view.test.ts for better readability

* refactor: simplify logic for ordering elements in insertContent function

* refactor: enhance type handling in handleRef for improved clarity and safety

* refactor: clarify logic for reversing element order in insertContent function

* docs: update documentation for new features and improvements across modules

* fix: Reactive robustness, security hardening, storage compat, expression parsing (#37)

Co-authored-by: JosunLP <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Jonas Pfalzgraf <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>

* Fix css() getter, add Signal.dispose(), debounce/throttle cancel, collection.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 <[email protected]>

* perf: use Set for deduplication in BQueryCollection.find()

Co-authored-by: JosunLP <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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 <[email protected]>

* 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] <[email protected]>
Co-authored-by: JosunLP <[email protected]>

* chore: update dependencies and version, improve code readability in evaluate.ts and security tests

* fix: update funding model comments for clarity and consistency

* feat: add Cline and Cursor rules, enhance Copilot instructions, and update 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: update security rule to reference correct sanitize module path

* fix: add optional chaining to prevent errors when accessing defaultView
fix: reset timeoutId in debounce function to avoid unintended behavior

* fix: clarify srcset validation behavior in documentation and examples

* Update tests/view.test.ts

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
JosunLP added a commit that referenced this pull request Mar 12, 2026
@JosunLP @github-advanced-security
labeler (#45)
55b23e0
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: JosunLP <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: Jonas Pfalzgraf <[email protected]>
Co-authored-by: Copilot <[email protected]>
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)
JosunLP added a commit that referenced this pull request May 28, 2026
@JosunLP
Fix documentation examples and workflow notes to match implementation (…
4439706
…#116)

## Summary

- Correct documentation examples and workflow/tooling notes so they
match the current bQuery APIs, SSR behavior, docs audit behavior, and
latest review feedback on guide wording.
- Readers and contributors can copy/paste the examples without type
errors and won’t be misled by inaccurate examples, cleanup guidance, or
workflow comments.

## Motivation

- This change is needed because review feedback on PR #116 identified
multiple documentation snippets and workflow notes that did not match
the current implementation, including follow-up fixes for SSR streaming
semantics, guide wording, and audit-script messaging.
- These fixes keep the docs aligned with the implementation so examples
remain copy/paste-safe and tooling output is easier to interpret.

## Changes included

- `docs/guide/ssr.md` — update the streaming &amp; caching section:
`flushBoundary()` takes no arguments, `createSSRCache({ ttlMs,
maxEntries, getKey })`, `createSSRMetrics()` is an imperative collector
with `snapshot()`, `createEdgeHandler(handler, options?)` wraps a
fetch-style handler; rewrite the example to combine `createSSRContext`,
`renderToResponse`, and `cache: { store, vary }`; replace the `{ key }`
pitfall with guidance on `cache.vary` + `createSSRCache({ getKey })`;
and clarify that `flushBoundary()` splits final output into chunks
rather than providing true progressive async streaming. Also update the
performance note to point readers to Suspense streaming for earlier
TTFB.
- `docs/workflows/streaming-ssr.md` — fix `flushBoundary()` usage, cache
option names (`ttlMs`/`maxEntries`), metrics description, server
pipeline (`createSSRContext({ request, metrics })` +
`renderToStream(template, data, { context })` for streaming;
`ctx.renderResponse` with `cache: { store, vary }` for response
caching), `_metrics` endpoint now reads `metrics.snapshot()`, edge
variant now wraps a fetch-style handler, and pitfalls reference
`cache.vary` / `createSSRCache({ getKey })` instead of a non-existent `{
key }` option. Also clarify that `renderToStream()` resolves the binding
context up front, use a real HTML comment in the template example, align
the workflow goal text with the actual metrics endpoint, and document
that flush boundaries control chunk boundaries rather than
time-to-first-byte.
- `docs/workflows/off-main-thread.md` — fix
`createReactiveTaskPool(handler, { concurrency, maxQueue })` signature,
drop `withTransferables`&#39; invalid second argument and the `{ html }`
wrapping, document the reactive signal mirrors (`pending$`, `size$`,
`state$`, `paused$`, `metrics$` with `{ completed, failed, avgRuntimeMs,
p95RuntimeMs }`), correct `createSharedBuffer(byteLength)` to take a
number, remove the `shared` field from the `HighlightInput` call site,
and update the summary bullets to reference numeric
`runOptions.priority` and `{ concurrency, maxQueue }`.
- `docs/index.md` — rewrite the “Two-minute example — server” snippet to
use `ctx.renderResponse(template, data)` with an awaited
`app.listen(...)`.
- `docs/concepts/rendering-modes.md` — rewrite the SSR example to use
`ctx.renderResponse(template, data)` with `await app.listen(...)`;
rewrite the Streaming SSR example to use a template string with
`flushBoundary()` markers passed to `ctx.renderStream(template, data)`;
drop references to non-existent `serveStatic` / `noHydrate` options in
the hydration section; and clarify that `renderToStream()` chunks the
final HTML stream while `renderToStreamSuspense()` + `defer()` handle
true progressive/out-of-order streaming.
- `docs/workflows/todo-spa.md` — fix the `bq-for` example so
toggle/remove handlers use `t.id` instead of `t.value.id`.
- `docs/cookbook/trace-signal.md` — enable devtools in the recipe before
calling `trackSignal()` so the example actually emits trace and timeline
entries.
- `scripts/check-doc-exports.mjs` — keep fenced code contents in the doc
corpus, correct the header comment so it no longer claims the default
mode is used in CI, and update the final status messaging so
informational/strict output accurately distinguishes a clean run from
coverage gaps and audit errors.
- `.github/workflows/docs-link-check.yml` — clarify the workflow comment
so it matches the actual informational `fail: false` behavior instead of
implying link failures are blocking.
- `docs/guide/server.md` — fix the streaming example so `ctx.stream()`
receives a `ReadableStream` and enqueues encoded byte chunks instead of
strings.
- `docs/workflows/index.md` — correct the SSR hydration workflow summary
to reference SSR plus runtime adapters instead of the
`@bquery/bquery/server` module.
- `docs/guide/store.md` — replace a non-existent `persist({ keys: [...]
})` helper reference with accurate persisted-store/plugin guidance.
- `docs/workflows/forms-validation.md` — update the sign-up workflow to
use the current forms API (`initialValue`, validator arrays,
`validationStrategy: &#39;onChange&#39;`, `handleSubmit()`, per-field
`error` signals, and `form.errors` signal reads) and reword locale-aware
validation guidance so translations come from calling `t()` at
validation time.
- `docs/cookbook/login-form.md` — update the login form recipe to use
the current forms API (`initialValue`, validator arrays, `minLength`,
`validationStrategy: &#39;onChange&#39;`, `handleSubmit()`, and field
`error` signals).
- `docs/guide/i18n.md` — clarify that `t()` is reactive inside view
bindings/effects because it reads the locale signal, while `tc()` is
useful when a reusable computed translation signal is needed.
- `docs/guide/view.md` — correct cleanup guidance to use
`View.destroy()` for `mount()` results, and fix testing guidance so
`mount()` is imported from `@bquery/bquery/view` while `screen`,
`within()`, `fireEvent.*`, and `tick()` come from
`@bquery/bquery/testing`.

## Validation

- [x] `bun run lint`
- [x] `bun run build`
- [ ] `bun test`
- [x] Additional focused checks (if applicable): `bun run
check:doc-exports`; `bun run docs:build`; final review via parallel
validation (Code Review clean, CodeQL clean/skipped on unchanged delta)

## Checklist

- [ ] I followed the contributing guidelines.
- [ ] I added or updated tests where behavior changed.
- [x] I updated documentation when public behavior or developer workflow
changed.
- [x] I confirmed the change does not introduce security-sensitive
regressions.

## Notes for reviewers

- The PR remains documentation/tooling focused; public runtime APIs are
unchanged.
- The latest follow-up fixes also correct guide wording around i18n
reactivity, view cleanup/testing imports, and SSR performance
expectations.
- `bun test` still has a pre-existing unrelated failure in
`tests/motion.test.ts`.
- `scripts/check-doc-exports.mjs` is still a soft, informational audit
unless run with `--strict`; existing documentation coverage gaps remain
informational and are not expanded by this PR.

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>
Co-authored-by: Jonas Pfalzgraf <[email protected]>
JosunLP added a commit that referenced this pull request May 28, 2026
@JosunLP
Fix documentation examples and workflow notes to match implementation (…
013bec3
…#116)

## Summary

- Correct documentation examples and workflow/tooling notes so they
match the current bQuery APIs, SSR behavior, docs audit behavior, and
latest review feedback on guide wording.
- Readers and contributors can copy/paste the examples without type
errors and won’t be misled by inaccurate examples, cleanup guidance, or
workflow comments.

## Motivation

- This change is needed because review feedback on PR #116 identified
multiple documentation snippets and workflow notes that did not match
the current implementation, including follow-up fixes for SSR streaming
semantics, guide wording, and audit-script messaging.
- These fixes keep the docs aligned with the implementation so examples
remain copy/paste-safe and tooling output is easier to interpret.

## Changes included

- `docs/guide/ssr.md` — update the streaming &amp; caching section:
`flushBoundary()` takes no arguments, `createSSRCache({ ttlMs,
maxEntries, getKey })`, `createSSRMetrics()` is an imperative collector
with `snapshot()`, `createEdgeHandler(handler, options?)` wraps a
fetch-style handler; rewrite the example to combine `createSSRContext`,
`renderToResponse`, and `cache: { store, vary }`; replace the `{ key }`
pitfall with guidance on `cache.vary` + `createSSRCache({ getKey })`;
and clarify that `flushBoundary()` splits final output into chunks
rather than providing true progressive async streaming. Also update the
performance note to point readers to Suspense streaming for earlier
TTFB.
- `docs/workflows/streaming-ssr.md` — fix `flushBoundary()` usage, cache
option names (`ttlMs`/`maxEntries`), metrics description, server
pipeline (`createSSRContext({ request, metrics })` +
`renderToStream(template, data, { context })` for streaming;
`ctx.renderResponse` with `cache: { store, vary }` for response
caching), `_metrics` endpoint now reads `metrics.snapshot()`, edge
variant now wraps a fetch-style handler, and pitfalls reference
`cache.vary` / `createSSRCache({ getKey })` instead of a non-existent `{
key }` option. Also clarify that `renderToStream()` resolves the binding
context up front, use a real HTML comment in the template example, align
the workflow goal text with the actual metrics endpoint, and document
that flush boundaries control chunk boundaries rather than
time-to-first-byte.
- `docs/workflows/off-main-thread.md` — fix
`createReactiveTaskPool(handler, { concurrency, maxQueue })` signature,
drop `withTransferables`&#39; invalid second argument and the `{ html }`
wrapping, document the reactive signal mirrors (`pending$`, `size$`,
`state$`, `paused$`, `metrics$` with `{ completed, failed, avgRuntimeMs,
p95RuntimeMs }`), correct `createSharedBuffer(byteLength)` to take a
number, remove the `shared` field from the `HighlightInput` call site,
and update the summary bullets to reference numeric
`runOptions.priority` and `{ concurrency, maxQueue }`.
- `docs/index.md` — rewrite the “Two-minute example — server” snippet to
use `ctx.renderResponse(template, data)` with an awaited
`app.listen(...)`.
- `docs/concepts/rendering-modes.md` — rewrite the SSR example to use
`ctx.renderResponse(template, data)` with `await app.listen(...)`;
rewrite the Streaming SSR example to use a template string with
`flushBoundary()` markers passed to `ctx.renderStream(template, data)`;
drop references to non-existent `serveStatic` / `noHydrate` options in
the hydration section; and clarify that `renderToStream()` chunks the
final HTML stream while `renderToStreamSuspense()` + `defer()` handle
true progressive/out-of-order streaming.
- `docs/workflows/todo-spa.md` — fix the `bq-for` example so
toggle/remove handlers use `t.id` instead of `t.value.id`.
- `docs/cookbook/trace-signal.md` — enable devtools in the recipe before
calling `trackSignal()` so the example actually emits trace and timeline
entries.
- `scripts/check-doc-exports.mjs` — keep fenced code contents in the doc
corpus, correct the header comment so it no longer claims the default
mode is used in CI, and update the final status messaging so
informational/strict output accurately distinguishes a clean run from
coverage gaps and audit errors.
- `.github/workflows/docs-link-check.yml` — clarify the workflow comment
so it matches the actual informational `fail: false` behavior instead of
implying link failures are blocking.
- `docs/guide/server.md` — fix the streaming example so `ctx.stream()`
receives a `ReadableStream` and enqueues encoded byte chunks instead of
strings.
- `docs/workflows/index.md` — correct the SSR hydration workflow summary
to reference SSR plus runtime adapters instead of the
`@bquery/bquery/server` module.
- `docs/guide/store.md` — replace a non-existent `persist({ keys: [...]
})` helper reference with accurate persisted-store/plugin guidance.
- `docs/workflows/forms-validation.md` — update the sign-up workflow to
use the current forms API (`initialValue`, validator arrays,
`validationStrategy: &#39;onChange&#39;`, `handleSubmit()`, per-field
`error` signals, and `form.errors` signal reads) and reword locale-aware
validation guidance so translations come from calling `t()` at
validation time.
- `docs/cookbook/login-form.md` — update the login form recipe to use
the current forms API (`initialValue`, validator arrays, `minLength`,
`validationStrategy: &#39;onChange&#39;`, `handleSubmit()`, and field
`error` signals).
- `docs/guide/i18n.md` — clarify that `t()` is reactive inside view
bindings/effects because it reads the locale signal, while `tc()` is
useful when a reusable computed translation signal is needed.
- `docs/guide/view.md` — correct cleanup guidance to use
`View.destroy()` for `mount()` results, and fix testing guidance so
`mount()` is imported from `@bquery/bquery/view` while `screen`,
`within()`, `fireEvent.*`, and `tick()` come from
`@bquery/bquery/testing`.

## Validation

- [x] `bun run lint`
- [x] `bun run build`
- [ ] `bun test`
- [x] Additional focused checks (if applicable): `bun run
check:doc-exports`; `bun run docs:build`; final review via parallel
validation (Code Review clean, CodeQL clean/skipped on unchanged delta)

## Checklist

- [ ] I followed the contributing guidelines.
- [ ] I added or updated tests where behavior changed.
- [x] I updated documentation when public behavior or developer workflow
changed.
- [x] I confirmed the change does not introduce security-sensitive
regressions.

## Notes for reviewers

- The PR remains documentation/tooling focused; public runtime APIs are
unchanged.
- The latest follow-up fixes also correct guide wording around i18n
reactivity, view cleanup/testing imports, and SSR performance
expectations.
- `bun test` still has a pre-existing unrelated failure in
`tests/motion.test.ts`.
- `scripts/check-doc-exports.mjs` is still a soft, informational audit
unless run with `--strict`; existing documentation coverage gaps remain
informational and are not expanded by this PR.

---------

Co-authored-by: copilot-swe-agent[bot] <[email protected]>
Co-authored-by: JosunLP <[email protected]>
Co-authored-by: Jonas Pfalzgraf <[email protected]>
This was referenced Sep 17, 2026
feat(docs): custom VitePress theme and rebuilt landing page #208
Merged
release: 1.17.0 #245
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

Copilot code review Copilot
Copilot review effort
Applies to this pull request for everyone.Learn more about Copilot code review.
Copilot left review comments
@JosunLP JosunLP Awaiting requested review from JosunLP

Uh oh!

There was an error while loading. Please reload this page.

Assignees

@JosunLP JosunLP

Copilot code review Copilot

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

3 participants

@JosunLP
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.