[ext/create-link] Copying Links in a Custom User-Defined Format#1
[ext/create-link] Copying Links in a Custom User-Defined Format#1sinsky merged 5 commits intoext/create-linkfrom
Conversation
…copying functionality to enhance user experience with dynamic link creation
…ine custom format structure and improve type safety
…ble links from the current URL for enhanced user flexibility
…stomTemplate for better clarity and consistency in naming
…opyCustomFormatPreferences for clarity and consistency
There was a problem hiding this comment.
Hello @sinsky, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
Summary of Changes
This pull request introduces a new command, "Copy Link as Custom", which allows users to copy the active browser tab's URL and title to the clipboard using a user-defined format. The format can include placeholders like {url}, {title}, {id}, and {favicon} for customization. The changes include modifications to package.json to add the new command and its preferences, and the creation of a new file, src/copy-custom.ts, which contains the logic for retrieving the active tab's information, applying the custom format, and copying the result to the clipboard.
Highlights
- New Feature: Introduces a 'Copy Link as Custom' command to copy links in a user-defined format.
- Customizable Format: Allows users to define the link format with placeholders for URL, title, ID, and favicon.
- Preferences: Adds a text field preference for users to input their desired custom link format.
Changelog
- extensions/create-link/package.json
- Added a new command 'copy-custom' with title 'Copy Link as Custom'.
- Added preferences for the 'copy-custom' command, including a 'customFormat' text field for defining the link format with placeholders.
- The new command allows users to customize the link format to suit their needs.
- extensions/create-link/src/copy-custom.ts
- Created a new file to handle the logic for the 'Copy Link as Custom' command.
- The file includes functions to sanitize the URL, apply the custom template, and copy the formatted link to the clipboard.
- It retrieves the active tab's URL, title, ID, and favicon, and replaces the corresponding placeholders in the custom format string.
- It also checks if the browser extension is installed and if an active tab is found before proceeding.
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Did you know?
The first web browser, WorldWideWeb (later renamed Nexus), was created by Tim Berners-Lee in 1990. It was both a browser and an editor, allowing users to view as well as create web pages.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
There was a problem hiding this comment.
Code Review
This pull request introduces a useful feature for customizing link formats. The code is generally well-structured and readable. However, there are a few areas where improvements can be made to enhance robustness and maintainability.
Summary of Findings
- URL Sanitization: The
sanitizeUrlfunction could be improved to handle more edge cases and potentially malicious URLs. Consider using a more robust URL parsing and validation library. - Error Handling: The error handling in
getActiveTabandisExtensionInstalledcould be more informative. Logging the errors or providing more context in the HUD messages would be beneficial.
Merge Readiness
The pull request is almost ready for merging. Addressing the comments regarding URL sanitization and error handling would improve the overall quality of the code. I am unable to approve the pull request, and users should have others review and approve this code before merging.
* Update hacker-news-top-stories extension - Merge pull request #1 from KevinBatdorf/add-mark-all-read-option - Add mark all as read button - Merge branch \'contributions/merge-1745254535997\' - Pull contributions - merge upstream - update packages - initial commit * Update CHANGELOG.md and optimise images --------- Co-authored-by: raycastbot <bot@raycast.com>
* Removed status from commands in README.md * Fixed small issue in README.md * Update sportssync extension - Fixed api structure naming issue - Removed extra api structure in getTransactions.ts - Renamed variable in getDateRange.ts - Updated changelog.md - Deleted extra f1 file. Fixed issue causing dropdown saving to interfere between commands * Update sportssync extension - Removed none option in the preferences settings - Fixed api structure naming issue - Removed extra api structure in getTransactions.ts - Renamed variable in getDateRange.ts - Updated changelog.md - Deleted extra f1 file. Fixed issue causing dropdown saving to interfere between commands - Fixed small issue in README.md - Removed old screenshots - Removed status from commands in README.md - Updated README.md - Removed extra util file - Fixed README Conflict - Fixed other merge issues - Fixed merge issues - Fixed package.json merges - Merge branch \'contributions/merge-1743277393899\' - Pull contributions - Merge pull request raycast#4 from daniyalmaster693/main - Fixed extra errors and removed live scores screenshot - Fixed small errors - Fixed final favorite team issues - Fixed standings position issues - Fixed soccer standings not displaying issue. Fixed playoff position sorting issues - Updated live score titles to be updated based on the sport - Added f1 support to live scores menubar command - Removed parseTeamData error - Added remaining teams to configs - Fixed college basketball and soccer schedule issues - Fixed grammar mistake in README.md - Fixed README Screenshot - Deleted f1 screenshot - Renamed screenshots. Added live scores screenshot - Fixed image in README.md - Fixed football tracker search placeholders - Added new metadata images. Fixed basketball tracker search bar placeholders - Updated README file. Updated extension categories and description - Added current implemented features for the next update to CHANGELOG.md - Updated Sportssync Roadmap - Added away team icons to the menu bar extra items - Added live scores command - Merge pull request raycast#3 from daniyalmaster693/ext/sportssync - Removed f1 constructor util file - Finalized f1 related stuff - Made f1 standings modular and implemented f1 related configuration to the standings template - Made the f1 races and schedule command modular. Added additional f1 race logic to scores and schedule template. Added race logos for f1 races as icons to the scores and schedule template. - Made all commands now use a modular code setup - Fixed issues from duplicate empty view implementations - Updated search bar placeholders - Replaced the old sportssync icon. Added a new smaller empty view icon. Added an empty view to every command and view when data or arrays are empty - Added loading details to templates and favorite team views - Updated favorite team command to be dynamic to support all leagues - Added college basketball scores to basketball scores and schedule command - Added nfl and mlb teams to package.json - Fixed bug causing issues with dropdown saving in favorite team dashboard - Renamed favorites command to favorite team dashboard - Added the favorite team command and view - Implemented tracker and news systems in a nhl, mlb, soccer and f1 commands - Updated all standings commands to use new code setup except f1 standings - Changed sports and schedule commands to use the new code setup. F1 and College Basketball have not been changed - Added new template and util files from sportssync development - Fixed a few small issues in the code - Merge pull request raycast#2 from daniyalmaster693/ext/sportssync - Test Commit - Fixed CHANGELOG.MD - Merge branch \'main\' of https://github.com/daniyalmaster693/sportssync - Implemented additional feedback suggested by the bot - Re added starting soon indicator - Added additional fallback logic to the standings stats - Removed the extra view entire standings link from the standings commands - Removed starting soon indicator - Updated README.md - Updated README.md - Updated CHANGELOG.md - Removed the extra f1 schedule files. Created a new starting soon indicator that displays a yellow hazard icon and the accessory title in yellow. Also displays a starting soon tooltip. Added a schedule tooltip to the scheduled games. - Removed an extra use state import statement in the soccer and mlb news commands - Updated changelog with new changes - Updated the f1 results and schedule command to now show the schedule for the entire year. Added an indicator to show the race number for the season. Changed the name to now show extra detail. Included a subtitle with the city and country of the race. Added additional indicator icons for different states - Updated the mlb scores and schedule command to show the detail instead of display clock. Added icons for different game states. - Added a new action to view the entire standings in the browser. Fixed an issue causing the mlb standings stats to be incorrect. Added additional indicators to show the current playoff position or league position of each team - Added new type indicators that display using tags to the news commands - Updated CHANGELOG - Fixed MLB standings - Pull contributions - Created a new util folder with a getDateRange file. Implemented the past scores feature, and future games feature. Changed the NHL Standings command to show information using divisions instead of conferences. - Updated changelog. Renamed F1 Command - Updated changelog - Removed screenshots. Updated changelog - Pull contributions - Removed screenshots from the readme file - Updated nhl standings stats, to include points, and fix issue with the record - Update README.md - Implemented additional feedback suggested by the bot - Re added starting soon indicator - Added additional fallback logic to the standings stats - Removed the extra view entire standings link from the standings commands - Removed starting soon indicator - Updated README.md - Updated README.md - Updated CHANGELOG.md - Removed the extra f1 schedule files. Created a new starting soon indicator that displays a yellow hazard icon and the accessory title in yellow. Also displays a starting soon tooltip. Added a schedule tooltip to the scheduled games. - Removed an extra use state import statement in the soccer and mlb news commands - Updated changelog with new changes - Updated the f1 results and schedule command to now show the schedule for the entire year. Added an indicator to show the race number for the season. Changed the name to now show extra detail. Included a subtitle with the city and country of the race. Added additional indicator icons for different states - Updated the mlb scores and schedule command to show the detail instead of display clock. Added icons for different game states. - Added a new action to view the entire standings in the browser. Fixed an issue causing the mlb standings stats to be incorrect. Added additional indicators to show the current playoff position or league position of each team - Added new type indicators that display using tags to the news commands - Updated CHANGELOG - Fixed MLB standings - Merge branch \'contributions/merge-1739918385494\' - Pull contributions - Created a new util folder with a getDateRange file. Implemented the past scores feature, and future games feature. Changed the NHL Standings command to show information using divisions instead of conferences. - Updated changelog. Renamed F1 Command - Updated changelog - Removed screenshots. Updated changelog - Merge branch \'contributions/merge-1739484055725\' - Pull contributions - Pull contributions - Removed screenshots from the readme file - Updated nhl standings stats, to include points, and fix issue with the record - Merge branch \'ext/sportssync\' - Added support the champions leagues (UEFA) to the soccer schedule and standings commands - Merge branch \'contributions/merge-1739470645657\' into ext/sportssync - Pull contributions - Merge pull request #1 from daniyalmaster693/ext/sportssync - Renamed the f1 races command. Updated all the scores and schedule commands to have new link logic to avoid errors. Also added additional naming logic to the nhl command to support 4 nations - Update README.md - Updated files with new loading attributes - Set college extensions to disabled by default - Added points stat to the nhl standings command - Added a line in package.json to disable the college basketball commands by default. - Updated README.md - Updated list items to include the isLoading attribute - Updated README.md - Improved grammar in readme - Removed extra sportssync screenshot. Created the README file for the repo - Renamed files to follow appropriate order - Moved sportssync screenshots to a metadata folder - Uploaded screenshots to assets folder - Updated package.json - Removed live scores.tsx - Merge branch \'contributions/merge-1737217446402\' - Pull contributions - Merge branch \'contributions/merge-1737217431562\' - Pull contributions - Merge branch \'contributions/merge-1737217409345\' - Pull contributions - Pull contributions - Updated WNBA Western Conference Title - Fixed errors - Removed the live scores menu bar command - Fixed issues on standings commands - Fixed all issues in the scores and schedule commands - Resolved issues for news commands - Added an interface to the basketball news command - Removed extra changelog file - Initial commit * Removed additional interface in live scores * Update CHANGELOG.md and optimise images --------- Co-authored-by: raycastbot <bot@raycast.com>
* Update anytype extension - Merge branch \'contributions/merge-1743195618322\' - Pull contributions - Update assets - Reduce amount of ai example prompts - Update changelog - Refactor markdown export from api - Add description field to space model and display in SpaceListItem - Enhance space creation functionality with description field and improved form handling - Disable member management - Rename type_key to key in type model - Fix type-check - Refactor list views into separate endpoint and - Refactor ObjectActions and ObjectDetail components to use typeIsList for layout checks - Rename uniqueKey to typeKey state variables - Fetch type keys for lists in CreateObjectForm and restrict their body - Refactor fetch functions for page, task, and list types - Fix showing objects of custom list type in correct search category - npm update - Fix type views in search and refactor pagination mapping in browse - Remove root_id from object model - Refactor views, storage, labels and removal of pinned items on 404 or 410 - Add confirmation interception for member approval, rejection, removal, and role updates - Update space model and remove chat deeplink - Introduce IconFormat enum and use ObjectIcon instead of string for object creation - Rename \'unique_key\' to \'type_key\' across models and tools - Enhance global and space search sorting by adding support for sorting by name and updating related properties handling - Refactor search sorting options to use property instead of timestamp and add support for sorting by name - Harden AI eval expectations - Prefer type unique_key over id - Add ai evals for members, lists and object - Update AI eval inputs and mocks - Include object type name, id, and unique_key in ai tool responses - Refactor member roles from Reader/Writer to Viewer/Editor across components and tools - Enhance emoji validation in markdown heading injection for sequence of emojis - Move object and type helpers into utils - Make space and properties backward compatible - Add AI Enhancements & Improvements to CHANGELOG - Fix non uniqueness of keys in search-anytype - Make structured type and icon backward compatible - Rename relations to properties everywhere - Inject clickable type in detail sidebar - Inject emoji into markdown headings - Add missing block optimization in mapObjects - Update API version constants and handling in token validation - Make member prop optional in ObjectActions and ObjectListItem - Refactor pin action order SpaceActions - Add member actions to approve, reject, change role or remove from space - Add ai tools for member management: approve, decline, remove, and update roles - Implement updateMember API including role and status - Adjust member role formatting - Remove svgo config - Fix darkmode icons for dataview dropdown in lists - Update dataview model and navigation title in lists - Refactor icon tint color handling to use defaultTintColor across components - Add dataview support to list objects - Fix dropdown tooltip in search-anytype - Refactor property sorting in ObjectDetail - Add get-list-items and remove-from-list ai tools - Invert model naming to Raw prefix before processing - Implement object retrieval and markdown export in get-object ai tool - Add ExportFormat enum and update export functions to use it - Fix icon fetching for members - Fix return null in ObjectDetail - Centralize icon mapping through Image.ImageLike - Refactor icon handling to raycast api icon tinting - Fix navigation title in browse spaces for nested components - Refactor ai tools to fetch until exhaustion - Refactor icon format and simplify mapping - npm update - Refactor object model to replace \'details\' with \'properties\' and update related processing logic - Clarify list type handling in ai tools - Add spaceName to navigation title when browsing spaces - Simplify mutate props in search component - Add missing accessory for pinned types - Consolidate imports through index.ts - Refactor API endpoint constants - Refactor schemas into data models - Fix lint-staged - Move helpers to utils - Rename helper files - Implement centralized error handling for API responses - Move pre-push to husky - Reenable lint-staged for type-checking - Map tag colors to hex values for matching color palette - Merge branch \'icon-refactoring\' - Add new relation icons and extend custom relation rendering in sidebar - Move type icons - Merge pull request raycast#3 from anyproto/icon-refactoring - Optimize svg files - Add number and task icon and simplify svg icon loading - Fix member fallback icon to PersonCircle - Use custom icons for members and search dropdown - Fetch and set custom icons for dropdown in ObjectList - Fall back to grey icon of the object\'s type - Refactor schemas to use Display types and update icon handling logic - Add new type icons to assets - Handle unknown detail types gracefully with a warning instead of error - Fix passing only single empty view - Update descriptions for tools in package.json - Render object references in detail sidebar as clickable tags - Add \'start-challenge\' and \'solve-challenge\' ai tools for pairing process - Add \'add-to-list\' tool and AI evals - Update deps - Merge pull request raycast#2 from anyproto/dependabot/npm_and_yarn/multi-7a74732aac - Bump esbuild and @raycast/api - Add get-members ai tool - Undo org only access - Undo anytype-beta rename on main - Return pagination metadata alongside data in ai tool calls - Return pagination metadata alongside data in ai tool calls - Add AI evals - Update create-object doc to clarify bookmark requirements - Add support for specifying object types in search tools - Add search for single spaces and enhance doc comments - Add AI tool functions - Let 404 errors propagate through ErrorWithStatus - Fix space id shadowing for pinned items - Remove members view from search dropdown - Pass template id value to api create object request - Add template selection to CreateObjectForm - Add list search functionality to CreateObjectForm collection dropdown - Refactor comments, params and type helper - Rename validateToken func - Refactor preference value retrieval for sorting object mapping - Add API version validation and include headers in apiFetch response - Switch lint fix pre-commit - Rename `Copy Object` to `Copy Markdown` and `Details` to `Sidebar` - Fix \'View Templates\' action for non-type list - Make DetailData properties optional - Show "No Tag" for select/multi-select relations without tag value - Fix incorrect separator insertion for non rendered details - Implement prioritized sorting and grouping for object detail metadata - Treat all metadata uniformly in object details - Make showDetails and onToggleDetails optional in ObjectActions component - Add toggle functionality for showing details in object details - Support dynamic relation rendering in object detail sidebar - Decompose and expand Detail schema - Fix subtitle pluralization in search - Adjust object detail schema to changed api format and value keys - Enable type filter logic for objects in global search - Adjust schemas to changed api data models - Add useEffect hooks to set selected space and type from EmptyViewObject - Pass enableDrafts prop conditionally as drafts are not support in nested forms - Add navigation titles to CreateObjectForm and CreateSpaceForm - Remove useEffect hooks for selected space and type to avoid twitching - Add throttle prop to CollectionList, ObjectList, and TemplateList components - Refactor CreateObjectForm to use unique keys for object types - Refactor object creation logic and introduce separate hook for required data - Refactor primary object actions and fix context labels - Add preference for primary object action - Add context actions in empty view for object and space creation - Disable lint-staged temporarily - Fix accessories text and pin star for members - Show object list for collections - Refactor components to include layout in preparation for collections - Switch pre-commit to husky and lint-staged - Add pre-push hook for gitleaks - Add pre-commit hook for linting and type-checking - Rename bookmark source to url - Fix list launch context in object create form - Add option to add created object to a collection - Add execute condition missing spaceId dependency in useSearch - Refactor api endpoint constants - GO-5100: Throw error for multiple markdown files in export folder - Use object processing in search but inject space icon into accessories - Refactor object processing and remove pin option for template view - Update search bar placeholder to include objects - Fix broken type search - Refactor icon mask logic into unified helper - List objects under templates for type - Fix template browsing - Remove debug log - Unify local storage key constants for pinned items in lists - Fix ordering bug of pinned spaces - Support dynamic accessories for space list items - Introduce getSpace API and section rendering for browsing spaces - Add pinning action for spaces - Fix lint and toast messages - Refactor local storage key constants - Move local storage - Make title and contextLabel optional in removePinnedObject - Improve toasts for item pinning - Enhance object actions and details with global search and pinned state support - Add getMember API function and refactor related components - Refactor pinning and rendering for browse spaces - Refactor pinned objects handling to allow it per-space - Extend CI workflow with build and type-check action - Update Node.js from 18 to 22 - Add CI workflow for lint - Implement move up and down functionality for pinned objects and refactor local storage helper - Add space icon fallback in search for smoother rendering - Merge pull request #1 from anyproto/pinned-objects-in-search - Update pinned objects filtering to accommodate upcoming API change - Add missing package - Polish section rendering and fix list twitching - Refactor pinning logic and enforce max pinned objects limit - Disable type filtering temporarily, waiting for api change - Filter pinned objects by search term - Remove deleted objects from pinned section - Support passing multiple mutation functions to refresh multiple sections - Add ability to pin objects in global search - Use map for space id to icon lookup - Fetch all types for space in create object due to missing pagination - Simplify search results title to use short date label - Enhance handling of epoch date in object accessories - Organize imports * Fixes after merge * Update anytype extension - Revert icon change - Fix broken fill and color for some svgs - Add search placeholders in dropdowns when creating object - Refactor hooks to ensure \'execute\' condition for all params - Move api functions into respective subdirs - Fix icon source for new logo - Fix pluralization logic in object list and search component - Update logo - Distinguish Object from ObjectWithBlocks - Add API version header to fetch requests * Fixes after merge * npm update * Update anytype extension - Fix fallback to layout when file fetching fails - Truncate title in ActionPanel to prevent overflow for notes snippet * Update anytype extension - Remove deactivated tool evals - Refactor snippet truncation for title
* Update notis extension - Merge pull request #1 from mindtheflo/devin/1744966527-update-audio-controls - Merge branch \'contributions/merge-1745340861714\' into devin/1744966527-update-audio-controls - Pull contributions - Fix linting issues with TypeScript types - Fixed all the pause audio issues - Update dependencies for ray commands - Add pause functionality and button state toggle for audio playback * Fixed the greptil feedback * Update CHANGELOG.md and optimise images --------- Co-authored-by: raycastbot <bot@raycast.com>
* Add gotify extension - feat: display other extras info - feat: handle extras - style: fix lint - Merge pull request raycast#5 from bxb100/renovate/eslint-monorepo - Merge pull request raycast#2 from bxb100/renovate/node-22.x - Update dependency eslint to v9.25.0 - Update dependency @types/node to v22.14.1 - Merge pull request raycast#3 from bxb100/renovate/react-monorepo - Update dependency @types/react to v19.1.2 - Merge pull request #1 from bxb100/renovate/configure - Add renovate.json - Initial commit * Update extensions/gotify/package.json Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Update extensions/gotify/package.json Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Update extensions/gotify/src/hooks/useMessage.ts Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Update gotify extension - feat: add websocket and delete all message func - Pull contributions * feat: add `metadata::extract::regex` * Update package.json * Update CHANGELOG.md and optimise images --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Per Nielsen Tikær <per@raycast.com> Co-authored-by: raycastbot <bot@raycast.com>
* Add lipsum extension - fix lint - fix publish error - pnpm -> npm - Merge branch \'main\' of github.com:seita1996/lipsum - fixed to output text that looks like it - Create dependabot.yml - add icon to README.md - first commit * Update extensions/lipsum/README.md Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Update extensions/lipsum/README.md Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Update extensions/lipsum/README.md Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Update extensions/lipsum/package.json Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Update lipsum extension - resolve conflict - Pull contributions - measures for inputting negative numbers - unify the number returned by the safeNumberArg function in case of an error to 1 - remove duplicated word - add try-catch block - add subtitle - make the title more descriptive - remove crossed out line from README.md - update README.md and package.json - add screencast to README.md * Update lipsum extension - update screencast - add ci workflow - Merge pull request raycast#3 from seita1996/dependabot/npm_and_yarn/types/react-19.1.2 - Bump @types/react from 19.0.10 to 19.1.2 - Merge pull request raycast#2 from seita1996/dependabot/npm_and_yarn/types/node-22.15.3 - Merge pull request #1 from seita1996/dependabot/npm_and_yarn/raycast/api-1.97.0 - if language is not selected, the default language of the Extension settings will be selected - just one command and using a dropdown to select Japanese or English - Bump @types/node from 22.13.10 to 22.15.3 - Bump @raycast/api from 1.96.1 to 1.97.0 * Update package.json * Update README.md * Update CHANGELOG.md * Update CHANGELOG.md and optimise images --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Per Nielsen Tikær <per@raycast.com> Co-authored-by: raycastbot <bot@raycast.com>
* Add quikwallet extension - fix: version bump - liniting fixes - feat: ask for public key - feat: add send functionality - feat: add balance fetching for other accounts - init * Update quikwallet extension - fix: icon size and correct title casing (raycast#2) - lint fixes - fix: version bump - Merge pull request #1 from geekyharsh05/harsh/fix/code-quality - fix: version bump * Update quikwallet extension - fix: lint and style issues - feat: add token icons and refactor balance view for better UX (raycast#3) * version bump * Delete extensions/quikwallet/src/helpers.ts * Update CHANGELOG.md and optimise images --------- Co-authored-by: raycastbot <bot@raycast.com>
* Update web3bio extension - Update - Merge branch \'contributions/merge-1749136619006\' - Pull contributions - Update web3bio.tsx - Delete yarn.lock - Update eslint.config.mjs - Update package.json - Merge pull request raycast#2 from web3bio/develop - Merge branch \'main\' into develop - Fix - Update - chore: updates - Update code - Update package lock json - Update package.json - Update package.json - Remove yarn.lock - Update package.json - Update - Update screenshots - Merge pull request #1 from web3bio/develop - Update screenshots - Update - Update - Hide detail when onSearchTextChange - Update - Update Empty - Update Empty state - feat: raycast cache - Update profile layout - Update - chore: empty text - chore: add platform filter - chore: types - chore: temp - chore: fix some bugs - chore: basic - chore: temp init - feat: init - Initial commit * Update * Update CHANGELOG.md * Update package * Update CHANGELOG.md * Update CHANGELOG.md and optimise images --------- Co-authored-by: Per Nielsen Tikær <per@raycast.com> Co-authored-by: raycastbot <bot@raycast.com>
* Add ccusage extension - refactor: optimize screenshots for Raycast Store compliance - feat: update token formatting to display 2 decimal places - feat: update cost formatting to display 2 decimal places - refactor: simplify cost display with unified icon - refactor: change components from default to named exports - remove unused date formatting functions - refactor: remove formatModelName function and display model names directly - refactor: remove unused model utilities and clean up TODOs - docs: update CHANGELOG.md to follow Raycast official format - docs: update README with new screenshots and media organization - docs: add project icon and badges to README - cleanup: remove unused Image import - fix: correct menubar icon configuration - chore: update extension icon - fix: JST timezone handling in date formatter - fix: replace Japanese text with English translations - fix: correct capitalization in repository action title - style: apply Prettier formatting fixes - docs: enhance README for production release - docs: create comprehensive CHANGELOG for v1.0.0 release - feat: update extension metadata for Raycast Store publication - docs: add special thanks to ccusage author @ryoppippi - fix: improve date parsing in formatDateWithTimezone and formatRelativeTimeWithTimezone - feat: add \'Open Preferences\' action to all components with cmd+, shortcut - refactor: remove \'Open Claude Code\' actions from all components - fix: display actual sessionId as session title - fix: extract project name from sessionId correctly - update: preference image asset - Revert "fix: change \'Today\'s Usage\' to \'Today\' in menu bar for better cost visibility" - fix: simplify Today display to show only \'Today\' instead of date for better cost visibility - fix: change \'Today\'s Usage\' to \'Today\' in menu bar for better cost visibility - feat: implement comprehensive error handling with Detail component - feat: improve error handling with Japanese localization and Preferences guidance - refactor: improve error handling with Japanese localization - feat: add comprehensive timezone preference support - docs: improve CLAUDE.md with missing development commands and updated dependencies - refactor: apply CLAUDE.md code style guidelines - docs: consolidate and improve code style guidelines - refactor: clean up unused code and improve type safety - feat: add knip for unused dependency and export detection - refactor: replace manual reduce operations with es-toolkit utilities - fix: improve model processing and support latest Claude models - docs: add screenshots and features section to README - refactor: simplify menu bar items and improve UX - feat: improve USD display format to 1 decimal place - fix: resolve TypeScript any types and code formatting - refactor: implement system-monitor style usePromise approach - fix: resolve menu bar rendering loop issue - chore: fix code formatting and verify build - refactor: completely rewrite menu bar with simplified design - feat: add MTok token formatting function - feat: add monthly usage data support - fix: change reserved ⌘, shortcut to ⌘⇧, for preferences - fix: resolve TypeScript and linting issues - refactor: simplify runtime-types for preferences-based configuration - refactor: remove LocalStorage-based runtime configuration system - refactor: migrate ccusage-integration from LocalStorage to Preferences API - feat: create preferences utility with type-safe access - feat: add preferences definition for runtime configuration - docs: update CLAUDE.md to reflect modern functional architecture - refactor: update components to use simplified utility functions - refactor: simplify utility functions and remove class-based approach - refactor: modernize type system with zod and unified conventions - feat: add modern utility libraries for code simplification - refactor: utilize runtime settings for ccusage command execution - Require Initial setup for using npx command (#1) - docs: update README to English and add documentation guidelines - chore: remove private claude code settings - fix: improve type safety and update default model to Sonnet 4.0 - refactor: replace dynamic imports with static imports for ccusage - refactor: replace shell command execution with direct ccusage package API - fix: refactor ccusage integration to resolve spawn sh ENOENT error - fix: path - feat: add cost accessories and improve cost display with MTok basis - feat: update model support and fix icon issues - fix: improve timezone handling for Today date display - docs: specify conventional commit format in guidelines - feat: improve UI and performance with simplified titles and optimized refresh - debug: add comprehensive logging and fix ccusage integration - fix: build error - docs: add CLAUDE.md with comprehensive project documentation - fix: correct title case to use proper ccusage naming - refactor: rename extension from claude-usage-monitor to ccusage - fix: resolve linting issues and complete implementation - feat: implement ModelBreakdown component - feat: implement CostAnalysis component - feat: implement MenuBar component with real-time monitoring - feat: implement SessionUsage component - feat: implement DailyUsage component with real-time updates - feat: implement main List view component - feat: create custom hooks for data fetching - feat: implement ccusage integration utilities - feat: add TypeScript type definitions for usage data - feat: setup project structure and dependencies * style: Add subtitle field matching the package title (ccusage) to maintain consistency with Raycast best practices * refactor: rename useccusageAvailability to useCcusageAvailability Follow camelCase convention for better readability and consistency. * refactor: Remove usage intensity visualization feature - Remove getUsageIntensity function from usage-calculator.ts - Simplify getTrendIcon and getTrendColor functions in DailyUsage.tsx - Remove usage intensity display from daily usage metadata * refactor: Replace magic numbers with named constants in CostAnalysis - Add MAX_COST_MODELS_DISPLAY (5) and MAX_TOKEN_MODELS_DISPLAY (3) constants - Improve code readability and maintainability - Address style feedback from code review * refactor: Replace magic number with named constant in SessionUsage - Add MAX_SESSIONS_DISPLAY (5) constant - Improve code readability and maintainability - Address style feedback from code review * Update extensions/ccusage/src/components/SessionUsage.tsx Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * refactor: Simplify JSX formatting in SessionUsage component * refactor: Simplify date processing with date -I command - Add useCurrentDate hook using date -I for system-native date retrieval - Remove timezone preference and complex timezone handling code - Update DailyUsage to use useCurrentDate hook instead of formatDateWithTimezone - Update SessionUsage to use formatDistanceToNow directly - Remove 4 timezone-related functions from data-formatter.ts (130+ lines) - Remove timezone field from Preferences schema and package.json - Update CLAUDE.md documentation for simplified date processing - Eliminates user timezone configuration complexity - Uses OS-native local timezone automatically * fix: Make totalCost required in DailyUsageDataSchema - Change totalCost from optional to required to match actual ccusage API response - Resolves inconsistency between totalCost (optional) and cost (required) fields - All tests (build, lint, typecheck) pass * refactor: consolidate ActionPanel structure and fix Raycast shortcut conflicts - Consolidate duplicate Open Preferences actions across all components - Change error state action title to "Configure Runtime" for clarity - Remove reserved Raycast shortcut (cmd+,) to prevent warnings - Set Copy ccusage Command as primary action (Enter key) - Add ActionPanel.Section for organized action grouping - Clean up unused schemas and types in usage-types.ts - Add clipboard utilities for command copying with toast notifications Fixes duplicate action logic issues in PR review comments. * style: Format Action components for consistent JSX formatting Fix ESLint formatting issues in Action components to improve code consistency. * feat: remove multi-runtime support, add preference system, and update docs - Remove runtime selection dropdown (npx, pnpm, bun, deno) for simplicity - Add defaultView preference for initial section selection - Replace customRuntimePath with customNpxPath for npx-only support - Unify "daily" → "today" naming throughout codebase for consistency - Simplify ErrorState component to focus on npx configuration - Add preferences module for centralized preference management BREAKING CHANGE: Multi-runtime support removed, extension now only supports npx Documentation updates: - README: Remove runtime flexibility claims, add accurate setup instructions - CLAUDE.md: Update file organization, replace runtime config with preference system - CHANGELOG: Correct feature description to reflect npx-only approach This change reduces UI complexity while maintaining flexibility through custom npx path configuration for non-standard Node.js installations. * perf: migrate to useExec hooks with enhanced error handling and type safety - Replace useCachedPromise with individual useExec hooks for better performance - Improve error handling with detailed error messages and failureToastOptions - Enhance type safety by migrating from null to undefined patterns - Update schemas to require cache token fields and add Raw schemas for validation - Add comprehensive error states in menu bar with fallback UI - Fix nullish coalescing operations in usage calculators * chore: update metadata * fix: Update README icon URL and issue repository link - Replace relative icon path with GitHub assets URL for store compatibility - Update issue link to point to raycast/extensions repository - Addresses greptile-apps PR review comments * fix: Replace date -I with POSIX-compatible date format - Change from date -I to date +%Y-%m-%d for BSD/macOS compatibility - Addresses greptile-apps review comment about GNU date extension - Ensures cross-platform compatibility across Unix systems * fix: Add null check for HOME environment variable - Add safety check for process.env.HOME before using it in path construction - Prevents potential undefined string interpolation - Addresses greptile-apps review comment about HOME variable safety - Include Prettier formatting fixes * docs: Update CLAUDE.md to reflect date command change - Update date processing section to reference date +%Y-%m-%d - Keep documentation consistent with implementation changes * Update package lock * Update CHANGELOG.md and optimise images --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Per Nielsen Tikær <per@raycast.com> Co-authored-by: raycastbot <bot@raycast.com>
* Add claude-code-cheatsheet extension - Merge pull request #1 from harumeri/release/main - refactor: use type aliases instead of duplicated string literals - fix: rename \'new\' property to \'isNew\' to avoid reserved keyword - fix: use Raycast Color enum instead of hex strings for budget colors - fix: replace empty \'all\' section object with safe default values - Initial commit: Claude Code Cheatsheet Raycast Extension - first commit * Update claude-code-cheatsheet extension - Merge pull request raycast#2 from harumeri/release/main - fix: standardize Bash pattern syntax to use colon in settings.json example - style: sort tags alphabetically in all data JSON files - fix: correct /review command description in slash-commands.json - docs: add deprecated commands and flags section to README.md - fix: add missing telemetry environment variables to environment.json - fix: add missing slash commands and update descriptions in slash-commands.json - fix: update CLI flag descriptions to match official claude --help output - fix: mark claude config command as deprecated in basic-commands.json - fix: remove problematic Icon entry from .gitignore to resolve \r\r suffix issue - style: remove duplicate .cache entry from .gitignore - style: add isLoading state to prevent empty state flicker during search/filtering - style: fix duplicate comments - clarify early return vs actual filtering - style: use showFailureToast from @raycast/utils for improved error handling - fix: improve clarity of MAX_THINKING_TOKENS description in environment.json - style: apply Prettier formatting changes after updating .prettierrc.json - fix: add required Prettier configuration fields to .prettierrc.json - fix: replace dangerous \'rm *\' example with safer \'curl *\' in settings permissions - fix: translate Japanese comments to English in utils/index.ts - fix: update CHANGELOG.md format to include {PR_MERGE_DATE} placeholder * Update claude-code-cheatsheet extension - Merge pull request #1 from harumeri/feature/paste-command - feat: add /add-dir slash command - feat: add MAX_MCP_OUTPUT_TOKENS environment variable - refactor: implement comprehensive architectural improvements for maintainability - feat: add comprehensive keyboard shortcuts for all actions - refactor: simplify paste actions to avoid performance issues - feat: enhance paste actions with frontmost app detection - feat: add paste actions and reorganize UI structure - feat: add _docs directory to gitignore - feat: setup private development repository - first commit * Update CHANGELOG.md and optimise images --------- Co-authored-by: raycastbot <bot@raycast.com>
* Add windsurf extension - chore: rename extension package from windsurf-raycast to windsurf - chore: remove metadata README and version from package.json - chore: update package-lock.json dependencies - chore: update package-lock.json dependencies and versions - chore: upgrade @raycast/api to 1.100.2 and @raycast/utils to 1.19.1 - chore: update dependencies and remove Node version constraint - chore: remove Node.js engine version constraint from package.json - chore: update minimum Node.js version requirement to 20.15.1 - feat: add error toasts and error propagation for storage operations - chore: upgrade eslint to v9.22.0 and update config structure - chore: update author name from vikasbnsl to vikas-bansal in package.json - docs: update extension screenshots with new UI designs - feat: add path normalization and improve error handling in Windsurf extension - chore: update package-lock.json dependencies - fix: downgrade node engine requirement to v20.15.1 - chore: add Node.js version requirement to package.json - feat: add initial windsurf extension with project management and file opening capabilities - refactor: improve code formatting and remove unnecessary whitespace in windsurf-projects.tsx - Fix: Add trailing newline to .gitignore and clarify README project saving - Merge pull request #1 from vikasbnsl/codex/update-openinwindsurf-to-return-promiseboolean - Update openInWindsurf to return success indicator - feat: add manual project selection and restrict to folders only - chore: add extension icon for windsurf app - refactor: modernize project configuration and improve code formatting - style: standardize code formatting and fix quotes consistency across files - feat: create Raycast extension for managing Windsurf IDE projects and file opening * feat: add Developer Tools and Productivity categories to Windsurf extension * Please provide the code changes/diff so I can help write an informative commit message. * Update * Update * Update package.json * Update CHANGELOG.md and optimise images --------- Co-authored-by: Per Nielsen Tikær <per@raycast.com> Co-authored-by: raycastbot <bot@raycast.com>
Description
This pull request introduces a new "Copy Link as Custom" command that retrieves the active browser tab’s URL and title, then copies the link to your clipboard using a user-defined format. You can define any structure you want, inserting placeholders such as {url}, {title}, {id}, or {favicon} to customize how the link is copied. This feature allows users to generate links precisely in the style or layout that suits their workflow.
Screencast
create-link-screencast-custom.mp4
Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare located outside the metadata folder if they were not generated with our metadata tool