Skip to content
| Marketplace
Sign in
Visual Studio Code>Snippets>DevStackNew to Visual Studio Code? Get it now.
DevStack

DevStack

skyler

|
179 installs
| (0) | Free
DevStack - The Complete Developer Toolkit - Virtual file system, workflow automation, and more than 101+ other development tools / features in one seamless extension. Cutting down dev times never before seen.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

DevStack

Elevate your development environment with precision-engineered tooling. DevStack represents a comprehensive integration of over 101+ essential development utilities within a unified VSCode extension, providing complete functionality while maintaining optimal performance standards and system resource efficiency.

Before continuing, read First...

To facilitate navigation through this comprehensive documentation—which encompasses functionality equivalent to over 100 extensions—each section includes direct links to corresponding detailed documentation for deeper exploration. The modular architecture allows individual features to be utilized independently, eliminating the need to master the entire system before implementation. For those preferring a complete walkthrough, the full documentation site provides sequential coverage of all capabilities. This documentation structure prioritizes recently introduced features at the top, enabling existing users to quickly identify and adopt new functionality. Given the extensive scope of available tools and features, this approach ensures that valuable additions remain visible and accessible to the established user base. New users are recommended to begin with the foundational concepts outlined in the Virtual Filing System section. It has reached a point where, I will no longer update the number of extensions replaced. Just fyi, its probably at a higher value.

Features

NEW - The VSCode Performance Switch - Visit Section

  • this is to get back as much performance as we can when we work on either certain files that are VERY large. Where the background process, just choke so hard you can no longer edit that file? So why can't we just turn off everything while we work on that one file, and turn it back on after? Or when we really need it, we will have the option to turn everything off. Literally getting all the performance back that vscode takes from us. Once your done working with those files, flip the switch to turn everything back on
  • SO theres going to be two switches
    • The Single File Mode, one that turns everything off so you can work in that one file, so everything that is related to that file type will be turned off and when your done. You just flip the switch back, turning everything back on again.
      • this will have the functionality that, when you close the file that you were working on when you disabled everything, it will automatically restore everything for you
    • The Duke NUKEM Mode, WILL TURN ABSOLUTELY EVERYTHING OFF NO MATTER WHAT IT IS, IF IT CAN BE ASSIGNed A FALSE VALUE... IT WILL GET SAID VALUE. Then whenever you don't need such an extreme enviroment, flip the switch back, turning everything back on

Why would you need such measures? Weirdly enough, I have a really good computer, but due to file sizes, we need to get as much performance back as possible.

While not everything file I work on is like this ( thank god ), there are, in my case, quite a few files I have to deal with where it makes working with them impossible. To the point where, when you paste data, you then have to sit there for 5, 6, 7, 11 minutes just for vscode to be ok again.

I tried to do a quick search to see if there are currently any extensions that would, do just this, but I can't seem to find one. Like whats my other option when dealing with these files? Opening them in notepad++? lol

WARNING: this wont be for everyone... because this will literally, I mean literally, turn absolutely everything off that I can find that will allow me to turn it off. WHICH MEANS, if something were to happen and the switch to turn it back on, doesn't work... this is worse case scenario, but stuff happens. Whether it's an edge case, or something no one has thought of before or has happened to them before, may happen to you. So please do not use this, IF YOU ARE NOT COMFORTABLE with this.

What are we going to be turning off exactly, the global option will be disabling all extensions along with the following:

Duke NUKEM Mode...
 const SETTINGS_TO_DISABLE = {
    'editor.suggest.enabled': false,
    'editor.parameterHints.enabled': false,
    'editor.hover.enabled': false,
    'editor.codeLens': false,
    'editor.inlayHints.enabled': 'off',
    'editor.lightbulb.enabled': 'off',
     'editor.suggestOnTriggerCharacters': false, 
    'editor.suggestSelection': 'never',
    'javascript.validate.enable': false,
    'typescript.validate.enable': false,
    'eslint.enable': false,
    'css.validate': false,
    'html.validate.scripts': false,
    'json.validate.enable': false,
    'editor.formatOnType': false,
    'editor.formatOnPaste': false,
    'editor.semanticHighlighting.enabled': false,
    'editor.foldingStrategy': 'indentation',
    'editor.minimap.enabled': false,
    'breadcrumbs.enabled': false,
    'problems.decorations.enabled': false,
    'prettier.enable': false,
    'sonarlint.disableTelemetry': true,
    'editor.fontLigatures': false, 
    'editor.matchBrackets': 'never', 
    'editor.renderLineHighlight': 'none', 
    'editor.renderWhitespace': 'none', 
    'editor.wordWrap': 'off', 
    'editor.stickyScroll.enabled': false, 
    'workbench.editor.enablePreview': false, 
    'workbench.startupEditor': 'none', 
    'workbench.tree.renderIndentGuides': 'none', 
    'workbench.activityBar.visible': false,  
    'explorer.compactFolders': false, 
    'scm.alwaysShowProviders': false, 
    'git.autofetch': false, 
    "telemetry.telemetryLevel": "off",
    "update.mode": "none",
    "extensions.autoUpdate": false,
    "extensions.autoCheckUpdates": false,
    "extensions.ignoreRecommendations": true,
    "workbench.enableExperiments": false,
    "settingsSync.enabled": false,
    "workbench.settings.enableNaturalLanguageSearch": false,
    "files.watcherExclude": {
        "**/*": true
    },
    "search.exclude": {
        "**/*": true
    },
    "files.autoSave": "off",
    "git.enabled": false,
    "scm.autoReveal": false,
    "workbench.editor.sharedProcess.enable": false, 
    "editor.quickSuggestions": {
        "other": "off",
        "comments": "off",
        "strings": "off"
    },
    "editor.wordBasedSuggestions": "off",
    "editor.acceptSuggestionOnEnter": "off",
    "editor.inlineSuggest.enabled": "false",
    "editor.formatOnSave": false,
    "editor.codeActionsOnSave": null, 
};

Single File Mode...
const FILE_TYPE_SETTINGS = {
    'javascript': {
        'javascript.validate.enable': false,
        'javascript.suggest.enabled': false,
        'javascript.suggestionActions.enabled': false,
        'javascript.inlayHints.enumMemberValues.enabled': false,
        'javascript.inlayHints.functionLikeReturnTypes.enabled': false,
        'javascript.inlayHints.parameterNames.enabled': 'none',
        'javascript.inlayHints.parameterTypes.enabled': false,
        'javascript.inlayHints.propertyDeclarationTypes.enabled': false,
        'javascript.inlayHints.variableTypes.enabled': false,
        'javascript.updateImportsOnFileMove.enabled': false,
        'javascript.referencesCodeLens.enabled': false,
        'eslint.enable': false,
        'eslint.run': false, 
        'javascript.suggest.autoImports': false,
        'javascript.suggest.completeJSDocs': false,
        'javascript.format.enable': false,
        'javascript.autoClosingTags': false,
    },
    'typescript': {
        'typescript.validate.enable': false,
        'typescript.suggest.enabled': false,
        'typescript.suggestionActions.enabled': false,
        'typescript.inlayHints.enumMemberValues.enabled': false,
        'typescript.inlayHints.functionLikeReturnTypes.enabled': false,
        'typescript.inlayHints.parameterNames.enabled': 'none',
        'typescript.inlayHints.parameterTypes.enabled': false,
        'typescript.inlayHints.propertyDeclarationTypes.enabled': false,
        'typescript.inlayHints.variableTypes.enabled': false,
        'typescript.updateImportsOnFileMove.enabled': false,
        'typescript.referencesCodeLens.enabled': false,
        'typescript.implementationsCodeLens.enabled': false,
      //  'typescript.tsserver.maxTsServerMemory': 512, // Reduce memory
        'eslint.enable': false,
        'typescript.suggest.autoImports': false,
        'typescript.suggest.completeJSDocs': false,
        'typescript.updateImportsOnPaste.enabled': false,
        'typescript.format.enable': false,
        'typescript.autoClosingTags': false,
    },
    'python': {
        'python.linting.enabled': false,
        'python.linting.pylintEnabled': false,
        'python.linting.flake8Enabled': false,
        'python.linting.mypyEnabled': false,
        'python.analysis.diagnosticMode': 'off',
        'python.analysis.typeCheckingMode': 'off',
        'python.languageServer': 'None',
        'python.analysis.completeFunctionParens': false,
        'python.analysis.autoImportCompletions': false,
        'pylint.enabled': false,
        'isort.check': false,
        'black-formatter.showNotifications': 'off',
    },
    'json': {
        'json.validate.enable': false,
        'json.schemas': [], 
        'json.schemaDownload.enable': false,
		  'json.format.enable': false,
    },
    'jsonc': {
      'json.validate.enable': false,
        'json.schemas': [], 
        'json.schemaDownload.enable': false,
		  'json.format.enable': false,
    },
    'css': {
        'css.validate': false,
        'css.lint.emptyRules': 'ignore',
        'css.lint.unknownAtRules': 'ignore',
        'css.colorDecorators.enable': false,
    },
    'scss': {
        'scss.validate': false,
        'scss.lint.emptyRules': 'ignore',
        'scss.lint.unknownAtRules': 'ignore',
        'scss.colorDecorators.enable': false,
    },
    'less': {
        'less.validate': false,
        'less.lint.emptyRules': 'ignore',
        'less.colorDecorators.enable': false,
    },
    'html': {
        'html.validate.scripts': false,
        'html.validate.styles': false,
        'html.autoClosingTags': false,
        'html.suggest.html5': false,
    },
    'php': {
        'php.validate.enable': false,
        'php.suggest.basic': false,
        'intelephense.diagnostics.enable': false,
    },
    'go': {
        'go.lintOnSave': 'off',
        'go.vetOnSave': 'off',
        'go.buildOnSave': 'off',
        'go.diagnostic.vulncheck': 'Off',
        'gopls': { 'ui.diagnostic.analyses': {} },
    },
    'rust': {
        'rust-analyzer.checkOnSave.enable': false,
        'rust-analyzer.diagnostics.enable': false,
        'rust-analyzer.inlayHints.chainingHints.enable': false,
        'rust-analyzer.inlayHints.parameterHints.enable': false,
        'rust-analyzer.completion.autoimport.enable': false,
    },
    'cpp': {
        'C_Cpp.intelliSenseEngine': 'disabled',
        'C_Cpp.errorSquiggles': 'disabled',
        'C_Cpp.autocomplete': 'disabled',
        'C_Cpp.dimInactiveRegions': false,
    },
    'c': {
        'C_Cpp.intelliSenseEngine': 'disabled',
        'C_Cpp.errorSquiggles': 'disabled',
        'C_Cpp.autocomplete': 'disabled',
        'C_Cpp.dimInactiveRegions': false,
    },
    'java': {
        'java.errors.incompleteClasspath.severity': 'ignore',
        'java.configuration.checkProjectSettingsExclusions': false,
        'java.autobuild.enabled': false,
        'java.completion.enabled': false,
    },
    'csharp': {
        'omnisharp.enableEditorConfigSupport': false,
        'omnisharp.enableImportCompletion': false,
        'omnisharp.enableRoslynAnalyzers': false,
    },
    'markdown': {
        'markdown.validate.enabled': false,
        'markdown.extension.toc.updateOnSave': false,
    },
    'yaml': {
        'yaml.validate': false,
        'yaml.schemaStore.enable': false,
        'redhat.telemetry.enabled': false,
    },
    'xml': {
        'xml.validation.enabled': false,
    },
    'vue': {
        'vetur.validation.template': false,
        'vetur.validation.script': false,
        'vetur.validation.style': false,
    },
    'svelte': {
        'svelte.plugin.svelte.diagnostics.enable': false,
        'svelte.plugin.typescript.diagnostics.enable': false,
    }
};

