extensions icon indicating copy to clipboard operation
extensions copied to clipboard

Add tui-type extension

Open MrDoekje opened this issue 2 months ago • 2 comments

Description

A beautiful, customizable, (important-)feature-equivalent MonkeyType inspired experience.

Screencast

tui-type-1-1 tui-type-6-1

Checklist

MrDoekje avatar Dec 19 '25 10:12 MrDoekje

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.

raycastbot avatar Dec 19 '25 10:12 raycastbot

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.tsx that 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.md file 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 remove extensions/tui-type/todo.md before 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

greptile-apps[bot] avatar Dec 19 '25 11:12 greptile-apps[bot]

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 😊

raycastbot avatar Jan 07 '26 18:01 raycastbot

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 ↗

0xdhrv avatar Jan 21 '26 09:01 0xdhrv

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 😊

raycastbot avatar Feb 04 '26 09:02 raycastbot