From e06b599bfcd62ff5621ebd6ca1951178e8384511 Mon Sep 17 00:00:00 2001 From: Taha Basri Date: Sun, 28 Jun 2026 18:05:36 +0400 Subject: [PATCH 1/5] Prepare 4.1.0 Changelog --- CHANGELOG.md | 11 +++++++++++ package.json | 2 +- src/extension.ts | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a73a2d9..3bdf42e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,15 @@ # Change Log +### 4.1.0 + +- [[#113](https://github.com/tahabasri/snippets/pull/113)] Added folder coloring with optional cascade to child folders. +- [[#137](https://github.com/tahabasri/snippets/pull/137)] + - Redesigned the snippet editor into a two-panel layout. + - Fixed snippet edits randomly not saving. +- [[#138](https://github.com/tahabasri/snippets/pull/138)] Fixed snippet IntelliSense missing in remote (SSH) sessions. +- [[#136](https://github.com/tahabasri/snippets/pull/136)] Added setting to open folders collapsed by default. +- [[#135](https://github.com/tahabasri/snippets/pull/135)] Surfaced language-less Snippets as Global in IntelliSense. +- [[#134](https://github.com/tahabasri/snippets/pull/134)] Added support for importing snippets into a dedicated folder (without overwriting). + ### 4.0.0 - [[#116](https://github.com/tahabasri/snippets/pull/116)] diff --git a/package.json b/package.json index 881e274..30317b3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "snippets", "displayName": "Snippets", "description": "Supercharge your Snippets in VS Code — Manage your code snippets & AI prompts without quitting your editor.", - "version": "4.0.0", + "version": "4.1.0", "preview": false, "license": "SEE LICENSE IN LICENSE.txt", "publisher": "tahabasri", diff --git a/src/extension.ts b/src/extension.ts index 4d00f4e..296bd76 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -21,7 +21,7 @@ import { DecorationProvider } from './provider/decorationProvider'; */ export function activate(context: vscode.ExtensionContext) { // exact version for which show Changelog panel - const changelogVersion = '4.0.0'; + const changelogVersion = '4.1.0'; //** variables **// // global settings From faf7767a7137e79060c7761b136d96e964817006 Mon Sep 17 00:00:00 2001 From: Taha Basri Date: Sun, 28 Jun 2026 18:06:26 +0400 Subject: [PATCH 2/5] Center logos --- images/logo/logo.png | Bin 3510 -> 3611 bytes images/logo/logo.svg | 5 +++-- resources/icons/logo_w.svg | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/images/logo/logo.png b/images/logo/logo.png index c5cc3d8057b35602430110e781d02a0267ee197a..164c74d8ace1df3e6d6946c9c7a9c94f49e16fc1 100644 GIT binary patch delta 1682 zcma)$X;=~n8pjosLw5kH(KKoi-E=Yz5rI&~3ltsm(b6(2^Hy?3QW;T^C5jR?6~QPE zq&1Hik5ad+Va#o-Cv7KLvS^HCCN-Tg$q=tJbLsnh*!R=>`#DI2dyHD^tt1SdgdtF3 zy~$KxUn+5*7oI570$lzy{{--nB>-LAlga560x5%lA^Q@Em<&8I4U>yGol865ZMV9^8}IELIqPRu!7i z%?$r+TxCB9-g_yf*!0`ILp@gtS*@#}25daT_2oauPKMNnHf0>G=-EsonHT)cB>@OP zvd6k;?owT5L6f5C;X_6dTfoUuwzx@Qa#}4@QNxL>oNhsnPV!M#L&{pVro(~#k=L~T zo#IZJMtq-K7Fyc8CRkO2op-uOI5E<7*kI&?UJp|dd}4aXgV*iua$1>2IEUp~;TaB} zyRUdw@iA}QO#2WbS5=<7&6&OKah0M#$;FoP8U&=bHWnk;0tnJc_b`G{Lm>w)GD+7W zmPaCZ*X6YG8y{bK?bn&h>Hip<9NA@46cPNZ3;|h?i;z&^6-f9s%YkyKXuAcN;aQ(S zF4|^+zl3{Q;IUMMfC^CqpKMht8QUzuQ+-~DOI;P(@{T)ej-dymeoq`&t3e1Ly0%0k z6JnEn_RLgNu$EovrkLyE+C-xAAW?P!Mk^pFwjLqUd4e#b`i~80NS{w*hR2*x(V&xixkz z4RGCoIrnN|%s3YMQ^R3~4S=;8G3NH(QJD0{OI0TB63q^mtAfh?*Ipd(%$&zf61K1% zAo3IE-ge(yOHIwyG-x)$2|=j%k>hQ5E6ddPk+M@zfh-VuK_CR>bp`#CT3*)Md17Ce{VwleqR}Ts)mD5w@HMc3S zkHZF_189O+zcr`8b(qf{|4_7fW|4lh_yd=vKc)(yfB#)H#N~-jK^u1Bue&R-Jf`^U zCJ%9iZX-iOw+ZeI#(1(${lt%cI;2|)Fc!7U^Nh3VD>G{W+Jg-mIgJ<_ubG%=E+J72 z2Dd*%?koJdcCzw0*e_8lUpm&gy>n7O${x*H_FN9>j6$~0e_3jNelvOC8MU>;e#Oa; zLcjMm(0#yzmDCF6b2oAa%zE|13y>HSNpjD0OYKS0^1B`n*To#K7kK^}=toc+e^x8MwIev^;#8lj!O47832lO;iS3QqURU%{&S!PE-HffIFJ ztW5G@^RCgis#{~d@5*<*RiDa+vauao+R0e{6Hwoe&PBL8JCSU))5=ll7Tc+F!t;ib z_m$rU-}%LZzYq1KTa%LI$r}D{TKMW_Bx$H4cib>_RpFLhG1b@g6uy$aZ*Oe!{^A+Q z>}2%h?SYb&=K^KG+$X1!qi$7p!^P4jjt}>JK9yvY%$@7$^?FCuwQ;@3Xm0- z44XKXSeO*5ITj#0d37@69os`nDl!`h%H&kIFmQNz#_J=$+#0UR_oy zT{^xWv}Y5?=YP?>K7_6MK^w`Pc<@61SB@c$yH!`?+enC7uPW&qzz5D(`zwl$`hwk*YzVnTL t>lS-S)abFz0CR<2>A#RR<9)h!8IEgB|IHe?v210ja7GlpJ2>gg{{UTO`DFkA delta 1690 zcmV;L24(r19JU*fI06P)kvfbgHZCwNV=yo>AU8QKF*YG%z|aGb=DLlL7-XFmPyZbZ>KLZ*V$ELqkwdHkn5HG2&Q)sFgy*;~2!fy480n()Du zBm(b14mz&~Uqlj;cOZk#>%kw9gy8-n9jQPh9U_qIB9ea&5JM2*vWo3V51>O$>CmmDr%0DSdZlV#94n6nqXSC%j{8=^6$FpsO7Z{#!D@)4jXQ4T5vgIS8U%UkgQn9OTYJS_E}RO2~V*Qw^TpfA`onbvG!N;r4E5$ zvz$nJfG7wAo8@TI14Ka}fPp{&1A(Mb@ov%+WCl=yq)~B6+Us*S4>kfxtD&1oPml=& zl2(0-(yKR;o}%mVQIj-#_TN@07k4M|F_KImkhHt^Dcps;^motZoj0EEC)sicq+9eZ zOM7_X?v2-zAPQ`g4+?#g4+p~bAOSZtJJDmFOuG6>Bx1i9@z3?c^4~JsZB~M zOPZ84cmEf~CF%Kpq<8+3_AJD4YQWX@xE9V;YIAB|NrDT#!;;R&buJ(SF5Cx`5egT7 zhS+WtN>X{Ec~sKKi&w7?K2!Kv`wO#rt@w>z+Ica~(*kaCaV%P%Xbws`BWZB8-@m-` zqQ2Pou6AwX!-}aju{ZoNXMc_5|682gpJKJ+IIlJ0kfckuhxGQ`lx{8U_C7t}DvsA6 zpGhjM_n@EdJf~0o{4|Es1AbfsDNi&uhb0Yn`uKB=H+60CY0nV=SKe2U;jjl>zCGkT z0^r9xkb_|lxVE^@c?7_ZcOWI_^?*ciqY#rZ3Lt;5V#{rLqFGXFv(s>d_4>meaQXI- zPV4O@Q@Tm`c zLa7&|?@Lm1+s4atKP@_<<9;YNhd=cG*>vLl)ZC@ z&9hytFWKx*b_^dkmY!_nURjt9b4)PW(=UGl!5Z?Crjs7R(Nu(EroD&2s;Ws35Jg_n zsicQ+(opMbr$cFf8*k|25ZdXa2Z$nHA1}_S{dLVLcf3AcY(zZvq@)?YQSgY*bCue3 z(nCa%m!$f5aZ;^F8c7ZlQA5(}_3>gg>H@h+ts&{Kc)AsbQ@Khl+#4rb$V0dO+jmXX z$0UtJTyId}@5s-!f5K`=x*%zC16Pg}g3*CtweAh|d##yKQw zx9MuGK3<%0o&j*<8c2KNQkdOi-LTacUCjMO`UBf{Ee*BykWYJ`AMg~*yIAc=4r}G> ki-uZ%LF9$@V}LE~e}_zkSJ - + + + diff --git a/resources/icons/logo_w.svg b/resources/icons/logo_w.svg index 2358e82..f21e8a7 100644 --- a/resources/icons/logo_w.svg +++ b/resources/icons/logo_w.svg @@ -1,2 +1,3 @@ - - + + + From 09c962531db54ee321bd550060836eff6169cf09 Mon Sep 17 00:00:00 2001 From: Taha Basri Date: Sun, 28 Jun 2026 18:37:52 +0400 Subject: [PATCH 3/5] Update documentation to include latest features + Refactor Readme.md layout + Include Settings section --- README.md | 147 +++++++++++++++++---- images/features/070-folder-colors.png | Bin 0 -> 10225 bytes images/features/071-snippet-editor.gif.png | Bin 0 -> 34098 bytes 3 files changed, 123 insertions(+), 24 deletions(-) create mode 100644 images/features/070-folder-colors.png create mode 100644 images/features/071-snippet-editor.gif.png diff --git a/README.md b/README.md index 78ba9ae..b49eea4 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Install **Snippets** by one of the following options: --- -[Features](#features) | [FAQ](#faq) | [Known Issues](#known-issues) | [Release Notes](#release-notes) | [Feedback](#feedback) | [Credits](#credits) +[Features](#features) | [Settings](#settings) | [FAQ](#faq) | [Known Issues](#known-issues) | [Release Notes](#release-notes) | [Feedback](#feedback) | [Credits](#credits) ## Features @@ -34,35 +34,48 @@ Boost your productivity with a set of powerful features that enhance snippet man - [Customize](#customize) — Personalize your Snippets to match your style. - [Sync](#sync) — Various options for synchronizing your snippets across multiple devices and users. - [Boost](#boost) — Supercharge your snippets to make them more developer-friendly. -- [AI Integration](#ai-integration) — Seamlessly work with AI assistants in VS Code. +- [AI Integration](#ai-integration) — Seamlessly work with AI assistants in VS Code and Cursor. + +--- ## Create ### Create Snippet from open editor +Select code in any open editor and save it as a Snippet in a single action — the current selection becomes the Snippet value. + Create Snippet ### Create Snippet directly from the clipboard +Turn whatever you last copied into a Snippet without selecting anything in the editor, straight from your clipboard. + Create Snippet from Clipboard ### Create Snippet manually +Create an empty Snippet and type its content yourself — handy when the code isn't already in your editor or clipboard. + Create Snippet Manually +--- ## Open ### Open Snippet with a single click +Click a Snippet in the Snippets view to insert its content at the cursor in the active editor. + Open Snippet ### Drop Snippet directly into the editor +Drag a Snippet from the Snippets view and drop it exactly where you want it in the editor. + > You may need to hold `Shift` key while dragging to correctly drop the item in the editor. Open Snippet ### Copy Snippet to Clipboard +Copy a Snippet's content to the clipboard to paste it wherever you need, inside or outside the editor. + Copy Snippet to Clipboard ### Insert Snippet directly into Terminal +Send a Snippet straight to the integrated terminal instead of the editor — useful for commands you run often. + +> Enable `snippets.runCommandInTerminal` to have the inserted command executed automatically in the terminal. + Open Snippet in Terminal +--- + ## Search ### Use IntelliSense to quickly access all your Snippets -> You can set a special key to trigger IntelliSense from the extension settings. Default key is `>`. More about **IntelliSense** [here](https://code.visualstudio.com/docs/editor/intellisense). +Your Snippets appear as IntelliSense suggestions while you type, so you can insert them without leaving the keyboard. + +> Suggestions are toggled with `snippets.showSuggestions` and triggered by the `snippets.triggerKey` character (default `>`). Labels are camel-cased in suggestions when `snippets.camelize` is enabled. More about **IntelliSense** [here](https://code.visualstudio.com/docs/editor/intellisense). Open Snippet using Suggestions ### Search for Snippets using Command Palette +Fuzzy-search all your Snippets by name from the Command Palette and open the one you need. + Open Snippets from Command Palette @@ -99,47 +124,75 @@ alt="Native Search"> ### Preview Snippets before insertion +Hover a suggestion to preview the Snippet's content before inserting it, so you always pick the right one. + Preview Snippets +--- + ## Manage ### Drag and drop Snippets from one folder to another +Reorganize your library by dragging Snippets and folders into any folder in the tree. + Drag and Drop Snippets ### Reorder Snippets using Up and Down actions +Move a Snippet or folder up or down within its parent to arrange items in the exact order you want. + Reorder Snippets ### Sort alphabetically a Snippets folder or all your Snippets +Sort a single folder or your whole library alphabetically in one click when you'd rather not order items by hand. + Reorder Snippets ### Action Buttons -The extension now features enhanced action buttons throughout the interface for improved usability, making it easier to perform common operations with fewer clicks. +The extension features enhanced action buttons throughout the interface for improved usability, making it easier to perform common operations with fewer clicks. -> When Action Buttons are enabled, they become the primary method for interacting with Snippets in the Tree view, replacing the default click behavior. +> When Action Buttons are enabled, they become the primary method for interacting with Snippets in the Tree view, replacing the default click behavior. Set `snippets.openButton` to open a Snippet in the editor/terminal from the action buttons instead of by clicking its name. Action Buttons +--- + ## Customize + ### Set icons for your folders +Assign an icon to a folder from the **Edit Folder** screen to recognize it at a glance in the tree. + Set Folder Icon ### Color your folders -> Give a folder a color from the **Edit Folder** screen to make it stand out in the tree. By default the color cascades to the snippets and subfolders nested inside it. Set `snippets.disableFolderColorCascade` to limit the color to the folder and the items directly inside it instead. +Give a folder a color from the **Edit Folder** screen to make it stand out in the tree. By default the color cascades to the snippets and subfolders nested inside it. + +> Set `snippets.disableFolderColorCascade` to limit the color to the folder and the items directly inside it instead. + + + +### Open folders collapsed by default + +Folders can open collapsed so the tree stays compact, expanding one level at a time as you drill in instead of revealing the whole subtree at once. + +> Enable `snippets.collapseFolders` to turn this on. This change requires a window restart. ### Add a description to your Snippet +Add a free-text description to a Snippet to remind yourself what it does and when to use it. + > Descriptions show when hovering on top of a Snippet and in IntelliSense. Set Snippet Description ### Add a prefix to your Snippet -> When displaying Snippets using IntelliSense, custom prefix will be used instead of the original Snippet label. A prefix is a recommended shortcut for Snippets with long labels. +Give a Snippet a short custom prefix to use as its IntelliSense shortcut instead of its full label. + +> When displaying Snippets using IntelliSense, the custom prefix will be used instead of the original Snippet label. A prefix is a recommended shortcut for Snippets with long labels. Set Snippet Prefix ### Prefix all your Snippets -You can set a prefix for all your snippets to distinguish them from other VS Code and Cursor snippets. -- set a keyword for the setting `Snippets: Global Prefix` e.g `snipp` -- suggestions coming from your custom Snippets will be prefixed in IntelliSense +Set a single global prefix for every Snippet to distinguish them from other VS Code and Cursor snippets in IntelliSense. + +- set a keyword for the setting `snippets.globalPrefix` (e.g `snipp`) +- suggestions coming from your custom Snippets will be prefixed in IntelliSense -> An [explicit prefix](#add-a-prefix-to-your-snippet) in a single Snippet will override Global Prefix settings. +> An [explicit prefix](#add-a-prefix-to-your-snippet) on a single Snippet overrides the Global Prefix setting. > > For example, if the global prefix in your settings is set to `foo`, and a custom snippet is explicitly prefixed with `boo`, the latter will be displayed in IntelliSense as `boo`. All other snippets with no explicit prefix will be displayed as `foo`. Global Prefix +### Redesigned snippet editor + +The snippet editor uses a two-panel layout: the snippet value on one side and its properties (description, prefix, language, syntax resolving) on the other, making longer snippets easier to edit at a glance. + +> Enable `snippets.expertMode` to always show the advanced options by default when editing a Snippet. + + + +--- ## Sync ### Import and Export Snippets using JSON files +Back up your whole library to a JSON file and import it back on another machine, or share it with teammates. + +> Two import modes are available: **Import data** replaces all your global snippets with the imported ones (a backup is kept for rollback), while **Import Snippets into New Folder** adds the imported snippets under a dedicated `Imported Snippets` folder without overwriting anything you already have. + Import and Export Snippets -### Import VS Code Snippets to Cursor or Windsurf +### Import VS Code Snippets to Cursor or Devin AI (aka Windsurf) -You can import your existing VS Code snippets directly to Cursor or Windsurf combining the best snippets you collected for both editors. +You can import your existing VS Code snippets directly to Cursor or Devin AI (aka Windsurf), combining the best snippets you collected for both editors. ### Sync Snippets between multiple devices -> **⚠ Experimental feature:** feel free to [file a bug](https://github.com/tahabasri/snippets/issues/new?labels=bug) as this is still an experimental change. +Starting with version 2.0 and up, *Snippets* supports backup using the **VS Code Settings Sync** feature. Your snippets are saved alongside your VS Code data no matter your operating system. -Starting with version 2.0 and up, *Snippets* supports backup using **VS Code Settings Sync** feature. Your snippets will be saved alongside your VS Code data no matter your operating system. +> **⚠ Experimental feature:** feel free to [file a bug](https://github.com/tahabasri/snippets/issues/new?labels=bug) as this is still an experimental change. -Check the [docs](https://code.visualstudio.com/docs/editor/settings-sync) to know more about **Settings Sync** feature and how to use it. +Check the [docs](https://code.visualstudio.com/docs/editor/settings-sync) to know more about the **Settings Sync** feature and how to use it. ### Sync your Snippets with a Version Control System A large number of users utilize a VCS (e.g Git) and may need to associate a set of snippets with a specific project (e.g sharing project-specific snippets with team members). This can be achieved by enabling the `snippets.useWorkspaceFolder` setting. Once this option is enabled, the extension will read/write snippets to/from the `.vscode/snippets.json` file if it's available (the extension will prompt you to create the file the first time you enable this option). -> Note: Workspace snippets are excluded from synchronization via **Settings Sync**. You will be responsible for backing up the `.vscode/snippets.json` file using your favorite VSC. +> Note: Workspace snippets are excluded from synchronization via **Settings Sync**. You will be responsible for backing up the `.vscode/snippets.json` file using your favorite VCS. +--- ## Boost ### Bind Snippets to Programming Languages -Snippets created from a language specific editor/file will keep reference of the programming language used. The same Snippet will be suggested only in editors/files of same programming language. +Snippets created from a language-specific editor/file keep a reference to the programming language used, and are suggested only in editors/files of the same programming language. -> A Snippet bound to a programming language will get an icon for that particular language natively. +> A Snippet bound to a programming language gets an icon for that particular language natively. Bind Snippets to Languages @@ -216,13 +287,17 @@ Snippets saved without a language scope are **global**: they appear in IntelliSe ### Resolve Snippet Syntax +Snippets can contain VS Code snippet syntax (tab stops, placeholders, variables) that is resolved on insertion instead of being pasted literally. + > Learn more about the Snippet syntax [here](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax). > -> Option to **Resolve Snippet Syntax** is disabled by default for new Snippets, you may need to edit the Snippet to enable it. +> The **Resolve Snippet Syntax** option is disabled by default for new Snippets — you may need to edit the Snippet to enable it. Open Snippet with Variables +--- + ## AI Integration Seamlessly integrate your snippets with AI assistants in VS Code and Cursor: @@ -236,7 +311,7 @@ Use your snippets directly with GitHub Copilot Chat for enhanced productivity an Ask Github Copilot using Snippets -- Use code snippets directly in Github Copilot +- Use code snippets directly in Github Copilot. Add Code Snippets to Github Copilot @@ -257,6 +332,30 @@ alt="Use Snippets with Gemini Code Assist"> **Enjoy!** +--- + +## Settings + +All settings are exposed under the `Snippets` section of VS Code Settings (`Ctrl`/`Cmd` + `,`). Settings noted as requiring a window restart take effect only after reloading the window. + +| Setting | Default | Description | +| --- | --- | --- | +| `snippets.useWorkspaceFolder` | `false` | Save snippets to a `.vscode/snippets.json` file in the current workspace instead of (or in addition to) the global store. See [Sync with a VCS](#sync-your-snippets-with-a-version-control-system). | +| `snippets.showSuggestions` | `true` | Show Snippets as IntelliSense suggestions while typing. | +| `snippets.triggerKey` | `>` | Single character typed to trigger Snippets suggestions. *Requires a window restart.* | +| `snippets.globalPrefix` | *(empty)* | Default prefix applied to Snippets that have no explicit prefix; they are suggested as `prefix:snippetName` (max 5 characters). *Requires a window restart.* | +| `snippets.confirmBeforeDeletion` | `true` | Ask for confirmation before deleting a Snippet or folder. | +| `snippets.runCommandInTerminal` | `false` | Automatically execute a Snippet in the terminal when it is opened there. | +| `snippets.camelize` | `true` | Camel-case Snippet labels in suggestions (`awesome-and-cool snippet` → `awesomeAndCoolSnippet`). | +| `snippets.expertMode` | `false` | Show the advanced options by default when editing a Snippet. | +| `snippets.openButton` | `false` | Use the action buttons to open a Snippet in the editor/terminal, disabling open-on-name-click. | +| `snippets.collapseFolders` | `false` | Open folders collapsed, expanding one level at a time. *Requires a window restart.* | +| `snippets.disableFolderColorCascade` | `false` | Limit a folder's color to the folder and the items directly inside it, instead of cascading to all nested descendants. | + +> `snippets.snippetsLocation` is **deprecated**. The default storage is now VS Code `globalState` (which syncs across machines); use `snippets.useWorkspaceFolder` for file-based, project-scoped storage instead. + +--- + ## FAQ ### Q: Is there a limit on the number of snippets/folders I can create? @@ -272,10 +371,10 @@ alt="Use Snippets with Gemini Code Assist"> **A: Yes, you can enable `Resolve Snippet Syntax` for a particular snippet and use [VS Code Tab Stops](https://code.visualstudio.com/docs/editor/userdefinedsnippets#_tabstops).** ### Q: How do I use snippets with AI assistants? -**A: The extension now integrates with GitHub Copilot Chat, Cursor Pane, and Gemini Code Assist. Check the [AI Integration](#ai-integration) section for details.** +**A: The extension integrates with GitHub Copilot Chat, Cursor Pane, and Gemini Code Assist. Check the [AI Integration](#ai-integration) section for details.** -### Q: I'm switching to Cursor/Windsurf. How do I import my existing VS Code snippets? -**A: You can import your VS Code snippets directly to Cursor/Windsurf using the import feature. See the [Import VS Code Snippets to Cursor Position](#import-vs-code-snippets-to-cursor-or-windsurf) section.** +### Q: I'm switching to Cursor/Devin AI (aka Windsurf). How do I import my existing VS Code snippets? +**A: You can import your VS Code snippets directly to Cursor/Devin AI (aka Windsurf) using the import feature. See the [Import VS Code Snippets to Cursor or Devin AI](#import-vs-code-snippets-to-cursor-or-devin-ai-aka-windsurf) section.** ## Known Issues diff --git a/images/features/070-folder-colors.png b/images/features/070-folder-colors.png new file mode 100644 index 0000000000000000000000000000000000000000..76fd111c5ca78b313062e2f62a3601eedcbb16dc GIT binary patch literal 10225 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 S4A!OxCoLf_UL|Va|Nj6P5=^`R literal 0 HcmV?d00001 diff --git a/images/features/071-snippet-editor.gif.png b/images/features/071-snippet-editor.gif.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9434ecd7222f3e3547a12c699bd8181dff5141 GIT binary patch literal 34098 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 C_dhNG literal 0 HcmV?d00001 From b2ea8797fefe226d4109772477ef54e62d9a60d1 Mon Sep 17 00:00:00 2001 From: Taha Basri Date: Sun, 28 Jun 2026 18:38:07 +0400 Subject: [PATCH 4/5] Remove yellow banner on marketplace page --- package.json | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 30317b3..f1c46dd 100644 --- a/package.json +++ b/package.json @@ -40,10 +40,6 @@ "Code Block", "IntelliSense" ], - "galleryBanner": { - "color": "#ffc107", - "theme": "dark" - }, "activationEvents": [ "onStartupFinished" ], @@ -62,7 +58,7 @@ }, { "view": "snippetsExplorer", - "contents": "In order to use snippets, save some code here.\n[Add Snippet](command:globalSnippetsCmd.addSnippet)\n[Add Snippet Folder](command:globalSnippetsCmd.addSnippetFolder)\n[Import Snippets](command:globalSnippetsCmd.importSnippets)\nTo import Snippets from VS Code, you can export them from an open VS Code window, and then, use the Import Snippets command in Windsurf.\nTo learn more about how to use snippets [read the docs](https://github.com/tahabasri/snippets/blob/main/README.md#features).", + "contents": "In order to use snippets, save some code here.\n[Add Snippet](command:globalSnippetsCmd.addSnippet)\n[Add Snippet Folder](command:globalSnippetsCmd.addSnippetFolder)\n[Import Snippets](command:globalSnippetsCmd.importSnippets)\nTo import Snippets from VS Code, you can export them from an open VS Code window, and then, use the Import Snippets command in Devin AI (aka Windsurf).\nTo learn more about how to use snippets [read the docs](https://github.com/tahabasri/snippets/blob/main/README.md#features).", "when": "snippets.host == windsurf" }, { @@ -155,12 +151,12 @@ }, { "command": "globalSnippetsCmd.addToCursorAIPane", - "title": "Add to Cursor AI Pane", + "title": "Add to Cursor Pane", "category": "Snippets" }, { "command": "globalSnippetsCmd.addAsCodeSnippetToCursorAIPane", - "title": "Add as Code Snippet to Cursor AI Pane", + "title": "Add as Code Snippet to Cursor Pane", "category": "Snippets" }, { From 9d9b190fec4fdbd30c0ef0957c0252a1ad5ff8cb Mon Sep 17 00:00:00 2001 From: Taha Basri Date: Sun, 28 Jun 2026 18:45:52 +0400 Subject: [PATCH 5/5] Update marketplace badges --- README.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index b49eea4..442950e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ -![Visual Studio Marketplace Version](https://img.shields.io/visual-studio-marketplace/v/tahabasri.snippets.svg?style=flat-square) -![Visual Studio Marketplace Installs](https://img.shields.io/visual-studio-marketplace/i/tahabasri.snippets.svg?style=flat-square) -![Visual Studio Marketplace Downloads](https://img.shields.io/visual-studio-marketplace/d/tahabasri.snippets.svg?style=flat-square) -![Visual Studio Marketplace Rating](https://img.shields.io/visual-studio-marketplace/r/tahabasri.snippets.svg?style=flat-square) -![GitHub Repo stars](https://img.shields.io/github/stars/tahabasri/snippets) -![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/tahabasri/snippets/unit-tests.yml) -![The MIT License](https://img.shields.io/badge/license-MIT-orange.svg?style=flat-square) +[![Visual Studio Marketplace Version](https://vsmarketplacebadges.dev/version/tahabasri.snippets.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=tahabasri.snippets) +[![Open VSX Version](https://img.shields.io/open-vsx/v/tahabasri/snippets?style=flat-square&label=Open%20VSX&logo=eclipseide&logoColor=white&color=a60ee5)](https://open-vsx.org/extension/tahabasri/snippets) +[![Visual Studio Marketplace Installs](https://vsmarketplacebadges.dev/installs/tahabasri.snippets.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=tahabasri.snippets) +[![Visual Studio Marketplace Downloads](https://vsmarketplacebadges.dev/downloads/tahabasri.snippets.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=tahabasri.snippets) +[![Visual Studio Marketplace Rating](https://vsmarketplacebadges.dev/rating-star/tahabasri.snippets.svg?style=flat-square)](https://marketplace.visualstudio.com/items?itemName=tahabasri.snippets&ssr=false#review-details) +[![GitHub Repo stars](https://img.shields.io/github/stars/tahabasri/snippets?style=flat-square&logo=github&logoColor=white&color=2bbc8a)](https://github.com/tahabasri/snippets/stargazers) +[![Build Status](https://img.shields.io/github/actions/workflow/status/tahabasri/snippets/unit-tests.yml?style=flat-square&logo=githubactions&logoColor=white&label=tests)](https://github.com/tahabasri/snippets/actions/workflows/unit-tests.yml) +![The MIT License](https://img.shields.io/badge/license-MIT-orange?style=flat-square&logo=opensourceinitiative&logoColor=white) # Snippets — Supercharge Snippets in VS Code and Cursor