From 46339ba0505c758cd0bf3e00ffa440ca25d9731a Mon Sep 17 00:00:00 2001 From: Claire Froelich Date: Mon, 3 Feb 2025 13:34:53 -0500 Subject: [PATCH 1/2] Update pieces-raycast extension - Pull contributions - Merge pull request #49 from pieces-app/align-branding-guidlines - revert preference naming - Merge pull request #48 from pieces-app/align-branding-guidlines - minor version bump - apply branding guidelines and resolve renamed commands - Merge pull request #45 from pieces-app/add-publishing-guide - Update dev README --- extensions/pieces-raycast/.nvimlog | 0 extensions/pieces-raycast/README.md | 10 +- .../pieces-raycast/README_DEVELOPMENT.md | 12 ++ extensions/pieces-raycast/package.json | 22 ++-- .../pieces-raycast/src/actions/saveAsset.ts | 2 +- .../connection/health/piecesHealthCheck.ts | 4 +- .../connection/health/piecesInstalledCheck.ts | 34 +++--- .../connection/health/piecesUpToDateCheck.ts | 10 +- .../src/save-browser-history-to-pieces.tsx | 4 +- .../src/save-clipboard-history-to-pieces.tsx | 2 +- .../pieces-raycast/src/search-materials.tsx | 114 ++++++++++++++++++ .../src/test/assets-stream-test.ts | 2 +- .../src/test/clipboard-controller-test.ts | 6 +- .../pieces-raycast/src/ui/Notifications.ts | 6 +- .../pieces-raycast/src/utils/launchRuntime.ts | 4 +- 15 files changed, 179 insertions(+), 53 deletions(-) create mode 100644 extensions/pieces-raycast/.nvimlog create mode 100644 extensions/pieces-raycast/src/search-materials.tsx diff --git a/extensions/pieces-raycast/.nvimlog b/extensions/pieces-raycast/.nvimlog new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/extensions/pieces-raycast/README.md b/extensions/pieces-raycast/README.md index 213e4b977520d..0cc18fe820875 100644 --- a/extensions/pieces-raycast/README.md +++ b/extensions/pieces-raycast/README.md @@ -4,19 +4,19 @@ Welcome to the Pieces for Developers Raycast Extension! This extension brings powerful features to your fingertips, allowing you to streamline your workflow and boost productivity. -In order to use the Pieces Raycast Extension, you must have Pieces OS. We recommend also using the Pieces for Developers desktop app. +In order to use the Pieces Raycast Extension, you must have PiecesOS. We recommend also using the Pieces for Developers desktop app. Pieces for Developers is an AI powered productivity tool tailored for developers. We have many features that horizontally integrate across the developer toolchain including a streamlined snippet-saving experience that helps you organize your reusable code while automatically augmenting it with useful metadata, as well as our Copilot which is an AI chat that is highly tailored to your specific context as a developer. Here’s a breakdown of the features available in this extension: ## Features -### Search Saved Pieces +### Search Saved Materials -![Search Snippets](media/search%20snippets.gif) +![Search Materials](media/search%20snippets.gif) Quickly search through your saved pieces to find and reuse exactly what you need. -- **Command:** `Search Saved Snippets` +- **Command:** `Search Saved Materials` ### Save Clipboard History to Pieces @@ -30,7 +30,7 @@ View a list of your clipboard history, enriched with useful metadata like relate ![Browser History](media/save-browser-history.gif) -View a list of the code snippets discovered in your recent browsing history. Each code snippet is enriched with useful metadata. Select an item to save it to Pieces. +View a list of the saved materials discovered in your recent browsing history. Each saved material is enriched with useful metadata. Select an item to save it to Pieces. - **Command:** `Save Browser History to Pieces` diff --git a/extensions/pieces-raycast/README_DEVELOPMENT.md b/extensions/pieces-raycast/README_DEVELOPMENT.md index d75d9c0ff266a..ae570cb543a5d 100644 --- a/extensions/pieces-raycast/README_DEVELOPMENT.md +++ b/extensions/pieces-raycast/README_DEVELOPMENT.md @@ -15,3 +15,15 @@ ### Lifecycle of a Command It's very important to await any asynchronous operation within a command. Without doing this, the command will be disposed without completing. + +### Resolving command actions + +- command `name` in package.json must match filename in `src` + +### Publishing updates + +1. Update the version in `package.json` +2. run `npm run publish` <-- address any errors +3. This will automatically cut a PR to raycast/extensions and provide a link +4. Edit the PR description to explain changes +5. Wait for approval from Raycast team (can take up to 2 weeks) diff --git a/extensions/pieces-raycast/package.json b/extensions/pieces-raycast/package.json index 139fbb49093de..018be4339cb9a 100644 --- a/extensions/pieces-raycast/package.json +++ b/extensions/pieces-raycast/package.json @@ -1,6 +1,6 @@ { "$schema": "https://www.raycast.com/schemas/extension.json", - "version": "0.1.0", + "version": "0.2.0", "name": "pieces-raycast", "title": "Pieces for Raycast", "description": "Pieces for Developers Raycast Extension", @@ -22,16 +22,16 @@ }, { "name": "signin", - "title": "Sign into Pieces", + "title": "Sign In to Pieces", "mode": "no-view", - "description": "Sign into Pieces", + "description": "Sign in to Pieces", "icon": "piecesVector.png" }, { "name": "signout", - "title": "Signout of Pieces", + "title": "Sign Out of Pieces", "mode": "no-view", - "description": "Signout of Pieces", + "description": "Sign out of Pieces", "icon": "piecesVector.png" }, { @@ -71,18 +71,18 @@ "icon": "piecesVector.png" }, { - "name": "search-snippets", - "title": "Search Saved Snippets", - "description": "Search for a Piece that is saved in your snippet database", + "name": "search-materials", + "title": "Search Saved Materials", + "description": "Search for a saved material in your Pieces Drive", "mode": "view", "icon": "piecesVector.png" } ], "preferences": [ { - "name": "snippetEnrichmentLevels", - "description": "Choose how much metadata should be automatically added to snippets when you save them.", - "title": "Snippet Enrichment Levels", + "name": "material-enrichment-levels", + "description": "Choose how much metadata should be automatically added to materials when you save them.", + "title": "Material Enrichment Levels", "type": "dropdown", "data": [ { diff --git a/extensions/pieces-raycast/src/actions/saveAsset.ts b/extensions/pieces-raycast/src/actions/saveAsset.ts index ebd40ff0a4361..19e3501ae85c2 100644 --- a/extensions/pieces-raycast/src/actions/saveAsset.ts +++ b/extensions/pieces-raycast/src/actions/saveAsset.ts @@ -110,7 +110,7 @@ export async function saveFileToPieces(file: string): Promise { * Save some text to Pieces * @param text the text to save * @param file true if it's a file - * @param ext the classification of the snippet + * @param ext the classification of the material * @returns */ export async function saveTextToPieces( diff --git a/extensions/pieces-raycast/src/connection/health/piecesHealthCheck.ts b/extensions/pieces-raycast/src/connection/health/piecesHealthCheck.ts index 757f1851ce23b..d2246b2e4a15e 100644 --- a/extensions/pieces-raycast/src/connection/health/piecesHealthCheck.ts +++ b/extensions/pieces-raycast/src/connection/health/piecesHealthCheck.ts @@ -11,8 +11,8 @@ import { CapabilitiesEnum } from "@pieces.app/pieces-os-client"; * - is pieces running * - is pieces at least updated to the minimum required version * - does the application need to be updated to represent the users's preferences - * - this will prompt the user to install pieces os if it's not installed, return false if they reject the installation - * - this will automatically update pieces os if it is not at least the minimum required version + * - this will prompt the user to install PiecesOs if it's not installed, return false if they reject the installation + * - this will automatically update PiecesOs if it is not at least the minimum required version * @returns a boolean on whether or not the health check succeeded */ export default async function piecesHealthCheck(): Promise { diff --git a/extensions/pieces-raycast/src/connection/health/piecesInstalledCheck.ts b/extensions/pieces-raycast/src/connection/health/piecesInstalledCheck.ts index 2d8a204cee926..08d397d463ce8 100644 --- a/extensions/pieces-raycast/src/connection/health/piecesInstalledCheck.ts +++ b/extensions/pieces-raycast/src/connection/health/piecesInstalledCheck.ts @@ -6,24 +6,24 @@ import { exec } from "child_process"; import { pollForConnection } from "./piecesHealthCheck"; /** - * Checks the health of Pieces OS and attempts to install it if necessary. + * Checks the health of PiecesOS and attempts to install it if necessary. * * This function performs the following steps: * 1. Shows a toast notification indicating that the health check is in progress. - * 2. Checks the health of Pieces OS using the well-known API. - * 3. If Pieces OS is healthy, hides the toast and returns true. - * 4. If Pieces OS is not healthy, attempts to launch Pieces OS. + * 2. Checks the health of PiecesOS using the well-known API. + * 3. If PiecesOS is healthy, hides the toast and returns true. + * 4. If PiecesOS is not healthy, attempts to launch PiecesOS. * 5. If launching is successful, polls for a connection and hides the toast if connected. - * 6. If launching fails, prompts the user to install Pieces OS. - * 7. If the user agrees to install, downloads and installs Pieces OS. + * 6. If launching fails, prompts the user to install PiecesOS. + * 7. If the user agrees to install, downloads and installs PiecesOS. * 8. Polls for a connection for up to 10 minutes. * 9. Hides the toast and returns the result of the installation. * - * @returns {Promise} - A promise that resolves to true if Pieces OS is installed and connected successfully, otherwise false. + * @returns {Promise} - A promise that resolves to true if PiecesOS is installed and connected successfully, otherwise false. */ export default async function piecesInstalledCheck() { const toast = await showToast({ - title: "Checking for Pieces OS health", + title: "Checking for PiecesOS health", primaryAction: { title: "Contact Support", onAction() { @@ -41,7 +41,7 @@ export default async function piecesInstalledCheck() { return true; } - toast.title = "Attempting to launch Pieces OS"; + toast.title = "Attempting to launch PiecesOS"; await launchRuntime(); const connected = await pollForConnection(); @@ -56,14 +56,14 @@ export default async function piecesInstalledCheck() { if (!shouldInstall) { toast.style = Toast.Style.Failure; - toast.title = "Cannot perform this action without installing Pieces OS"; + toast.title = "Cannot perform this action without installing PiecesOS"; return false; } - toast.title = "Downloading Pieces OS"; + toast.title = "Downloading PiecesOS"; performInstall().then(() => { - toast.title = "Installing Pieces OS"; + toast.title = "Installing PiecesOS"; }); const successfulInstall = await pollForConnection(10 * 60 * 1000); // wait 10 minutes @@ -74,7 +74,7 @@ export default async function piecesInstalledCheck() { } /** - * Prompts the user with an alert to confirm the installation of Pieces OS. + * Prompts the user with an alert to confirm the installation of PiecesOS. * * @param res - A callback function that resolves with a boolean value indicating the user's choice. * - `true` if the user chooses to install. @@ -83,7 +83,7 @@ export default async function piecesInstalledCheck() { async function requestInstall(res: (val: boolean) => void) { await confirmAlert({ title: - "In order to use the Pieces Raycast extension you must have Pieces OS installed, would you like to install it?", + "In order to use the Pieces Raycast extension you must have PiecesOS installed, would you like to install it?", primaryAction: { title: "Install", onAction() { @@ -101,9 +101,9 @@ async function requestInstall(res: (val: boolean) => void) { } /** - * Downloads and installs the Pieces OS package based on the system architecture. + * Downloads and installs the PiecesOS package based on the system architecture. * - * This function constructs a download URL for the Pieces OS package, taking into account + * This function constructs a download URL for the PiecesOS package, taking into account * whether the system architecture is ARM64 or not. It then downloads the package to a * temporary path and attempts to open it for installation. If the download fails, an * error message is printed. @@ -118,7 +118,7 @@ curl -L "$PKG_URL" -o "$TMP_PKG_PATH" if [ -f "$TMP_PKG_PATH" ]; then open "$TMP_PKG_PATH" else - echo "Failed to download and install Pieces OS." + echo "Failed to download and install PiecesOS." fi`; return new Promise((res) => { exec(script, () => { diff --git a/extensions/pieces-raycast/src/connection/health/piecesUpToDateCheck.ts b/extensions/pieces-raycast/src/connection/health/piecesUpToDateCheck.ts index f714d8b6c3da0..6b961f67661ff 100644 --- a/extensions/pieces-raycast/src/connection/health/piecesUpToDateCheck.ts +++ b/extensions/pieces-raycast/src/connection/health/piecesUpToDateCheck.ts @@ -38,7 +38,7 @@ export default async function piecesUpToDateCheck(): Promise { if (!canAutoUpdate) { await Notifications.getInstance().errorToast( - "Please update your Pieces OS version to at least " + MIN_VERSION, + "Please update your PiecesOS version to at least " + MIN_VERSION, ); return false; } else { @@ -47,14 +47,14 @@ export default async function piecesUpToDateCheck(): Promise { } /** - * Asynchronously checks for Pieces OS updates and handles the update process. + * Asynchronously checks for PiecesOS updates and handles the update process. * Displays a toast notification during the update check and handles different update statuses. * * @returns {Promise} A promise that resolves to a boolean indicating whether the update was successful. */ async function updatePieces(): Promise { const toast = await showToast({ - title: "Checking for Pieces OS Update", + title: "Checking for PiecesOS Update", style: Toast.Style.Animated, }); @@ -112,11 +112,11 @@ function getStatusText(status: UpdatingStatusEnum | undefined) { case UpdatingStatusEnum.ReadyToRestart: return "Restarting to apply the update..."; case UpdatingStatusEnum.ReinstallRequired: - return "You need to reinstall Pieces OS for this feature to work!"; + return "You need to reinstall PiecesOS for this feature to work!"; case UpdatingStatusEnum.Unknown: return "Unknown status"; case UpdatingStatusEnum.UpToDate: - return "Pieces OS is up to date."; + return "PiecesOS is up to date."; case undefined: return "Failed to get update status, please contact support at https://docs.pieces.app/support"; } diff --git a/extensions/pieces-raycast/src/save-browser-history-to-pieces.tsx b/extensions/pieces-raycast/src/save-browser-history-to-pieces.tsx index 8cc3431f96c50..616121f854f25 100644 --- a/extensions/pieces-raycast/src/save-browser-history-to-pieces.tsx +++ b/extensions/pieces-raycast/src/save-browser-history-to-pieces.tsx @@ -70,10 +70,10 @@ export default function Command() { } if (item.ext) { - return `${item.ext} Snippet`; + return `${item.ext} Material`; } - return `Code snippet from ${item.browser.tab.title ?? item.browser.tab.url}`; + return `Saved from ${item.browser.tab.title ?? item.browser.tab.url}`; } /** diff --git a/extensions/pieces-raycast/src/save-clipboard-history-to-pieces.tsx b/extensions/pieces-raycast/src/save-clipboard-history-to-pieces.tsx index a793b3624bfd3..f729a93894e49 100644 --- a/extensions/pieces-raycast/src/save-clipboard-history-to-pieces.tsx +++ b/extensions/pieces-raycast/src/save-clipboard-history-to-pieces.tsx @@ -101,7 +101,7 @@ export default function Command() { } if (item.ext) { - return `${item.ext} Snippet`; + return `${item.ext} Material`; } return item.clipboard.text.slice(0, 30); diff --git a/extensions/pieces-raycast/src/search-materials.tsx b/extensions/pieces-raycast/src/search-materials.tsx new file mode 100644 index 0000000000000..085abd5ee8bdb --- /dev/null +++ b/extensions/pieces-raycast/src/search-materials.tsx @@ -0,0 +1,114 @@ +import { useEffect, useState } from "react"; +import AssetsController from "./controllers/AssetsController"; +import { + Action, + ActionPanel, + Clipboard, + Detail, + List, + showHUD, +} from "@raycast/api"; +import classificationSpecificToReadable from "./utils/converters/classificationSpecificToReadable"; +import { ClassificationSpecificEnum } from "@pieces.app/pieces-os-client"; +import getIcon from "./utils/ui/getDraftIcon"; +import { StrippedAsset } from "./types/strippedAsset"; +import getDraftMetadata from "./utils/ui/getDraftMetadata"; + +export default function Command() { + const [items, setItems] = useState( + AssetsController.getInstance().getAssets().assets, + ); + const [searchText, setSearchText] = useState(""); + // using this to force a rerender + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const [value, setValue] = useState(0); + + useEffect(() => { + return AssetsController.getInstance().controller.listen((assets) => { + setItems(assets.assets); + setValue((v) => v + 1); + }); + }, []); + + function getItemTitle(item: StrippedAsset) { + return item.name ?? "Unnamed Asset"; + } + + /** + * Given a clipboard item, build its markdown body for the main detail view + * @param item the clipboard item + * @returns a markdown string + */ + function getItemMarkdown(item: StrippedAsset): string { + const title = getItemTitle(item); + + return `### **${title}**\n\`\`\`${item.ext}\n${item.text}\n\`\`\`\n\n${item.annotations?.length ? `**Description:** \n ${item.annotations.map((el) => el.text).join("\n")}` : ""}`; + } + + /** + * Get the detail metadata for a clipboard item + * @param item the clipboard item + * @returns the item's item + */ + function getMetadata(item: StrippedAsset): JSX.Element { + const metadataChildren = getDraftMetadata(item); + + return {...metadataChildren}; + } + + const filteredList = items.filter( + (item) => + item.name?.includes(searchText) || + item.ext?.includes(searchText) || + item.text.includes(searchText) || + item.websites?.some((el) => el.url.includes(searchText)) || + item.tags?.some((el) => el.text.includes(searchText)) || + classificationSpecificToReadable( + item.ext || ClassificationSpecificEnum.Unknown, + )?.includes(searchText), + ); + + return ( + + {filteredList.length ? ( + filteredList.map((item, index) => ( + + } + actions={ + + { + Clipboard.copy(item.text).then(() => + showHUD("Copied material to clipboard"), + ); + }} + /> + + } + /> + )) + ) : ( + + )} + + ); +} diff --git a/extensions/pieces-raycast/src/test/assets-stream-test.ts b/extensions/pieces-raycast/src/test/assets-stream-test.ts index 4b987be719b27..671e1fad5f635 100644 --- a/extensions/pieces-raycast/src/test/assets-stream-test.ts +++ b/extensions/pieces-raycast/src/test/assets-stream-test.ts @@ -25,7 +25,7 @@ export default async function testAssetsStream() { "Number of assets from controller is not equal to the number of assets from the identifiers snapshot", ); - const asset = await saveTextToPieces('console.log("hello world"'); + const asset = await saveTextToPieces('console.log("hello world")'); await sleep(300); expect(assets.length).to.eq( diff --git a/extensions/pieces-raycast/src/test/clipboard-controller-test.ts b/extensions/pieces-raycast/src/test/clipboard-controller-test.ts index 927d6b86ee638..925cac3c48214 100644 --- a/extensions/pieces-raycast/src/test/clipboard-controller-test.ts +++ b/extensions/pieces-raycast/src/test/clipboard-controller-test.ts @@ -31,8 +31,8 @@ export default async function testClipboardController() { "Items is not the same as event items", ); - const snippet = `const id = ${randomUUID()};`; - await Clipboard.copy(snippet); // copy to update history + const material = `const id = ${randomUUID()};`; + await Clipboard.copy(material); // copy to update history await sleep(50); await ClipboardController.getInstance().updateHistory(); // call update history to update the clipboard controller values await sleep(50); @@ -44,7 +44,7 @@ export default async function testClipboardController() { ); // should have one extra item expect(items.length <= 30).to.eq(true); expect(eventItems[0].clipboard.text).to.eq( - snippet, + material, "Recently copied is not first item", ); // the recently copied item should be at the 0 index expect(events).to.be.gt( diff --git a/extensions/pieces-raycast/src/ui/Notifications.ts b/extensions/pieces-raycast/src/ui/Notifications.ts index 1e8c64bf5392e..7b454311afb41 100644 --- a/extensions/pieces-raycast/src/ui/Notifications.ts +++ b/extensions/pieces-raycast/src/ui/Notifications.ts @@ -11,16 +11,16 @@ export default class Notifications { } /** - * Displays a server error toast notification with options to launch Pieces OS or contact support. + * Displays a server error toast notification with options to launch PiecesOS or contact support. * * @param {string} message - The specific action that failed, to be included in the toast message. * @returns {Promise} A promise that resolves when the toast is shown. */ async serverErrorToast(message: string) { await showToast({ - title: `Failed to ${message}. Please make sure that Pieces OS is installed, running, and up to date.`, + title: `Failed to ${message}. Please make sure that PiecesOS is installed, running, and up to date.`, primaryAction: { - title: "Launch Pieces OS", + title: "Launch PiecesOS", shortcut: Keyboard.Shortcut.Common.Open, onAction: () => { launchRuntime(); diff --git a/extensions/pieces-raycast/src/utils/launchRuntime.ts b/extensions/pieces-raycast/src/utils/launchRuntime.ts index fc24c06e9b8f7..57cad6c70d36c 100644 --- a/extensions/pieces-raycast/src/utils/launchRuntime.ts +++ b/extensions/pieces-raycast/src/utils/launchRuntime.ts @@ -1,8 +1,8 @@ import { runAppleScript } from "@raycast/utils"; export default async function launchRuntime() { - // for some reason this seems to error even if Pieces OS is installed, not sure exactly why, so we will default to polling for connection each time. + // for some reason this seems to error even if PiecesOS is installed, not sure exactly why, so we will default to polling for connection each time. return await runAppleScript( - 'tell application "Pieces OS" to activate\n', + 'tell application "PiecesOS" to activate\n', ).catch(() => null); } From 046c73f5976a952434657a7718bdc231b04aadc2 Mon Sep 17 00:00:00 2001 From: Claire Froelich Date: Mon, 3 Feb 2025 13:47:17 -0500 Subject: [PATCH 2/2] Update pieces-raycast extension - Merge pull request #50 from pieces-app/align-branding-guidlines - update changelog - add changelog step to dev readme - Pull contributions --- extensions/pieces-raycast/CHANGELOG.md | 4 ++-- .../pieces-raycast/README_DEVELOPMENT.md | 9 +++++---- .../pieces-raycast/assets/piecesVector.png | Bin 19764 -> 25370 bytes 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/extensions/pieces-raycast/CHANGELOG.md b/extensions/pieces-raycast/CHANGELOG.md index 1679a8ea65270..786a4dfea3304 100644 --- a/extensions/pieces-raycast/CHANGELOG.md +++ b/extensions/pieces-raycast/CHANGELOG.md @@ -1,8 +1,8 @@ # Pieces for Raycast Changelog -## [Update] - 2025-01-11 +## [0.2.0] - 2025-02-03 -- Fix addressing port migration that broke the extension +- Renames commands according to new branding guidelines ## [0.1.0] - 2025-01-06 diff --git a/extensions/pieces-raycast/README_DEVELOPMENT.md b/extensions/pieces-raycast/README_DEVELOPMENT.md index ae570cb543a5d..d4ac3c2191e38 100644 --- a/extensions/pieces-raycast/README_DEVELOPMENT.md +++ b/extensions/pieces-raycast/README_DEVELOPMENT.md @@ -23,7 +23,8 @@ It's very important to await any asynchronous operation within a command. Withou ### Publishing updates 1. Update the version in `package.json` -2. run `npm run publish` <-- address any errors -3. This will automatically cut a PR to raycast/extensions and provide a link -4. Edit the PR description to explain changes -5. Wait for approval from Raycast team (can take up to 2 weeks) +2. Update CHANGELOG +3. run `npm run publish` <-- address any errors +4. This will automatically cut a PR to raycast/extensions and provide a link +5. Edit the PR description to explain changes +6. Wait for approval from Raycast team (can take up to 2 weeks) diff --git a/extensions/pieces-raycast/assets/piecesVector.png b/extensions/pieces-raycast/assets/piecesVector.png index 4d2456ba00ab83aee97e378be56a16c0e007e5f1..e0f092680e3921ad18a92e84cd4a1fc73a2e268f 100644 GIT binary patch literal 25370 zcmV)(K#RYLP)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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%0Dr>a={^1{@EOG2bfB2n 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 literal 19764 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