feat(color-picker): add color-picker extension - #404
manuelcontrera wants to merge 3 commits into
Conversation
|
Thanks for contributing an extension to Vicinae! 👋 Before publication, this pull request receives two reviews:
✅ Ready for human review. The automated reviewer approved the latest commit and a maintainer has been notified. No blocking findings remain on the latest commit. The automated reviewer examines only the current commit. New commits invalidate its previous decision and start another review. |
clankus-aurelius
left a comment
There was a problem hiding this comment.
The extension has two publication-blocking behavior mismatches and uses evictable storage for user-managed color history.
Automated review found 2 publication-blocking issues.
This is an AI-generated first pass and may be mistaken. If a finding is unclear or incorrect, reply in the relevant thread and mention @aurelleb.
| if (platform === "darwin") { | ||
| const candidate = candidateDirs | ||
| .map((dir) => path.join(dir, "picker-mac")) | ||
| .find((p) => existsSync(p)); | ||
|
|
||
| binaryPath = candidate || "picker-mac"; | ||
| } else if (platform === "win32") { | ||
| const candidate = candidateDirs | ||
| .map((dir) => path.join(dir, "picker-win.exe")) | ||
| .find((p) => existsSync(p)); | ||
|
|
||
| binaryPath = candidate || "picker-win.exe"; |
There was a problem hiding this comment.
🔴 Blocking — macOS and Windows pickers are not included
Rule: CORRECTNESS-001
The supplied assets contain only picker-linux.py. On macOS and Windows this code therefore falls back to executing undocumented PATH commands (picker-mac or picker-win.exe), so the advertised picker fails on ordinary installations.
Suggested resolution: Package and resolve the claimed native picker binaries, or remove macOS and Windows support claims and report those platforms as unsupported.
| "default": "hex", | ||
| "required": false, | ||
| "data": [ | ||
| { | ||
| "title": "HEX - #FF6363", |
There was a problem hiding this comment.
🔴 Blocking — Color Wheel command is not an interactive color wheel
Rule: MANIFEST-001
The command is presented as an interactive wheel, but its implementation only displays a static image and immediately launches the same desktop screen picker used elsewhere. The image itself cannot select a color.
Suggested resolution: Implement interaction with the displayed wheel, or rename and describe the command as another screen-picker entry point.
| const MAX_HISTORY_LENGTH = 200; | ||
| const cache = new Cache(); |
There was a problem hiding this comment.
🟠 Warning — Color history and favorites can be evicted
Rule: CORRECTNESS-001
All user-managed history, titles, and favorites are stored in Cache. The authoritative Vicinae documentation states that cache entries may be evicted at any time, while LocalStorage persists for the extension's lifetime.
Suggested resolution: Store the serialized history in LocalStorage and update the history hook asynchronously so user-organized data remains persistent.
…lor-wheel and storage
clankus-aurelius
left a comment
There was a problem hiding this comment.
The prior blocking findings are resolved. One newly introduced documentation mismatch remains.
Automated extension review passed. A maintainer review is still required.
This is an AI-generated first pass and may be mistaken. If a finding is unclear or incorrect, reply in the relevant thread and mention @aurelleb.
| --- | ||
|
|
||
| ## Screen Picker Architecture | ||
|
|
There was a problem hiding this comment.
🟠 Warning — Documented native picker fallbacks are not implemented
Rule: MANIFEST-001
The README claims fallbacks through hyprpicker, grim/slurp, xcolor, gpick, and import, but the supplied picker only attempts GNOME Shell and XDG Desktop Portal D-Bus APIs and never invokes those tools.
Suggested resolution: Remove the fallback-tool claim or implement the documented fallback paths.
| - **Linux**: Uses D-Bus color picking through `org.freedesktop.portal.Screenshot.PickColor` and `org.gnome.Shell.Screenshot.PickColor`. |
|
@aurelleb automated review passed for |
clankus-aurelius
left a comment
There was a problem hiding this comment.
The previous documentation mismatch is resolved by the updated Linux picker description. No actionable issues were introduced by the incremental change.
Automated extension review passed. A maintainer review is still required.
This is an AI-generated first pass and may be mistaken. If a finding is unclear or incorrect, reply in the relevant thread and mention @aurelleb.
Summary
Adds the Color Picker extension adapted for Vicinae, supporting Linux, macOS, and Windows.
This extension brings a full suite of color manipulation, inspection, organization, and desktop color-picking tools directly into Vicinae.
Features
pick-color): Pick any color on your desktop with a magnifier/crosshair.hyprpicker,grim+slurp, XDG Desktop Portal ColorPicker) and X11 (xcolor,gpick,import).organize-colors): View and manage your color history.favorite-colors): Quick access to pinned / starred colors.convert-color): Real-time conversion across all major color notations.color-names): Search and discover colors by human-readable names.color-wheel): Visual interactive color explorer.Implementation Notes
picker-linux.pyensuring fallback support across Wayland compositors (Hyprland, Sway, GNOME, KDE) and X11 sessions.@vicinae/api^0.20.15. Passesvici lintandvici build.