Skip to content

Conversation

@RemarkRemedy
Copy link

@RemarkRemedy RemarkRemedy commented Jan 29, 2026

Description

Control macOS Color Filters directly from Raycast. This extension allows users to quickly toggle color filters on/off and switch between all 5 macOS filter types without opening System Settings.

Features:

  • Toggle Color Filters on/off with a single command
  • Switch between filter types: Grayscale, Protanopia, Deuteranopia, Tritanopia, Color Tint
  • Visual filter selector showing current active filter with descriptions
  • Fast performance: keeps System Settings in background for ~200ms execution (vs ~1400ms with cold starts)
  • Clean UX: automatically hides System Settings window after actions

Use Cases:

  • Reduce eye strain - Enable grayscale in the evening
  • Focus mode - Grayscale helps reduce visual distractions
  • Accessibility - Quickly switch filters for color vision deficiencies
  • Screen time management - Make your screen less appealing

Technical Implementation:

  • Uses AppleScript UI automation via System Settings
  • Optimized to keep System Settings running in background between calls for fast performance
  • Requires Accessibility permissions for Raycast (user prompted on first use)
  • Tested on: macOS Sequoia 15.2 (Build 26.2)

Important Notes:

  • ⚠️ UI element paths are specific to macOS Sequoia 15.2 System Settings layout
  • If Apple changes System Settings UI in future macOS versions, the extension may require updates
  • Comprehensive maintenance instructions included in MAINTENANCE.md for future updates
  • Source code includes inline comments with recovery instructions for future AI tools/maintainers

Commands:

  • Toggle Color Filters
  • Select Color Filter (interactive list view)
  • Set Grayscale Filter
  • Set Protanopia Filter
  • Set Deuteranopia Filter
  • Set Tritanopia Filter
  • Set Color Tint Filter
  • Disable Color Filters

Screencast

Searching for Toggle Command

screenshot-1-toggle

All Available Commands

screenshot-2-commands

Interactive Filter Selection View

screenshot-3-selection

Clean Result

screenshot-4-result

Checklist

- Optimize performance and add comprehensive documentation
- Initial commit: Raycast color filters extension
@raycastbot raycastbot added the new extension Label for PRs with new extensions label Jan 29, 2026
@raycastbot
Copy link
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, 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.

@RemarkRemedy
Copy link
Author

screenshot-1-toggle screenshot-2-commands screenshot-3-selection screenshot-4-result

@RemarkRemedy RemarkRemedy marked this pull request as ready for review January 29, 2026 05:59
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 29, 2026

Greptile Overview

Greptile Summary

Adds a new Color Filters extension that enables users to control macOS Color Filters directly from Raycast using AppleScript UI automation. The extension provides 8 commands for toggling and switching between 5 filter types (Grayscale, Protanopia, Deuteranopia, Tritanopia, Color Tint).

Key Changes:

  • Core implementation uses AppleScript to automate System Settings, keeping it in background for fast performance
  • Interactive list view (select-color-filter) shows current active filter with descriptions
  • Well-structured codebase with proper error handling and user feedback

Issues Found:

  • CHANGELOG.md uses hardcoded date instead of {PR_MERGE_DATE} placeholder (required for automated release process)
  • Missing required metadata/ folder with Raycast-styled screenshots for the view-type command
  • Hardcoded personal file paths (/Users/tj/...) in README.md and source code comments that won't exist for other users
  • The intensity preference in package.json is defined but never used in the code

Confidence Score: 3/5

  • This PR requires fixes before merge - missing required metadata screenshots and has incorrect changelog format
  • Score reflects blocking issues: missing metadata folder (required for view commands) and incorrect changelog placeholder. Hardcoded personal paths need cleanup but don't affect functionality.
  • Pay close attention to CHANGELOG.md (changelog format), README.md and src/color-filters.ts (personal paths), and ensure metadata/ folder is added

Important Files Changed

Filename Overview
extensions/color-filters/package.json Added package.json with proper Raycast extension configuration, all commands, and preferences
extensions/color-filters/CHANGELOG.md Initial release changelog entry with hardcoded date instead of placeholder
extensions/color-filters/src/color-filters.ts Core logic for controlling macOS color filters via AppleScript UI automation; contains hardcoded file paths
extensions/color-filters/README.md Documentation with hardcoded personal file paths in maintenance instructions

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

4 files reviewed, 4 comments

Edit Code Review Agent Settings | Greptile

@@ -0,0 +1,24 @@
# Changelog

## [Initial Release] - 2026-01-29
Copy link
Contributor

Choose a reason for hiding this comment

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

Use {PR_MERGE_DATE} placeholder instead of hardcoded date

Suggested change
## [Initial Release] - 2026-01-29
## [Initial Release] - {PR_MERGE_DATE}

Context Used: Rule from dashboard - What: Changelog entries must use {PR_MERGE_DATE} placeholder in titles, be placed at the top of th... (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Comment on lines +64 to +65
- `/Users/tj/TJDevelopment/color-filters-raycast/src/color-filters.ts` (lines 35-36)
- `/Users/tj/.local/bin/color-filter` (lines 8-9)
Copy link
Contributor

Choose a reason for hiding this comment

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

Remove hardcoded personal file paths from documentation - these paths (/Users/tj/...) won't exist for other users/maintainers

// 2. Run: osascript -e 'tell application "System Events" to tell process "System Settings" to get entire contents of window 1'
// 3. Search the output for "Color Filters" checkbox and popup button
// 4. Update the paths below with the new hierarchy
// Also update: /Users/tj/.local/bin/color-filter (lines 8-9)
Copy link
Contributor

Choose a reason for hiding this comment

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

Remove reference to personal file path (/Users/tj/.local/bin/color-filter) - this won't exist for other users/maintainers

Comment on lines +53 to +58
{
"name": "select-color-filter",
"title": "Select Color Filter",
"description": "Choose a color filter from a list",
"mode": "view"
}
Copy link
Contributor

Choose a reason for hiding this comment

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

Missing required metadata/ folder with Raycast-styled screenshots. The select-color-filter command is a view-type command, which requires professional metadata screenshots for the Raycast store. See: https://developers.raycast.com/basics/prepare-an-extension-for-store#screenshots

Context Used: Rule from dashboard - What: Extensions with view-type commands must include a metadata/ folder containing Raycast-styled... (source)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants