* test: add vitest-fail-on-console and improve test stability
- Integrate `vitest-fail-on-console` plugin to ensure console logs cause test failures
- Use `act` to wrap asynchronous updates in test interactions
- Add `happy-dom` for improved test environment compatibility
- Update test descriptions to remove async usage where unnecessary
* feat: enhance button accessibility and update tsconfig with testing types
- Add 'type="button"' to improve button element accessibility in test files
- Include 'vitest/globals' and '@testing-library/jest-dom' types in tsconfig for better testing support
* Create grumpy-ways-look.md
---------
Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
* Fix type error in Edge component by using const assertion
Add 'as const' to the return value of `getHandleCoordsByPosition` to ensure
it is typed as a readonly tuple `[number, number]` rather than a mutable
array `number[]`, which was causing TypeScript to infer the elements as
potentially undefined when destructured in the Animated component.
Signed-off-by: Sora Morimoto <sora@morimoto.io>
* Create odd-knives-relax.md
---------
Signed-off-by: Sora Morimoto <sora@morimoto.io>
Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
* Fix type error in `InlineCitationCardTrigger` by checking `sources[0]` directly
Change the condition from `sources.length` to `sources[0]` to ensure
TypeScript recognises that `sources[0]` is defined when passed to the URL
constructor. This resolves the `string | undefined` is not assignable to
`string | URL` type error.
Signed-off-by: Sora Morimoto <sora@morimoto.io>
* Create proud-rocks-study.md
---------
Signed-off-by: Sora Morimoto <sora@morimoto.io>
Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
* Use optional chaining for speech recognition result access
Prevent potential undefined access when retrieving the first alternative
from speech recognition results. The `SpeechRecognitionResult` index
access may return `undefined`, so use optional chaining to safely handle
this case.
Signed-off-by: Sora Morimoto <sora@morimoto.io>
* Use nullish coalescing operator to provide a default empty string
Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
* Create sharp-numbers-think.md
---------
Signed-off-by: Sora Morimoto <sora@morimoto.io>
Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
Co-authored-by: Hayden Bleasel <hello@haydenbleasel.com>
* feat(hook): add useTaskQueue context and hook for unified task and message queue management
* feat: add reusable TaskQueuePanel component for queue and todo management
* chore (example): add TaskQueuePanel usage example with shared task queue context
* Feat (example): add TaskQueuePanel to example workflow page
* chore: add sample todo and message data to task queue
* fix: prevent double-seeding of demo tasks in React Strict Mode with useRef guard
Exclude "onError" from HTMLAttributes<HTMLFormElement> to prevent conflict
with the custom onError callback that provides specific file upload error
codes ("max_files", "max_file_size", "accept").
Add composition event handlers to PromptInputTextarea to prevent
premature form submission when users press Enter to confirm IME input
(e.g., Japanese, Chinese, Korean). The component now tracks composition
state explicitly using onCompositionStart and onCompositionEnd events,
in addition to checking the native isComposing property.
This fixes an issue where Japanese users typing with an IME would
accidentally submit the form when pressing Enter to convert kanji,
instead of just confirming the conversion.
Signed-off-by: Sora Morimoto <sora@morimoto.io>