NEW - Reporting Page - Visit Section

NEW - Live React / Tailwind Playground - Visit Section

NEW - Wizards Section - Visit Section

NEW - Custom .VSIX Packager - Visit Section

NEW - AI Chat and Error Fixer ( previously Find Errors and Missing Imports ) - Visit Section

NEW - Catalyst UI Sidebar Update - Visit Section

NEW - Smaller But Rather Nice Updates, Long In The Making - Visit Section

DevStack Quickpic... finally getting that upgrade...
  • even though I barely use ALL of its items, I actually open this quickpic ALOT so while I am focusing on just getting the site back up I apparently have time to wait and while things are... doing its thing in vscode so I might as well start on this

  • whole menu, virtually got nuked

  • G3 - from here on out, if you ever see G3 anywhere its github add, commit, push

  • G4 - the forth being upgrade patch

  • G4 & X-VSCE - adding on custom vsce packager ( that turned out to be annoying... but it's done and it works great )

  • G4 & Pub To NPM - self explanitory, publishes to npm

  • PRISMA DB SECTION

    • * Remote - we all know star means all, so if like me, you have a remote db and local db to work with, this sets the remote url to DATABASE_URL and does every thing in order to make this work have the following values set accordingly
      • LOCAL="postgresql://...."
      • REMOTE="postgresql://....."
      • DATABASE_URL=""
    • * Local - does the same for local
    • Reset - resets db
    • Push - pushes db
    • Seed - seed db
    • Gen - db generate
    • Studio - db studio
  • FILE SYSTEM SECTION

    • Clean * - clean all, this is an example I will be converting this and it will not just work on pnpm but will work on all pkg mgrs, foreach ($path in @('.cache', 'build', 'node_modules', 'pnpm-lock.yaml', 'public\build' )) { if (Test-Path $path) { Remove-Item -Path $path -Recurse -Force -ErrorAction SilentlyContinue } }
    • Duke NUKEM - a nuclear option of the above and below, a one button does all type deal if, something shits somewhere in your project and you don't know where, lol, I don't know how else to explain it
    • I - install
    • build - build
  • VSCODE Section

    • R EXT - these will be soft restarts and will solve a lot of issues you may run into, restart of extensions
    • R TS - resart ts server
    • R Window - hard restart of workspace actually restarting the instance
    • DevTools - opens devtools

NEW - Blued Out - Visit Section

NEW - A Deterministic AI Engine Compiler - Visit Section

NEW - Type of item for the sidebar / virtual filing system - Visit Section

NEW - Install Catalyst ui library - Visit Section

NEW - Catalyst UI - Visit Section

NEW - Shortcuts - Visit Section

Everything beyond this point, would not be considered 'new' functionality. If your already familiar with the extension, your safe to stop here.

Virtual Filing System

  • Comprehensive organization system that eliminates the need for multiple extensions
  • UI for creating, editing, and moving folders/items without manual config editing
  • Supports multiple item types: files, folders, URLs, commands, snippets, chains
  • Project-agnostic configuration with global and workspace-specific settings

For detailed usage instructions and advanced features, visit the complete documentation

Virtual Filing System Usage

For detailed usage instructions and advanced features, visit the complete documentation

VSCode Commands

  • Preset VSCode, PowerShell, and Bash commands with required flags
  • Cheat sheet with 360+ commonly used commands
  • Easy command creation and management

For detailed usage instructions and advanced features, visit the complete documentation

PowerShell Commands

For detailed usage instructions and advanced features, visit the complete documentation

Debian WSL Bash Commands

For detailed usage instructions and advanced features, visit the complete documentation

VSCode Commands Cheat Sheet

For detailed usage instructions and advanced features, visit the complete documentation

Chain Execution & Creating Command Chains

Details...
  • Execute sequences of VSCode/shell commands with one click
  • No limits on command quantity or length
  • Hidden commands keep navigation clean while allowing complex workflows
  • Open the DevStack sidebar
  • Navigate to "Create Chain"
  • Add commands with labels and paths
  • Reorder execution as needed
  • Save to make available in your workflow
  • Configuration
  • File Locations Global config: AppData/Roaming/Code/User/globalStorage/skyler.ocrmnav/global-navigator-config.json
  • Workspace config: AppData/Roaming/Code/User/globalStorage/skyler.ocrmnav/project-configs/project-{uniqueID}.json
  • Global snippets: AppData/Roaming/Code/User/globalStorage/skyler.ocrmnav/ocrmnavigator.code-snippets

For detailed usage instructions and advanced features, visit the complete documentation

The filing system is virtual - original files remain unchanged Folders support two levels of depth (three with hidden items) Markdown files are stored in .vscode folder All changes are saved to JSON configuration files

Concurrent Command Execution

For detailed usage instructions and advanced features, visit the complete documentation

Config file

For detailed usage instructions and advanced features, visit the complete documentation

Project Agnostic Configuration

For detailed usage instructions and advanced features, visit the complete documentation

Markdown Editor and Viewer

  • Rich text editor with live preview
  • File explorer and outline navigation
  • Focus mode and export capabilities

For detailed usage instructions and advanced features, visit the complete documentation

Markdown Cheat Sheet

  • Cheat sheet with GitHub-flavored Markdown examples

For detailed usage instructions and advanced features, visit the complete documentation

Readme Generator

For detailed usage instructions and advanced features, visit the complete documentation

Snippets

  • Global snippet management
  • Intuitive creation/editing interface
  • Fuzzy search and quick insertion
  • Automatic workspace synchronization

For detailed usage instructions and advanced features, visit the complete documentation

Snippets Viewer

For detailed usage instructions and advanced features, visit the complete documentation

Editor Context Snippets

For detailed usage instructions and advanced features, visit the complete documentation

Context Snippets

For detailed usage instructions and advanced features, visit the complete documentation

File Formatting

  • Live preview of formatting changes
  • 33+ supported file types (expanding to 72)
  • Sticky preview panel that follows your scroll
  • Right-click formatting options

For detailed usage instructions and advanced features, visit the complete documentation

Inline Imports

For detailed usage instructions and advanced features, visit the complete documentation

Remove Trailing Commas

For detailed usage instructions and advanced features, visit the complete documentation

Batch Rename

  • Batch Rename: Mass edit filenames via generated .txt file

For detailed usage instructions and advanced features, visit the complete documentation

Add Missing Imports w/ Global Config

For detailed usage instructions and advanced features, visit the complete documentation

Add ESLint & Prettier Configs

For detailed usage instructions and advanced features, visit the complete documentation

Remix Run

For detailed usage instructions and advanced features, visit the complete documentation

npx create-remixv2

Details...

Insurance policy, because personally, I don't know what remix's plans are exactly. One minute they're telling everyone to use another platform, the next they quitely remind everyone that v3 is coming out? I've never seen any... brand, company, what have you, tell their clients / users to go else where. Loosing a lot of people in the process, who would have stayed. To then say, oh our next product is coming out.

npx create-remixv2
  • Choose package manager and template at build time
  • Select from 30+ popular stacks
  • Custom stack reference via user/repo

For detailed usage instructions and advanced features, visit the complete documentation

Auto Create Action

  • Form Detection: Scans for
    and fetcher.Form components
  • Intent + Schema Parsing: Extracts intent from form data
  • Prisma Method Inference: Auto-detects CRUD operations
  • VS Code Integration: Works with active editor, shows warnings when no forms found

For detailed usage instructions and advanced features, visit the complete documentation

Bane Remix Run Stack

For detailed usage instructions and advanced features, visit the complete documentation

Context Components / Functions

For detailed usage instructions and advanced features, visit the complete documentation

V2 -> V1 Routing Convention Conversion

  • Converts route conventions automatically
  • Safety rollback if issues occur
  • Warning: Always push before conversion

For detailed usage instructions and advanced features, visit the complete documentation

Convert single project app to mono repo

For detailed usage instructions and advanced features, visit the complete documentation

Open Route File In Browser - Remix Run

  • Browser preview functionality
  • URL copying to clipboard

For detailed usage instructions and advanced features, visit the complete documentation

Create Route Files - Remix Run

  • Quick route file creation

For detailed usage instructions and advanced features, visit the complete documentation

Context Components / Functions - Remix-Run

  • Right-click in editor → Remix Components → Select component to insert

For detailed usage instructions and advanced features, visit the complete documentation

Routing Convention Conversion Remix-Run

For detailed usage instructions and advanced features, visit the complete documentation

Install Auth in Remix w/ Auth Routes

  • One-click auth setup with routes
  • OTP implementation available
  • Installs all required dependencies

For detailed usage instructions and advanced features, visit the complete documentation

Install OTP Into Remix w/ Auth Routes

For detailed usage instructions and advanced features, visit the complete documentation

Create Tests for Routes and Actions In Remix-Run

  • Creates comprehensive test files in routes/tests/
  • Auto-generates tests for all prismaexport functions
  • Includes parameter type validation

For detailed usage instructions and advanced features, visit the complete documentation

React-Router

For detailed usage instructions and advanced features, visit the complete documentation

Convert Remix Run to X Platform

For detailed usage instructions and advanced features, visit the complete documentation

VSCode Color Theme Builder

  • Theme Application Options
  • Preset Themes: Apply professional designs in <15s
  • Quick Customization: Modify core colors in <5min
  • Full Palette: Comprehensive color selection
  • Manual Control: Fine-tune every element
  • Export & Save Options
  • Tailwind Export: Generate CSS classes for projects
  • VSCode Copy: Export theme to clipboard
  • Workspace Save: Auto-saves to .vscode/settings.json
  • Global Save: Applies across all workspaces

For detailed usage instructions and advanced features, visit the complete documentation

Blacked Out

  • Minimalist all-black theme
  • Reduces eye strain on large monitors
  • Mutes distracting UI elements
  • Preserves code readability

For detailed usage instructions and advanced features, visit the complete documentation

Window Differentiator

  • Color-codes workspace windows
  • Subtle visual indicators
  • Preserves your preferred theme
  • Random color selection from curated palette

For detailed usage instructions and advanced features, visit the complete documentation

Reset - Window Differentiator

For detailed usage instructions and advanced features, visit the complete documentation

Add ShadCN Components To Your Project

  • Component Management
  • Right-click to add components
  • One-click full installation
  • Includes all dependencies

For detailed usage instructions and advanced features, visit the complete documentation

Install ShadCN Components w/All Components

For detailed usage instructions and advanced features, visit the complete documentation

GitHub Repo Management

  • Auto Commit & Push: Stages, commits, and pushes changes with automatic messages
  • Version Control: Auto-upgrades patch version and pushes to GitHub
  • VSIX Management: Creates, reveals, and installs VSIX packages with one click
  • "Yeet" Command: Complete workflow (save → commit → version → build → publish)

For detailed usage instructions and advanced features, visit the complete documentation

Open Repo in Browser

  • Right-click → "Open GitHub Repo in Browser"
  • Direct access to repository from any file

For detailed usage instructions and advanced features, visit the complete documentation

Open GitHub Repo At File

this is NOT replacing the original variant...
  • instead of just opening your repo in the browser, it will navigate to the file within the repo from where you activated this function
  • I use this, way more than I thought I would. But it triggers me every time I use it, then having to still navigate to the file from where I activated the function. Some code bases, we all know how easy it is to get around. But if it's a larger code base with github's annoying nuances within the sidebar nav... fuck that... I know, talk about first world coding problems, but still triggers me when it shouldn't obviously this extension pampers you
  • it should reside right underneath the original variant for easy access
  • sigh, the dev host is bugging out not allowing me to test... fuck, well... when in doubt, yeet, I guess
  • Borat voice: "Yeet was great success!"

For detailed usage instructions and advanced features, visit the complete documentation

Create include object

For detailed usage instructions and advanced features, visit the complete documentation

Create action object

For detailed usage instructions and advanced features, visit the complete documentation

Click To Schema Object

  • Right-click model name → "Open Schema Object"
  • Jumps directly to schema definition

For detailed usage instructions and advanced features, visit the complete documentation

Generate Crud Resolvers / Rest End Points

  • Automatic resolver/REST endpoint creation
  • Hover preview before generation
  • Right-click → Prisma submenu → "CRUD"

For detailed usage instructions and advanced features, visit the complete documentation

VSCode Extension Management For Devs

For detailed usage instructions and advanced features, visit the complete documentation

File Nesting

For detailed usage instructions and advanced features, visit the complete documentation

Reveal In Explorer

  • Reveal in Explorer: Right-click in extensions pane

For detailed usage instructions and advanced features, visit the complete documentation

Copy Path

  • Copy Path: Right-click in extensions pane

For detailed usage instructions and advanced features, visit the complete documentation

Bookmarks

  • Line-specific markers
  • Stores up to 20 bookmarks
  • Status bar access

For detailed usage instructions and advanced features, visit the complete documentation

Extension Produced Messages

For detailed usage instructions and advanced features, visit the complete documentation

Search Bar

  • Search Bar
  • Title bar button for instant access
  • Workspace-scoped quick searching
  • Config file: .vscode/ocrmnavigator/search-config.json

For detailed usage instructions and advanced features, visit the complete documentation

Clipboard History Pro

  • Last 20 clipboard items
  • Hover previews
  • Status bar access

For detailed usage instructions and advanced features, visit the complete documentation

Color Wheel

  • ShadCN-inspired picker
  • HEX/OKLCH/CSS values
  • Copy with/without hashtag

For detailed usage instructions and advanced features, visit the complete documentation

Lucide Icons

  • Fuzzy search across libraries
  • JSX/TSX component generation
  • Instant clipboard copy
  • Pagination and sizing controls

For detailed usage instructions and advanced features, visit the complete documentation

Tailwind Converter

For detailed usage instructions and advanced features, visit the complete documentation

Notes, To-Dos and Things

  • Universal Access
  • VSCode extension
  • Mobile app (PWA)
  • Web interface
  • GitHub sync
  • Key Features
  • Priority-based organization
  • Offline editing with smart sync
  • Team collaboration
  • Reminder notifications

For detailed usage instructions and advanced features, visit the complete documentation

Mobile App - Notes, To-Dos and Things

For detailed usage instructions and advanced features, visit the complete documentation

Superuser Task Runner

Phased Out! Functionality was replaced by improved featureset within devstack

  • technically completely phased out from its original idea as the entire code base has now been fully merged into devstack but will leave this here for anyone that wants to read it

For detailed usage instructions and advanced features, visit the complete documentation

Share Config With Friends

  • Export your setup to shareWithFriends folder
  • Includes README with setup instructions
  • Manual cleanup recommended for sensitive data

For detailed usage instructions and advanced features, visit the complete documentation

Default Apps Configuration

  • Control which features are active
  • Accessible via extension settings
  • Detailed explanations for each option

For detailed usage instructions and advanced features, visit the complete documentation

View Config Example

For detailed usage instructions and advanced features, visit the complete documentation

Dev Region

  • X button on title bar folds all in active editor
  • usage:
    • // #dev
    • // #dev commment
    • // #enddev
  • even works in md files if you place them inside a comment line...much better, that was a pain, especially in this file but it was driving me mad that the default folds weren't folding properly
<!-- // #dev -->
<!-- // #enddev -->

For detailed usage instructions and advanced features, visit the complete documentation.

Left Off Note

  • Accessible in the context menu
  • select Open Leftoff Note

For detailed usage instructions and advanced features, visit the complete documentation.

Shortcuts

  • Task, Notes and Things Quick Pick: Alt + Shift + T
  • Context Snippets: Alt + Shift + S
  • Clipboard++ History: Alt + Shift + C
  • Show Bookmarks: Alt + Shift + B
  • DevStack Quick Pick: Alt + Shift + D
  • Open UI Dashboard: Alt + Shift + A
  • Errors Plus: Alt + Shift + E
  • Show Error History: Alt + Shift + H

For comprehensive details on each shortcut's functionality, visit the complete documentation.

Create Export Index

  • right click on folder
  • creates an index file in that folder
  • recursively export *'s each file within that folder to tidy up import statements

For detailed usage instructions and advanced features, visit the complete documentation

Find Errors and Missing Imports

This has obviously evolved, after testing multiple ai engines I wanted something within the extension that offered a bit more in the form of functionality, without any constraints. Since this was already using ai, I converted it into its own view, thus replacing virtually every single ai chat extension, currently the list of engines that are covered:

  • openai
  • anthropic
  • google: 1500 requests/day free with Gemini
  • mistral
  • groq: Ultra-fast inference, generous free tier
  • ollama: 100% free, runs locally, no API key
  • xai
  • azure
  • bedrock
  • fal
  • deepinfra: Free credits for open models
  • vertex
  • togetherai
  • cohere
  • fireworks
  • deepseek
  • cerebras
  • perplexity
  • luma
  • baseten

The new pane will have the following tabs:

  • chat
  • errors ( where you will find the same functionality that this feature is replacing )
  • context
  • settings
  • history
  • analytics
  • snippets
  • solutions

Created to cover all engines, free and paid versions/tiers. When you open the settings tab for the first time, you will see that the there is a list containing what free options that are available to you. I made configuring each engine as easy as possible, while at the same time you could configure as many options as you want to be saved and hot swapped whenever you like.

In the chat tab, the top sidebar buttons will contain, add engine and a dropdown to swap between engines that you have already configured. The current engines logo will be displayed to give visual cue on which engine is currently in use, this also serves as the dropdown to select which ever engine you would like to use within the chat.

To configure an engine, for example google. After selecting the option, click on add api key, which will open a browser window to the engines site. Once you have obtained an api key from the provider, paste it into the appropriate input, and click save. I also included a test connection feature, where before saving you can test to see if the connection is successful or not before saving the configuration. Once saved, that config is ready to be used.

Personally out of ALL the ai extensions I had tested, this one is not only the easiest to configure ( obviously, the providers site to obtain api keys is out of my control. Some instances, I couldn't even log into a couple of providers sites nevermind obtain the actual key ), but also allows the use of multiple engines. On that note I did not come across an extension that offered the ability to configure more than one engine. One could be out there, but out of the 20 or so I had tested none of them offered this feature. Never mind being able to hot swap between engines. If your wondering why. Each engine, has strengths and weaknesses. While claude is great at some things, it also really drops the ball in others. So depending on the result you are looking for, you can quickly switch between engines allowing you to ask whatever question you have to the best most appropriate engine that will give the best result. Or if your like me and do not pay for any engines, the ability to quickly swap once you have used your entire quota.

Whenever an engine is selected, it will change the current conversation along with the viewable conversations within the history tab to those only related to the currently selected engine.

For ollama, I even provided a guide/walkthrough to creating your own local ai instance to be used with the extension.

Still under construction...
  • following tabs currently working
    • errors
    • settings
    • chat ( haven't tested much but initial tests does have the engine responding within chat, currently only tested with googles ai engine )
    • history
    • analytics

"I almost wish I hadn't gone down that rabbit-hole—and yet—and yet—it's rather curious, you know, this sort of life!".... FUCK, everything is working. Working great to be honest. The ever so enticing rabbit hole, might as well jump head first, really.

  • After using some ai engines, within vscode when I was testing the compiler out. Each one, left something to be wanted / desired. That's to say, if they even worked in the first place. Why is it, when it comes to vscode and the marketplace, its like a black hole for just utter garbage... sucking as much as it can, as hard and as fast as it can for its users to just wade through the shit... trying to find some shiny object within, just annoyed that after installing, and all the other stuff that comes with it even including on learning mandarain for one of them, to be left with less than half that are even useable? anyways lol
Current Plan...

having to learn mandarin in order just to get going... like cmon, albeit I was able to get away with as little as I could, but still, shouldn't have to learn a completely new and different language lol

  • creating a navigator view
    • will have a dock for navigation between 'tabs'
      1. will be the ai chat
      • where an adjustable text area will be at the bottom with no size restrictions, with buttons running on the side of the siderbar going upwards for functionality - at the top will have the info on the ai engine, clicking on the image will allow you to hot swap between engines as long as you have them configrued, im hoping to have atleast 1-2 pre confgirued and working at install whenever a new user installs it - using ai-sdk.dev to not limit on what engine we can access - the buttons that wil run up the side of the side bar will be 1. quick add current file 2. add context 3. refresh context 4. clear context 5. regenerate ai response 6. copy 7. edit prompt 8. save to snippets
      1. will be devoted to errors that will only get populated when triggered via button defaulting on the focused editor, with an option to spider outwards looking for more errors across your app, again all buttons will be on the inner wall, starting from the bottom going upwards
      • when you start out it will ask if you want to auto fix or manual - manual option
        • button to scan for errors
        • mode toggle: between file and workspace
        • button to intiate auto fix at anytime
        • a list will display of the errors
          • left clicking will bring you to the error and highlighting it
          • right clicking will open a contrext menu
            • ✨ Auto-fix this error
            • 💬 Ask AI about this
            • 📋 Copy error details
            • ✅ Mark as reviewed
            • 🚫 skip error for now
            • 🔍 Find similar errors
          • whenever a error is highlighted it will display the error code underneath in the editor
      1. Context tab
        • displaying current context if any
        • can add files, or folders as removing them individually or them all at once
        • Context Sets: Save frequently used context combinations
        • Token Counter: Shows total tokens from context
        • Folder Options: Recursive toggle, file type filters
      2. Settings
        • a drop down will be at the top allowing you to select a engine to configure, once configure will remain displayed as a list and each time you sleect a item from the drop down it adds to that list, while at the same time you can remove or edit eeach time
        • Multi-Engine Support: Save multiple API configurations
        • Quick Switch: Radio buttons for fast engine switching
        • Secure Storage: API keys encrypted in VS Code secrets
        • Connection Test: Verify API key before saving
      3. history
      • Searchable: Find past conversations - Resume: Click to restore conversation in chat tab - Export: Save conversation as markdown/JSON - Stats: Message count, token usage, model used
      1. analytics
      2. Snippets
      3. tab for viewing the options we had for:
        • Open Successful Solutions
        • Open Failed Solutions
        • Open Last Auto Fix Report
  • other features:
    • Notifications - Toast alerts for completions
    • Keyboard Shortcuts - Quick access to all tabs
    • Auto-save Conversations - Never lose work ( this should be taken care of by the histroy tab dude)
Planned Structure...
/extension
  /views
    /navigator
      - NavigatorView.ts (Main webview)
      - DockManager.ts (Tab switching)
      /tabs
        - ChatTab.ts
        - ErrorsTab.ts
        - ContextTab.ts
        - SettingsTab.ts 
        - HistoryTab.ts
        - AnalyticsTab.ts
        - SnippetsTab.ts
  /services
    - AIEngineService.ts (Multi-provider support)
    - ContextManager.ts (File/folder handling)
    - ErrorScanner.ts (Your existing logic)
    - HistoryService.ts (Conversation storage)
    - SecureStorage.ts (API key encryption)
  /providers
    - OpenAIProvider.ts
    - GroqProvider.ts
    - ClaudeProvider.ts
    - GeminiProvider.ts

MD Viewer Renderer

  • in the editor context menu
  • in the devstack submenu
  • select render md

For detailed usage instructions and advanced features, visit the complete documentation.

MD Viewer Renderer In VSCode

  • in the editor context menu
  • in the devstack submenu
  • select render md in vscode
  • displays side by side renderer in vscode

Editor Context Updates

Menu Reorganization / Other Updates That Cannot Be Organized... The context menu has undergone significant restructuring to address usability concerns. As the menu had expanded to occupy the entire screen height (and beyond), strategic reorganization became necessary. After extensive usage analysis, less frequently accessed items have been strategically relocated to submenus while preserving quick access to essential functionality.
  • 'Remix' Submenu → 'Special Functionality'

    • Relocated within the 'Remix' parent menu (formerly 'Remix Components')
    • Positioned as the first item in the context menu for optimal accessibility
  • 'Open Object in Schema'

    • Migrated to the 'Prisma' submenu for improved categorization
  • 'Snippets' Submenu Consolidation

    • Submenu structure removed for streamlined navigation
    • All snippet items integrated into the top of the 'DevStack' submenu
Comprehensive documentation improvements have been implemented based on structural analysis and user feedback... - **Section Restructuring**: Previously grouped similar functions have been separated into dedicated sections for improved clarity and navigation - **Standardized Coding**: All sections now utilize identical underlying code structure, ensuring consistent behavior and maintenance - **Uniform Styling**: Visual consistency maintained across all documentation sections
  • Modern Sidebar: Transitioned to the site's default inset-style sidebar for enhanced visual integration

  • Dynamic Highlighting: Sidebar items automatically highlight corresponding to current scroll position, providing intuitive navigation feedback

  • Synchronized Scrolling: Sidebar maintains visibility of current section through intelligent "ghost scrolling" functionality

  • Direct Navigation: All README links provide direct navigation to corresponding documentation sections

  • Sticky Section Headers: Section titles remain fixed at the top of the viewport during scrolling, with seamless transitions between sections

  • URL Structure: Documentation URLs relocated outside parent routes to accommodate enhanced sidebar functionality

  • Performance: Optimized scrolling detection and highlighting algorithms for smooth user experience

This represents the final major structural revision for the extension. Throughout the development process, various challenges have been identified and addressed at different stages of growth.

As I continously add features and content...

New issues arise that need to be addressed with unique solutions. For example, with the length of the current readme / docs, how do I preset the information to new users where they do not feel overwhelmed while at the same time, not alienating current users by burying new features and update info. Pretty unique issue, as I'm sure no other extension has run into this problem as far as extensions go anyways. I hope this is the last time I change the readme / docs, but as there is no extension to reference with a similar issue I'm primarily having to rely on trial and error.

The solution I have come up with:

  • use the read me as more of an overview, giving just enough information to let the user know what each feature is / does while providing a link to the docs. Thus not overwhelming users to the degree that the docs if I were just to use that.
  • for current users, I placed all new features at the top of the docs with a link to the section thats contained within. Thus allowing new users to find out with ease whats new, and if interested can read further

This approach balances accessibility for newcomers with feature discoverability for existing users, creating an optimal documentation experience for all user segments.

A new editor has been added, I wanted to test out a new library that turned out to be a much more feature rich offering than the current ones. I will be leaving the current ones up, as they are already coded and incase people enjoy them more than the new one. The new one features the monaco editor and has already received updates including the sidebar cheat sheet, readme generator and more.

catalyst ui

  • Currently up and running, premium membership not yet available
  • Accessible in the context menu
  • under catalyst ui
  • select a category via submenu
  • once a component is selected it inserts at cursor
  • current components counts:
    • free tier: 193
    • total components: 1808

For detailed usage instructions and advanced features, visit the complete documentation.

Updates... - Damn, 'open route in browser' has spoiled me. For 2 minutes I couldn't understand why... I couldn't navigate to the library from the editors context menu, lol. Only to realize, I'm in another project. So I've added these, because even I will visit the site often to reference information. And we're not going minimize vscode, go into the start menu to find / open the browser, to then enter the url by hand... like some kind of peasent ogre smashing keys on the keyboard one finger at a time, that is below our wizardly talents - both free and premium submenus now have buttons placed at the top of their respective submenus, before the categories that will navigate you to: - components: search / filter page that displays all components - components list: a list of all components ( I don't see this one getting used much, due to the quantity of items, but I included it because I was already there, and adding this was nothing ) - components viewer: for premium subs, a page where every single component and its data including source code can be viewed without ever having to navigate, including when ever you search for and even select a new component to view

If your on the fence about the subscription, the components viewer is worlds better than just a list or a products page where you can search and view items. It's a shame no other library has thought to include something like this, even with normal sized libraries, this would be a creature comfort that once you use it, you won't go back, it has even ruined other libraries for me. You don't think about how much better something could be till you have it, as I have not even visited the other two pages since using it. Don't get me wrong, it was created out of necessity, more than anything, due to a products page just not being good enough due to the amount of components. I know, the products page is the industry standard, but for this use case after you use it once, you'll see what I mean. Maybe I need to set some time aside, and really look at the products page... and hopefully I can come out the other side with a redesign to how we usually do it, because if I completely deserted that page never to visit it again. That's defiently a signal for when something should be changed and improved upon.

Install Catalyst ui library

  • checks which subscription tier your currently in, proceeds to install the appropriate libraries and dev libraries followed by creating the source code files with the proper folder / category structure
  • checks to see if you currently have a styles/tailwind.css file, if not found creates the folder and file
    • I left all my base goodies in the tailwind file, for example while I left the dark blue theme in the file you can also find things like a stylistic scroll bar that grabs the color values from your current tailwind theme thus giving you a nice custom scroll bar no matter what you change the color values for your theme for your app, other items are a lot more boring in comparison like making sure styles work across browsers and la-di-da
  • checks and updates the ts-config file
  • installs utils.ts in the base catalyst-ui folder

Catalyst UI Sidebar Update

Not the most appropriate to place I know, this just serves as a placeholder so I don't forget to place it where it needs to be, when I can find the time.

All updates are done to the source code of the sidebar...
  • Animated burger for trigger
  • SidebarMenuAnchor, defaults to opening a new tab when clicked
  • SidebarMenuLink, using remixs navlink
  • Anchor and Link, displays loading states whenever clicked
  • On initial load, sidebar will display a full ui loading state till data has loaded in, this will never display at any other point
  • since the siderbar essentially wraps the application, theme provider has been included with 6 pre configred dark themes to choose from, the theme state saved in local storage
  • the other sidebar versions will receive the same updates to their code as well

Smaller But Rather Nice Updates

The extension was built by, adding one thing after another and with the current amount of functionality at its disposal, showing its age in certain places. As I notice them, I will try to update them immediatly as I go. Thus making everything you need to do, just that much easier and making the menus that much cleaner. Instead of creating a new section for each, I will just include these types of updates here, but have them encased within an accordian so as to not take up too much space. I would love to just hunker down and get them all at once, but with the extension having sooo much functionality I wouldn't know where to start

  • several insert code sections have been updated
  • build extension +++
  • yeet
  • open route in browser
Adding items via the devstack sidebar... - at times, its just easier to add via the sidebar, because of that there is no point in opening the ui to create such items, but in its current state adding items looks to be haphazardly, to say the least - whenever you right click an item within the devstack sidebar, clicking 'add item' will open a quick pic with the following options - url - command ( vscode command ) - power shell command - debian command ( named due to the fact that it will run the command in a wsl debian enviroment, so you do need to have this already accessible for this to work ) - copy value - chain - concurrent - folder ( added afterwards, since I couldn't think of a reason why not to include this. After consolidating everything I know either remember why, or I'm now learning why I didn't do this before now, as the sidebar, is REALLY picky as to what gets done with it ) - once the label and value fields have been filled with whatever you need / desire - obviously different values are needed for folder but ya - it will then let you select where you would like to place the newly created item - it will not take notice where you right clicked, allowing you to place it within any folder / subfolder - the only reason for this, after everything in the sidebar was already coded, I created a helper function for folder selection, no matter the item type, that can also be used in any function it was needed, with only 1 line of code and since it has proved to be used anywhere, at anytime, honestly because of that I just dont want to mess with it lol, its already stressing enough changing so much legacy / older code - This will really clean up that context menu, jesus
Edit label - has been edited, adding all item types to be edited whenever triggered
Sidebar theme selector...

Yes I know, I said I wouldn't be including a theme selector that had a light theme, which is exactly what happened. I've been messing with this for a while now, because I have no idea how or where your going to use it. Personally I use a fixed position, replacing my pages logo icon with it, while at the same time setting the icons color to text-primary. Whenever the theme is changed, the icon displays the current colored theme.

  • Default, 6 DARK theme color schemes, the same as you can find in the configurator as I did not have time to come up with more
  • on initial load, it keeps whatever theme is set in place by your app, thus having 7 buttons
  • with the way I coded, you can add, remove or adjust the current themes provided, or don't even use it at all
  • the providor wraps the sidebar, so there is nothing you need to do more other than placing the sidebarthemeselector anywhere you would like
function Example() {
  return (
    <SidebarThemeSelector className='fixed right-[30px] top-[27px]' >
      <Avatar className="h-8 w-8 rounded-lg">
        <Zap className="text-primary" />
      </Avatar>
    </SidebarThemeSelector>
  )
}
  • whenever the button is selected applies bg-bacl/50 and animates to the middle of the screen and displays all the avialable options to choose from
  • once one is selected, saves the choice in local storage, and animates the slide back to its position

Blued Out

  • Minimalist all-dark blue theme, variant of blacked out
  • Reduces eye strain on large monitors
  • Mutes distracting UI elements
  • Preserves code readability

A Deterministic AI Engine Compiler

Super nerdy but so accurate I had to use it as the tagline:

Essentially, and most simply put, the one ring to rule them all... Desgined with a UI to interact with the compiler and ai. Making it a "reusable component" by definition, giving any developer at any skill level the opportunity to not only use it but benefit from its results.

NOTE: Right now, this tool sees use in 100% of my dealings with ai and it delivers ridiculous results. It's not available to users yet as I figure out... what the hell to do with this. Once I make that decision, the tool will be available for you to use.

You won't keep asking:

  • Why doesn't it remember what I said 10 messages ago?
  • Why did it change the style from last time?
  • Why do I have to re-explain my setup every session?

It takes what was impossible before and makes it reality. Instead of YouTubers making videos on "how to build a whole app with AI" just to create a single, very simple page or another common small blog you'd never actually see in production—this lets you complete large, complex projects spanning any number of files in a surprisingly short time. Right now, the only ceiling that exists is the AI engine's overall skill level. For example, while some engines can technically build very complex auto loan calculators (with heavy asterisks attached), you wouldn't actually use it in production. I get the novelty when people show off its "capability," but we both know that dev isn't putting that exact calculator in their project.

In closing:

I genuinely don't look at AI the same way now. My perspective is a stark contrast to how I worked with it before. The factory-level output I produce now definitely eases my anxiety when workloads hit a certain point. The possibilities are beyond what I can comprehend alone with the knowledge I have, because it doesn't just unlock new doors for each industry that uses it. This... how do I put this... imagine an average American home representing an AI engine. This would be like a Tesla Gigafactory or Amazon processing center breaking ground right up against the walls of that home, running at full capacity, with restrictions only placed by its own choice. If Microsoft wanted to dominate one more industry and make everyone else irrelevant, this could do it—putting them 3-5 years ahead overnight, not to mention the resources saved in the process. Right now, I'm more excited about just how much more efficient I became because of this. The only thing weighing that down is figuring out what to do with it. And hey, if you're reading this and have an answer, my email is on my profile. Frankly, that's the only reason I decided to put this here right now, because I very much doubt the vp of ai at microsoft would take some dudes random call in the middle of the day, haha.

Type of item for the sidebar

I don't know why, I am now just coming up with this idea...
  • because I would have used it, thoroughly. Funny part is, its such a simple and plain function
  • named: "copyValue"
  • I would have loved to just name it copy, but every single time I name something, with that level of simplicity, not only does it not end up working but, bad things happen, instead of possibly getting a headache later, I'm just going to avoid it all together
  • You have probably already guessed at what this will do for you in the sidebar, whenever this item is clicked, whatever value you had given it, will be placed in your clipboard, to be used in whatever capacity you need
  • due to the simplicity, and how I should have thought about this a million years ago, it will be up and running, and ready to be used shortly, the ui may not be up right away, but you can always add it to the config

Custom VSIX Packager

I Must have built the perfect one in a million, edge case, storm to really make vsce stop in its tracks. Ah, well, something new to learn, like I didn't know a vsix was a renamed zip file lol. Why, bother renaming it? Some thing, will just never make sense to me. So incase, like me, you cannot use vsce for whatever reason, or maybe you just don't like it and didn't even know... there was even another option. I personally, never really cared for vsce but didn't think there was another option, let alone building it myself. So, here we are, incase you want to run the command in a chain, or concurrent item in the sidebar

  • ocrmnavigator.customVsixPackager
    • place it like you would any other vscode command, I beleive this is the first command I've openly documented. Should, have a section that displays them all in case you wanted to go nuts building your own chain / concurrent commands... Just forever adding on to the ever growing work load

To trigger

  • Need to right click package.json || package.dev.jsonc, in order for the command to be revealed
  • now replacing vsce within the build +++ function
  1. Currently the packager executes:
  • Currently ignoring the following files: thus providing you with a slightly smaller file than vsce does
.git
.git/**
scripts
scripts/**
vsix
vsix/**
.vscodeignore
package.dev.jsonc
package-lock.json
**/*.vsix
  • IF, you have .vscodeignore in your root folder, it will instead use the rules you have set out within that file, just like any other ignore file, ensure to have a rule per line
    • note: the .vscodeignore file will completely over write the current ignore list in place, giving you the freedom / control you need, so don't just place in a single item thinking it will, just add that one onto a list, the above list is exactly hows each ignored within the script, so you can copy paste into the ignore and add anything else you would like or, you can also remove items
  • I will make it so that, we can have it just get pushed to the marketplace without worry or hassle

So what you will be left with, if you inspect it, is your extension placed within the extension folder, [Content_Types].xml and finally your extension.vsixmanifest, thus allowing us to upload to marketplace without issue, and if left at default will produce a smaller file than vsce. UPDATE: If your reading this, and the marketplace listing looks perfectly fine, then you know the vsix uploads perfectly to be listed and displayed in the marketplace

Build Extension +++...

I've been wanting to update this for so long... As I have always felt that it... just needed to do a couple more things

Full function overview

  • saves all files

  • takes note of all existing files with .vsix in root folder, adding the file count to the step count for progress tracking

  • compiles extension via pnpm run compile so make sure you have this set up in your package.json

    • it doesn't just run pnpm, it first checks which compiler you currently use, and uses the appropriate command, so whenever you see any command written about after this, just remember its not using pnpm, but whatever pkg mgr you use
  • checks if local files are dirty

    • if yes, git add && git diff || git commit && git push && pnpm version patch && git push && git push --tags
      • if your wondering wtf, that was about. If your files are not synced with your repo it runs all the commmands it needs in order to "clean" your local file registry, in other words so your local files match / mirror your repos, next it increases the patch number by 1 and pushing that to your repo, finishing off with locally creating the vsix file
    • if no, pnpm version patch && git push && git push --tags
  • waits for new vsix file to be created

  • creates vsix file, placing it in the root folder

  • publishes the extension with once built

this next step I'm putting back in because, even after publishing with vsce publish, the microsoft dashboard does not recognize it. Personally I don't know why, maybe you do shrugs, I just haven't had the time to spend to look into this. As I have noticed that the marketplace readme, does not update unless I update the extension on the dashboard. At one point, I noticed that there was almost a 30 day period with no updates, all the while I was using vsce publish, after visiting the marketplace listing, I had noticed the readme was about 10-11 updates old. So, for that reason... UPDATE: I'll keep an eye on if this changes or continues to act the same way, if it changes this will be removed

  • reveals new vsix in file explorer

  • opens browser at publishers dashboard

    • I have coded it to open a specfic browser for me, due to using accounts in certain browsers and microsoft not completely vibing with the fact that I will not sign up for one of their emails, instead using other providers to use their services. Because of that, their login process is really nitpicky on how I login. For you though, it will open your default browser and navigate to the dashboard. The reason I even brought all this up is, the url I used for you, after several tests seems to work for me, so I hope it works for you! So... if it doesn't work atleast you know why
  • whatever amount of old vsix files you currently have in your root folder, will automatically get deleted... fucking finally... lol, I don't know why I waited so long to add this

    • if you currently have no old vsix files, it skips this step
  • instead of the soft extension restart, like before

    • saves all files ( incase you kept on working, so nothing gets lost to the nether )
    • restarts your instance, reopening the window you were in at the time of the instance shutting down, reopening in the same workspace so as to not interrupt us too much

I'll know pretty quickly if I hate this or not, so it might get changed back. But who knows, I might love it, since it takes care of one more step for me

... that restart was fast... damn... ok, might actually love this Even with like 3 workspaces open, reopens them in faster than you can blink, safe to say for now, this will stay

Node script...
const fs = require('fs');
const path = require('path');
const archiver = require('archiver');
const fse = require('fs-extra');
const { globby } = require('globby');

const ROOT_DIR = path.resolve(__dirname, '..');
const PACKAGE_JSON_PATH = path.join(ROOT_DIR, 'package.json');
const VSIX_IGNORE_PATH = path.join(ROOT_DIR, '.vscodeignore');
const VSIX_DIR = path.join(ROOT_DIR);
const REQUIRED_FILES = [
    'package.json',
    'README.md',
    'CHANGELOG.md',
    'LICENSE'
];

const STRUCTURE_DEPTH = 3;

const ADDITIONAL_IGNORES = [
    '.git',
    '.git/**',
    'scripts',
    'scripts/**',
    'vsix',
    'vsix/**',
    '.vscodeignore',
    'package.dev.jsonc',
    'package-lock.json',
    '**/*.vsix'
];

function isIgnored(filePath, patterns) {
    const normalizedPath = filePath.replace(/\\/g, '/');
    
    for (const pattern of patterns) {
        const normalizedPattern = pattern.replace(/\\/g, '/');
        
        if (normalizedPattern.endsWith('/**')) {
            const dir = normalizedPattern.slice(0, -3);
            if (normalizedPath === dir || normalizedPath.startsWith(dir + '/')) {
                return true;
            }
        }
        
        if (normalizedPattern.startsWith('**/')) {
            const suffix = normalizedPattern.slice(3);
            if (normalizedPath.endsWith(suffix) || normalizedPath.includes('/' + suffix)) {
                return true;
            }
        }
        
        if (normalizedPattern.includes('*')) {
            const regexPattern = normalizedPattern
                .replace(/\./g, '\\.')
                .replace(/\*\*/g, '.*')
                .replace(/\*/g, '[^/]*');
            const regex = new RegExp('^' + regexPattern + '$');
            if (regex.test(normalizedPath)) {
                return true;
            }
        }
        
        if (normalizedPath === normalizedPattern || normalizedPath.startsWith(normalizedPattern + '/')) {
            return true;
        }
    }
    
    return false;
}

function buildStructureTree(files, depth) {
    const tree = {};
    
    files.forEach(file => {
        const parts = file.split('/');
        let current = tree;
        
        for (let i = 0; i < Math.min(parts.length, depth); i++) {
            const part = parts[i];
            if (!current[part]) {
                current[part] = {};
            }
            current = current[part];
        }
    });
    
    return tree;
}

function printTree(tree, indent = '') {
    const entries = Object.keys(tree).sort();
    entries.forEach((key, index) => {
        const isLast = index === entries.length - 1;
        const prefix = isLast ? '└── ' : '├── ';
        const childIndent = indent + (isLast ? '    ' : '│   ');
        
        console.log(`${indent}${prefix}${key}`);
        
        if (Object.keys(tree[key]).length > 0) {
            printTree(tree[key], childIndent);
        }
    });
}

async function createVsix() {
    console.log('📦 Starting custom VSIX packaging...');

    await fse.ensureDir(VSIX_DIR);

    const pkg = await fse.readJson(PACKAGE_JSON_PATH);
    const extensionId = `${pkg.publisher}.${pkg.name}`;
    const vsixFileName = `${extensionId}-${pkg.version}.vsix`;
    const vsixPath = path.join(VSIX_DIR, vsixFileName);

    await fse.remove(vsixPath);
    let ignorePatterns = [...ADDITIONAL_IGNORES];
    if (await fse.pathExists(VSIX_IGNORE_PATH)) {
        const ignoreContent = await fse.readFile(VSIX_IGNORE_PATH, 'utf8');
        const filePatterns = ignoreContent
            .split('\n')
            .map(line => line.trim())
            .filter(line => line.length > 0 && !line.startsWith('#'));
        ignorePatterns.push(...filePatterns);
    } else {
        console.warn('.vscodeignore not found. Using default exclusions (node_modules, .git, etc.).');
        ignorePatterns.push(
            '**/node_modules/**',
            '**/src/**',
            '**/*.map',
            '**/*.ts',
            '**/*.tsx',
            '**/tsconfig.json',
            '**/webpack.config.js',
            '**/.vscode/**',
            '**/.gitignore'
        );
    }

    const outputDir = pkg.main ? path.dirname(pkg.main) : 'dist';
    if (ignorePatterns.includes(outputDir) || ignorePatterns.includes(outputDir + '/**')) {
        console.warn(`WARNING: The extension entry point folder (${outputDir}) is in .vscodeignore. This will break the extension.`);
    }

    const allFiles = await globby('**/*', {
        cwd: ROOT_DIR,
        dot: true,
        gitignore: false
    });

    const includedFiles = allFiles.filter(file => {
        if (REQUIRED_FILES.includes(file)) return true;
        const shouldIgnore = isIgnored(file, ignorePatterns);
        return !shouldIgnore;
    });

    REQUIRED_FILES.forEach(file => {
        if (!includedFiles.includes(file) && fs.existsSync(path.join(ROOT_DIR, file))) {
            includedFiles.push(file);
        }
    });

    console.log(`\nFound ${includedFiles.length} files to include (excluding ${allFiles.length - includedFiles.length} ignored files).`);
    console.log('\n🔍 Largest files being included:');
    
    const fileSizes = includedFiles.map(file => {
        const filePath = path.join(ROOT_DIR, file);
        const stats = fs.statSync(filePath);
        return { file, size: stats.size };
    }).sort((a, b) => b.size - a.size).slice(0, 10);
    
    fileSizes.forEach(({ file, size }) => {
        console.log(`  ${(size / 1024).toFixed(2)} KB - ${file}`);
    });

    const output = fs.createWriteStream(vsixPath);
    const archive = archiver('zip', { zlib: { level: 9 } });

    const archivedFiles = [];

    archive.on('entry', function(entry) {
        archivedFiles.push(entry.name);
    });

    output.on('close', function () {
        console.log(`\n✅ Successfully created VSIX: ${vsixPath}`);
        console.log(`Total size: ${(archive.pointer() / 1024 / 1024).toFixed(2)} MB`);
        
        const structure = buildStructureTree(archivedFiles, STRUCTURE_DEPTH);
        
        console.log(`\n📁 Structure (${STRUCTURE_DEPTH} levels deep):`);
        printTree(structure);
    });

    archive.on('warning', function (err) {
        if (err.code === 'ENOENT') {
            console.warn('Archive Warning:', err.message);
        } else {
            throw err;
        }
    });

    archive.on('error', function (err) { throw err; });

    archive.pipe(output);
    archive.append(fs.createReadStream(PACKAGE_JSON_PATH), { name: 'extension/package.json' });
    for (const filePath of includedFiles) { 
        if (filePath !== 'package.json') {
            archive.file(path.join(ROOT_DIR, filePath), { name: `extension/${filePath}` });
        }
    }
    await archive.finalize();
}

createVsix().catch(err => {
    console.error('\n❌ VSIX Packaging Failed:', err);
    process.exit(1);
});

Well, that was a long journey, forgot how annoying it was to continously go back to the terminal placing in each command after one another, waiting for it to finish before placing the next command. Happy that I only have to do it one more time, never to having to do this again. With that said, the vsix file sizes are smaller now and this function exectues in half the amount of time as it did before, since vsce didn't have an option to compile once, for saving locally and publishing. Coming back after testing, it runs way faster than half the amount of time as earlier, fyi. Whether or not you publish the vsix it won't interfere with the function

Wizards Section

Due to the quantity of commands and spells to cast, this will take a while for me to organize. BUT, I will leave it haphazardly as I take care of it when I can. That way, you can go through it at any time and grab what you need. What commands exactly? Every single one used in this extension.

  • IF you wanted to create a custom concurrent / chain commond that includes all matter of comands and bobs to whirl, have at it
  • I hate limiting things or people, letting them to their own devices. Ontop of which, this gives you the freedom to do things that your use case needs
  • I wish this was more of a common thing, because whenever I wanted to do something like this, with another extensions functionality, I had to search, test out a bunch of different functions till I found it because of stupid naming conventions. BECAUSE, you can throw in any extensions commands into devstack, so long as that other extension is installed in your instance, thus giving access to its function, within your instance... sigh, I dont even know how I'm going to catergorize this
Took a lot less time than I thought it would, to get the base list cleaned...

I am not... including the 2200 functions from the ui library

Below you will see the makings of the list, taking shape atleast enough for you to review, each one atleast having a name to go with it. Instead of, just trying to figure out what it does from the function name alone.

Example Usage

{    
  {
    "label": "Custom .VSIX Packager",
    "path": "ocrmnavigator.customVsixPackager",
    "type": "command"
  }
}

Allowing you to place it within the sidebar to be used whenever you need it. Or if you want to chain a bunch of them together, to run all at once or one after another, along with other scripts, powershell commands, sh commands and so on. This isn't ALL of them, I think 150-200 or so, but its a start for now. Once it's catergorized and looking pretty, I'll add more.

ocrmnavigator.customVsixPackager Custom .VSIX Packager

ocrmnavigator.openPrePrompt Open Pre-Prompt

ocrmnavigator.copyValue Copy Value

ocrmnavigator.installCatalystUIFree Install Catalyst UI Comps

ocrmnavigator.installCatalystUI Install Catalyst UI

ocrmnavigator.UIComponents Components

ocrmnavigator.UIComponentsList Components List

ocrmnavigator.UIComponentsViewer Components Viewer

ocrmnavigator.catalystUI.x.sidebar01 Navigation Grouped By Section

ocrmnavigator.catalystUI.x.sidebar02 With Collapsible Sections

ocrmnavigator.catalystUI.x.sidebar03 With Submenus

ocrmnavigator.catalystUI.x.sidebar04 Floating Sidebar With Submenus

ocrmnavigator.catalystUI.x.sidebar05 With Collapsible Submenus

ocrmnavigator.catalystUI.x.sidebar06 With Submenus As Dropdowns

ocrmnavigator.catalystUI.x.sidebar07 Collapses To Icons

ocrmnavigator.catalystUI.x.sidebar08 With Secondary Navigation

ocrmnavigator.catalystUI.x.sidebar09 With Collapsible Nested Sidebars

ocrmnavigator.catalystUI.x.sidebar10 In A Popover

ocrmnavigator.catalystUI.x.sidebar11 Collapsible File Tree

ocrmnavigator.catalystUI.x.sidebar12 With A Calendar

ocrmnavigator.catalystUI.x.sidebar13 In A Dialog

ocrmnavigator.catalystUI.x.sidebar14 Right Sidebar

ocrmnavigator.catalystUI.x.sidebar15 Left And Right Sidebar

ocrmnavigator.catalystUI.x.sidebar16 Shopping Cart

ocrmnavigator.catalystUI.x.sidebar17 Shopping Cart V2

ocrmnavigator.catalystUI.x.sidebar18 With A Tree View

ocrmnavigator.catalystUI.x.sidebar27 Right & Left Sidebar W Full Functionality

ocrmnavigator.notesTodoAndThings Notes Todo And Things

ocrmnavigator.changeFreePremium Change Free Premium

ocrmnavigator.tailwindConverter Tailwind Converter

ocrmnavigator.yeet yeet

ocrmnavigator.renderMd Render MD

ocrmnavigator.YEEEETMOTHERFUCKER2 Build Extension +++

ocrmnavigator.foldParentRegions Auto Fold #dev

ocrmnavigator.autoFoldRegion Auto Fold #dev"

ocrmnavigator.openLeftOffNote Open Left Off Note

ocrmnavigator.openExistingNote View Left Off Note

ocrmnavigator.navigateToBookmark Navigate to Bookmark

ocrmnavigator.openGitHubRepoAtFile Open GitHub Repo At File

ocrmnavigator.showModernizationStats Show Modernization Stats

ocrmnavigator.convertClassToHooks Convert Class to Hooks

ocrmnavigator.modernizeCode Modernize Code

ocrmnavigator.navigateToError Navigate To Error

ocrmnavigator.undoLastFix Undo Last Auto-Fix

ocrmnavigator.sendFunctionContextToCopilot Send Function Context to Copilot

ocrmnavigator.confirmFixWorked Confirm Fix Worked (Learn Pattern)

ocrmnavigator.clearErrorHistory Clear Error History

ocrmnavigator.showErrorHistory Show Error History

ocrmnavigator.errorsMissingImportsPlus Find Errors, Missing Imports & More

ocrmnavigator.createFolderSmartIndex Create Export Index ( registry )

ocrmnavigator.convertToAgnostic Convert To Become Agnostic

ocrmnavigator.concurrent Concurrently

ocrmnavigator.typography Typography

ocrmnavigator.navMenu Nav Menu

ocrmnavigator.pagination Pagination

ocrmnavigator.dateTime Date Time Picker

ocrmnavigator.dateWInput Date W/ Input

ocrmnavigator.dobDate DOB Date Picker

ocrmnavigator.avatar Avatar

ocrmnavigator.alertDialog Alert Dialog

ocrmnavigator.switchCard Switch Card

ocrmnavigator.shadCNswitch Switch

ocrmnavigator.textarea Textarea

ocrmnavigator.addShadcnTooltip Tooltip

ocrmnavigator.addShadcnSidebar Sidebar

ocrmnavigator.addShadcnContextMenu Context Menu

ocrmnavigator.addShadcnPopover Popover

ocrmnavigator.addShadcnMenubar Menubar

ocrmnavigator.addShadcnHoverCard Hover Card

ocrmnavigator.addShadcnDropdownMenu Dropdown Menu

ocrmnavigator.addShadcnDrawer Drawer

ocrmnavigator.addShadcnChart Chart

ocrmnavigator.addShadcnCombobox Combobox

ocrmnavigator.addShadcnCheckbox Checkbox

ocrmnavigator.addErrorBoundary Error Boundary

ocrmnavigator.addMetaFunction Meta Function

ocrmnavigator.addLinksFunction Links Function

ocrmnavigator.createActionObject Create Action Object

ocrmnavigator.createIncludeObject Create Include Object

ocrmnavigator.reactrouterFileBasedRouting RR Folder Routing

ocrmnavigator.inlinesImports Inline Imports

ocrmnavigator.openPlayer Media Player

ocrmnavigator.myTanStackTable TanStack Table Scaffolding

ocrmnavigator.myProjectSetup Project Scaffolding

ocrmnavigator.autoRemixAction Automatic Remix Action

ocrmnavigator.createUiMD MD

ocrmnavigator.buildProjectConfigurator Build & Deploy

ocrmnavigator.createSingleApp Create Single App - React Router

ocrmnavigator.createMonorepo Create Monorepo

ocrmnavigator.openMusicInBrowser Playlist

ocrmnavigator.convertToMono Convert to Monorepo

ocrmnavigator.buildProject Build & Deploy Project

ocrmnavigator.updatePrisma Update Prisma Scripts

ocrmnavigator.strView Superuser Task Runner

ocrmnavigator.themedScrollBar Scroll Bar - based on CSS theme

ocrmnavigator.mdFile View MD

ocrmnavigator.testsubmenu test sub menu

ocrmnavigator.devStackView Chains

ocrmnavigator.mdViewWorkspaceList MD

ocrmnavigator.cmdsView DevStack

ocrmnavigator.uiReference Reference

ocrmnavigator.uiCreate Create

ocrmnavigator.uiMasterApps Master Apps

ocrmnavigator.skylersMenuEditorContext 8an3

ocrmnavigator.ui8an3Menu 8an3

ocrmnavigator.uiConfigurators Configurators

ocrmnavigator.snippetsFile Snippets File

ocrmnavigator.snippetsEdit Edit Snippet

ocrmnavigator.chainsEdit DevStack Chains

ocrmnavigator.cmdsEdit Command

ocrmnavigator.snippetsCreate Snippet Create

ocrmnavigator.createMDWCheat3Wide MD w/ Viewer

ocrmnavigator.chainsCreate Chain

ocrmnavigator.cmdsCreate Cmd / Powershell Cmd / URL / VSCode Cmd / Debian Cmd / File / MD / Folder

ocrmnavigator.openUi UI Dashboard

ocrmnavigator.configSub Configuration

ocrmnavigator.lucideButtons Lucide Icons

ocrmnavigator.colorWheel Color Wheel

ocrmnavigator.blackedOut Blacked Out

ocrmnavigator.bluedOut Blued Out

ocrmnavigator.windowDifferentiator Window Differentiator

ocrmnavigator.resetWindowDifferentiator Reset Colors - Window Differentiator

ocrmnavigator.useHydrated Required for clientOnly - use-hydrated.js

ocrmnavigator.clientOnly Custom client-only.js that replaces remix-utils version

ocrmnavigator.searchWFusejs Search w/ Fuse.js

ocrmnavigator.searchWFilter Search w/ Filter

ocrmnavigator.commandWCommandInput Command w/ CommandInput

ocrmnavigator.commandWSearch Command w/ Search

ocrmnavigator.bgWHover BG w/ Hover

ocrmnavigator.blue BG Blue w/ Hover

ocrmnavigator.apiRoute API Route

ocrmnavigator.prevState prevState

ocrmnavigator.insertSnippet %s

ocrmnavigator.visualizeSchemaRelations Visualize Schema Relations

ocrmnavigator.remix Functions

ocrmnavigator.remixAdd Remix

ocrmnavigator.contextSnippets Context Snippets

ocrmnavigator.showHistory Show History

ocrmnavigator.prisma Prisma

ocrmnavigator.generateCrudResolvers Generate CRUD Resolvers

ocrmnavigator.clickToSchemaObject Open Object In Schema

ocrmnavigator.openGitHubRepo Open GitHub Repo In Browser

ocrmnavigator.github GitHub Functions

ocrmnavigator.cammandPagination Command - Pagination

ocrmnavigator.removeUnusedImports Remove Unused Imports From File

ocrmnavigator.devStackSubmenu DevStack

ocrmnavigator.testRouteFile Create Tests For Route and Action

ocrmnavigator.installAuthRemix Install Auth in Remix w/ Auth Routes

ocrmnavigator.installOTPRemix Install OTP Into Remix w/ Auth Routes

ocrmnavigator.configureEslingPrettier Add ESlint and Prettier configs

ocrmnavigator.installShadcn Install ShadCN w/ All Components

ocrmnavigator.convertV1ToV2 Converts the v1 routing convention to v2

ocrmnavigator.addFetch Fetch w/ state and useEffect

ocrmnavigator.addCleanSmTable Sm Table w/ Columns

ocrmnavigator.addFuseInput Fuse Input w/ X

ocrmnavigator.designedButtonClassName Designed Button ClassName

ocrmnavigator.configureImports Configure Missing Imports

ocrmnavigator.addMissingImports Configure Missing Imports

ocrmnavigator.addRouteFile Route File

ocrmnavigator.addTableFile TanStack Table File

ocrmnavigator.addUseEffect useEffect

ocrmnavigator.addUseState useState

ocrmnavigator.addMap Map

ocrmnavigator.addOnSubmitFunionatlity On Submit w/ Fetcher

ocrmnavigator.addOnClickWithSubmit Button W/ On Click With Submit

ocrmnavigator.addClassNames ClassNames

ocrmnavigator.addFetcherForm Fetcher.Form With Items

ocrmnavigator.addLoader Loader

ocrmnavigator.addAction Action

ocrmnavigator.openRouteInBrowser Open Route in Browser

ocrmnavigator.previewRoute Preview Route URL

ocrmnavigator.testRouteConversion Test Route Conversion

ocrmnavigator.openUrlFromEditor Open the files route

ocrmnavigator.missingImportsAndVariables Missing Imports && Variables

ocrmnavigator.configExample View Example Config

ocrmnavigator.hideSingleItem Toggle To Hide Item In UI

ocrmnavigator.toggleHiddenItems Toggle Hidden Nav Items

ocrmnavigator.YEEEETMOTHERFUCKER YEEEET!!!

ocrmnavigator.refreshWorkspaceSnippets refreshWorkspaceSnippets

ocrmnavigator.saveSnippet Save Snippet

ocrmnavigator.openSingleSnippet Snippet Viewer

ocrmnavigator.openSnippetFromFile OCRM Navigator: Open in Snippets Viewer

ocrmnavigator.importSnippets Import Snippets

ocrmnavigator.openSnippetsWebview Snippet Viewer

ocrmnavigator.createSnippet Create Snippet

ocrmnavigator.editSnippet Edit Snippet

ocrmnavigator.copySnippetToClipboard Copy Snippet Body

ocrmnavigator.addAutoSequencer Chain / Cmd Sequencer"

ocrmnavigator.autoSequencer Execute a chain of items."

ocrmnavigator.autoCommitPushUpgrade Auto Commit, Push and Upgrade"

ocrmnavigator.autoCommitPush Auto Commit and Push"

ocrmnavigator.upgradeExtension Upgrade Patch, create & reveal VSIX"

ocrmnavigator.addBashCommand Open NRCSync"

ocrmnavigator.openExternalWebview Open NRCSync"

bookmarks.add Add Bookmark"

bookmarks.show Show Bookmarks"

clipboardManager.showHistory Show Clipboard History"

ocrmnavigator.addUnusedToFileTree Add to tree items

ocrmnavigator.searchForExportsThatAreNotInUse Search For Unused Exports

ocrmnavigator.quickSearch Search

ocrmnavigator.formattersSub Formatters

ocrmnavigator.viewersSub Open Viewer

ocrmnavigator.editConfig Edit .json Config

ocrmnavigator.revealInExplorer Reveal in Explorer

ocrmnavigator.copyPath Copy Path

ocrmnavigator.addFileToNavigator Add File to DevStack

ocrmnavigator.initialFile Add File/s to DevStack

ocrmnavigator.editFileLabel Edit Label

ocrmnavigator.deleteItem Remove Item

ocrmnavigator.moveCategoryUp Move Folder Up

ocrmnavigator.moveCategoryDown Move Folder Down

ocrmnavigator.deleteCategory Remove Folder

ocrmnavigator.exportConfig Export Config

ocrmnavigator.importConfig Import Config

ocrmnavigator.addItemToDevstack Add Item

ocrmnavigator.editWebUrl Edit Web URL

ocrmnavigator.executeSTRCommand Execute Command

ocrmnavigator.executeCommand Execute Command

ocrmnavigator.addSubcategory Add Sub Folder

ocrmnavigator.collapseFolder Collapse Folder By Default

ocrmnavigator.expandFolder Expand Folder By Default

ocrmnavigator.refresh Refresh Navigator

ocrmnavigator.removeUrl Remove URL

ocrmnavigator.editCommand Edit Command

ocrmnavigator.moveItem Move File Item

ocrmnavigator.setMoveTarget Select as Move Destination

ocrmnavigator.createMD MD

ocrmnavigator.editMD Edit .MD

ocrmnavigator.editMDLabel Edit .MD Label

ocrmnavigator.showCommandsReference VSCode Cmds Reference

ocrmnavigator.viewMarkdownGuide MD Guide

ocrmnavigator.moveFileUp Move File Up

ocrmnavigator.removeConsoleLogsFromFile Remove console.log statements from this file"

ocrmnavigator.removeConsoleLogsFromFolder Remove console.log statements from folder"

ocrmnavigator.removeConsoleLogsFromWorkspace Remove console.log statements from workspace"

ocrmnavigator.debianCMD Execute Debian WSL CMD

ocrmnavigator.renameBatch Batch Rename

ocrmnavigator.addTerminalCommandToCategory Bash Cmd

ocrmnavigator.moveFileDown Move File Down

ocrmnavigator.executeItem Execute Terminal CMDS

ocrmnavigator.addFilesToNavigator Batch Add Files to CRM Navigator

ocrmnavigator.renderFileInMdViewer .MD Viewer

ocrmnavigator.search Search in Navigator

ocrmnavigator.formatCurrentFile Format with DevStack"

ocrmnavigator.configureFormatters Formatters"

ocrmnavigator.shareConfig Share Config With Friend"

ocrmnavigator.mainActions Main Menu"

ocrmnavigator.addActions Add Menu"

ocrmnavigator.renderEmptyMd Markdown Viewer"

ocrmnavigator.mdViewer Markdown Viewer"

ocrmnavigator.editDefaultValues Default Apps"

ocrmnavigator.removeJson Remove Trailing Commas"

ocrmnavigator.themeViewer VSCode Theme Configurator"

ocrmnavigator.removeAllComments Remove All Comments"

ocrmnavigator.jsonComments JSON Comments"

ocrmnavigator.renderedMDFile Render MD In VSCode"

ocrmnavigator.authDesignPage Auth Design Page

ocrmnavigator.showQuickPick DevStack: Search

Live React / Tailwind Playground

  • A dedicated live development environment that prioritizes speed and focuses exclusively on component design ( but not entirely ), complete with a dynamic, minimalist dock and integrated helpers

It seems to be a consistant theme, esepcially of late, where the enviroments I'm designing / coding in are just so slow and the speed at which an item can render, being entirely out of my control. Whether it be due to the fact that, the project has grown so much so that even the dev server no longer loads quickly. At times, being so slow I find I'm coding in 4 different files so as to not sit there and just waste time waiting. Or the opposite but more dangerous counterpart, saying fuck it and really trying to yeet out of the park, by not rendering a single page for the entire project, lol.

But there has always, been one issue when it came to whenever I was looking for a live playground. They are always... 100% of the time, in languages I do not code in. And designing the new sidebar for a part of this extension, was the last nail in the coffin. Waiting well, over 5 minutes between renders. It might not bother me as much if i was better at styling, but it's something I've never been great at. I have literally idly been looking for one ever since I started coding.

AND because I have looked at sooo many, for soooo long, I atleast know what I DO NOT want, haha, because lets be real. The majority of the time, usually more thankful its in another langurage since the ui looks that bad or that clunky to use. And the editors, 75% are beyond horendous to have to be using it all the time.

Features:

  • 3 pages, each being full pages

    1. editor
    2. renderer
    3. css styling, even though it will be focused on tailwind, I still find the use for css files more often than not
  • it sounds rediculous, but hear me out. Because we do not need a million functions from the editor itself, instead of cheaping out on the editor, I'm gonna do the exact opposite. Walking right by the the text areas or double / triple text area layouts, it will be a full page monaco editor, stripped... almost bare, but not quite. Even in its most bare state, there is still a hidden command with search capabilties giving way more funcationality then any text box / editor could fathom of having. In its stripped state, codes just as good if not better than anything else I have coded on while it was hosted on a webpage. On page load a empty, function will already be in place, so you can get right at it

  • There will be no buttons, on the monaco editors ui. But, can't not have functionality but I do want to jam as much as I can onto the page while not weighing us down, or feel like your giving up realestate to trade for said functions. A dock will be used where it will have two states, the first being it fades to glass like state, you can see it so you know its there, but you cant make anything out, thus leaving you to ur devices with zero distraction. For the people that hate that, the three main nav buttons to switch between pages will only fade to 50%

  • the remainder of the buttons on that dock will always fade out to where you can just see them. Hovering over it, snapping it back into view. To help everyone out, so you don't feel like the ui is ever in your way, there will be a button on the dock, when clicked 3 buttons will shoot off and spread out towards their respective directions so you can change the location as quickly as posible, while saving space

  • other functionality will include but not limited to copying to clipboard, export the files, one click adds of use state, use effects and other goodies of that nature, for the first time in years I'll be coding a light / dark theme switcher, a button opening a command with search allowing you to click slect one oif the 2200 items in the ui library, letting you paste it where you please, amonge others, in them including a hot swapping theme button as well

Last but not least, it will be a tailwind / react / css enviroment. At this time, I don't even know of one out there. I have seen, less than a handful over the years, and whenever they did pop up. Were so bad half of them didn't even work.

Hope this works out because, my last resort would be a dedicate app for this. Which I don't want for a lot of reasons, mostly just for the overhead. Spinning up another instance, dev servers and all that and more. It's only half way done, but you will find it in the UI's tool section when it is.

Reporting Page

  • to make it even easier for you to submit a bug report, a page has been created within the devstack ui for you to do so
    • bug - brief description of prob
    • URL
    • description
  • Currently there are over 2400 tests, even though this covers over 90% of the extensions functionality, I still need to write the remaining tests. In the mean time if you come across something that does not work, let me know

Issues and Bugs

  • currently none to report on
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft