Add tui-type extension
Description
A beautiful, customizable, (important-)feature-equivalent MonkeyType inspired experience.
Screencast
Checklist
- [x] I read the extension guidelines
- [x] I read the documentation about publishing
- [x] I ran
npm run buildand tested this distribution build in Raycast - [x] I checked that files in the
assetsfolder are used by the extension itself - [x] I checked that assets used by the
READMEare placed outside of themetadatafolder
Congratulations on your new Raycast extension! :rocket:
Due to our current reduced availability, the initial review may take up to 10-15 business days.
Once the PR is approved and merged, the extension will be available on our Store.
Greptile Summary
This PR adds a comprehensive typing test extension inspired by MonkeyType, featuring:
- Three game modes (time, words, quotes) with customizable durations/limits
- Multi-language support via MonkeyType data source
- Two render modes (SVG and Terminal/Markdown) with extensive appearance customization
- Punctuation and numbers toggles for increased difficulty
- Results tracking with WPM, accuracy, and performance rankings
- Persistent settings using zustand and local cache
Key Issues Found:
-
Critical: Dropdown validation bug in
game-mode.tsxthat causes "value does not match any items" errors when switching between modes (e.g., switching from words mode with limit=10 to time mode where valid values are 15, 30, 60, 120) -
todo.mdfile should be removed before publishing as it contains internal development notes - Potential capitalization bug in
applyPunctuation()that may capitalize words even when punctuation is disabled
The extension demonstrates solid architecture with clean separation of concerns, proper state management, and good error handling. The core typing logic and rendering system are well-implemented.
Confidence Score: 2/5
- This PR has critical bugs that will cause runtime errors for users
- The dropdown validation bug is a critical issue that will definitely occur when users switch between game modes with incompatible cached limit values, causing form errors and poor UX. The author's own todo.md acknowledges this bug. The extension cannot be safely merged until this is fixed.
- Pay close attention to
extensions/tui-type/src/components/settings/game-mode.tsx- the dropdown validation bug must be fixed before merging. Also removeextensions/tui-type/todo.mdbefore publishing.
Important Files Changed
| Filename | Overview |
|---|---|
| extensions/tui-type/package.json | well-configured extension manifest with proper dependencies and metadata |
| extensions/tui-type/CHANGELOG.md | properly formatted with correct placeholder and comprehensive feature list |
| extensions/tui-type/src/components/settings/game-mode.tsx | dropdown validation bug causes errors when switching modes with incompatible cached limit values |
| extensions/tui-type/src/utils/test-utils.ts | potential capitalization bug in applyPunctuation function, needs clarification |
| extensions/tui-type/todo.md | development notes file should be removed before publishing |
This pull request has been automatically marked as stale because it did not have any recent activity.
It will be closed if no further activity occurs in the next 7 days to keep our backlog clean 😊
Thanks for your contribution @MrDoekje 🔥
In this case, Raycast’s core features already provide comparable value for Typing Practice. We try to avoid duplicate functionality in the Store when it can be achieved directly with built‑in features.
If there are unique workflows or capabilities you’re aiming to add that go beyond what the core app can do today, we’d love to hear more so we can see whether:
- They can be expressed using the existing native features, or
- They warrant being added as part of a dedicated extension.
This helps avoid duplication and keeps related functionality consolidated in one place. As mentioned in our extension guidelines here ↗
This pull request has been automatically marked as stale because it did not have any recent activity.
It will be closed if no further activity occurs in the next 7 days to keep our backlog clean 😊