extensions icon indicating copy to clipboard operation
extensions copied to clipboard

Add toki extension

Open medienbaecker opened this issue 2 months ago • 2 comments

Description

Toki is a simple, local-first time tracker for freelancers or anyone who needs to track hours. I recently contributed to the Tyme extension but over time realised I never actually opened the Tyme app and noticed how the AppleScript API slowed things down (a lot).

The extension also comes with a menubar extension that shows the currently tracking task:

CleanShot 2025-12-22 at 21 40 11@2x

Screencast

https://github.com/user-attachments/assets/c3631e25-8dfe-4218-a01a-886872d6caee

Checklist

medienbaecker avatar Dec 22 '25 20:12 medienbaecker

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 22 '25 20:12 raycastbot

Greptile Summary

New time tracking extension for local-first time management with projects and tasks. Includes main view, menu bar status, and AI tools. Well-structured with proper configuration, but has a critical type issue with manually-defined Preferences interface that violates Raycast conventions.

Issues Found:

  • Manual Preferences interface definition in db.ts violates custom rules and creates type mismatches with auto-generated raycast-env.d.ts
  • getPreferenceValues<Preferences>() call uses incorrect type parameter
  • Both issues must be fixed before merge to ensure runtime stability

Confidence Score: 2/5

  • This PR has critical type errors in the database layer that will cause runtime failures and must be fixed before merge.
  • Score is critically low due to a manual Preferences interface definition that violates custom rules and creates type mismatches with Raycast's auto-generated types. The getPreferenceValues() call uses an incorrect type parameter, which will fail at runtime when preferences are loaded. The extension logic itself is well-designed with proper UX patterns, good tool implementations, and correct configuration files, but the type issue is a blocker. Once the Preferences interface is removed and getPreferenceValues() is called without the type parameter, this should be safe to merge.
  • extensions/toki/src/db.ts - Remove manual Preferences interface and fix getPreferenceValues() call

Important Files Changed

Filename Overview
extensions/toki/src/db.ts Database layer with local JSON file storage. Contains manual Preferences interface definition that violates custom rules and will cause runtime type mismatches.
extensions/toki/package.json Well-configured with proper Prettier settings (printWidth: 120, singleQuote: false), three commands, and comprehensive AI tools with evals.
extensions/toki/src/toki.tsx Main view component properly manages groups, filtering, and sorting with good UX patterns and action ordering.
extensions/toki/src/menu-bar.tsx Menu bar extension cleanly displays tracking status and daily time summary with proper refresh logic.
extensions/toki/CHANGELOG.md Properly uses {PR_MERGE_DATE} placeholder and maintains correct version ordering as required by custom rules.
extensions/toki/.prettierrc Correctly configured with standard Raycast Prettier settings (printWidth: 120, singleQuote: false).

greptile-apps[bot] avatar Dec 22 '25 20:12 greptile-apps[bot]

Hi 👋

It feels a bit related to Raycast Store: Time Tracking by @EinLinuus - did you consider enhancing that one?

pernielsentikaer avatar Jan 12 '26 12:01 pernielsentikaer

Thanks, @pernielsentikaer. I did indeed not see the existing local time tracking extension. I don't think the concepts are compatible so I'll just keep the extension to myself :)

medienbaecker avatar Jan 12 '26 13:01 medienbaecker