DevStack
The Extension That Fixed VSCode
I stopped looking for VSCode alternatives. Not because VSCode is perfect. Because DevStack made it perfect. 45 projects. 20,000+ lines of configuration. One seamless environment. This is what VSCode should have been.
TOC
- OVERVIEW
- FEATURES
- GETTING STARTED
- FUNCTION SHOWCASE
- PROJECT ROADMAP
- LICENSE
- ACKNOWLEDGMENTS
FEATURES
The Problem Every Developer Knows
You can have features or you can have performance. Pick one.
Before DevStack, I maxed out at 13-15 extensions before VSCode became unbearably slow. Every new tool meant choosing what to disable. Every project had different needs but the same limited toolset.
The Solution Nobody Else Built
DevStack consolidates 100+ essential development tools into one unified, zero-conflict extension that runs faster than 13-15 traditional extensions combined.
But here's what makes it revolutionary: context-aware configuration switching.
Real-World Usage:
- ✅ 45+ workspace-specific configurations
- ✅ Each workspace: ~450 lines of custom commands
- ✅ 20,000+ total lines of configuration managed effortlessly
- ✅ Commands automatically load when switching workspaces
- ✅ Faster performance than 13-15 basic extensions
- ✅ Zero manual configuration switching
- ✅ Zero conflicts between workspace setups
Each project gets exactly the tools it needs. Automatically.
Core Systems
🚀 Virtual Filing System (VFS)
The only shortcuts system with intelligent, seamless configuration merging.
Intelligent Configuration Architecture (Completely Unique)
The Problem:
Most developers work on multiple projects simultaneously:
- Personal projects vs. work projects
- Frontend vs. backend vs. DevOps
- Different frameworks, different tools, different workflows
Traditional extensions give you two bad choices:
- One massive config - Cluttered with commands you don't need in current context
- Manual switching - Tedious, error-prone, breaks your flow
DevStack's Revolutionary Solution: Seamless Config Merging
How It Works:
Global Config - Universal commands available everywhere
- Git operations
- File management
- General VSCode commands
- Your personal workflow tools
Workspace Configs - Project-specific commands
- Framework-specific shortcuts
- API endpoints for this project
- Build/deploy commands
- Project-specific utilities
Automatic Merging - DevStack combines them seamlessly
- Open any workspace → DevStack instantly merges global + workspace configs
- Appears as ONE unified tree view
- Completely transparent - you can't tell where global ends and workspace begins
- Zero configuration - happens automatically
- Instant switching - no lag between workspaces
Real-World Production Stats:
- 45+ workspace configurations actively managed
- ~450 lines per workspace config
- 20,000+ total configuration lines
- One seamless, unified experience
- Zero manual config switching
- Faster than 13-15 basic extensions
The User Experience
What You See:
Open "Frontend-React-Project" → See one unified command tree with:
- Your global git shortcuts
- Your global file operations
- React component insertion commands
- Tailwind styling shortcuts
- This project's API endpoints
- This project's build commands
Switch to "Backend-Node-API" → Instantly see one unified command tree with:
- Your global git shortcuts (same ones)
- Your global file operations (same ones)
- Prisma database commands
- API route generators
- This project's test runners
- This project's deployment scripts
You never think about "global vs workspace." You just see the commands you need, when you need them.
Real Production Example
45 Active Workspaces, Each Unique:
Frontend Projects (12 workspaces)
├── React + Tailwind shortcuts
├── Component library commands
├── Styling automation
└── Preview & deployment tools
Backend Projects (15 workspaces)
├── Prisma database commands
├── API generation tools
├── Testing frameworks
└── Server deployment
Full-Stack Projects (10 workspaces)
├── Combined frontend + backend
├── Monorepo management
├── Coordinated deployments
└── Full-stack testing
DevOps Projects (5 workspaces)
├── Docker commands
├── CI/CD pipelines
├── Infrastructure tools
└── Monitoring setup
Documentation Projects (3 workspaces)
├── Markdown tools
├── Diagram generation
├── Publishing workflows
└── Content management
Every workspace: Different tools, different workflows, different commands
Every switch: Instant, automatic, seamless
Every experience: Unified, fast, intuitive
20,000+ lines of configuration. Feels like one.
Why This Architecture Is Revolutionary
Traditional Extensions:
You: *opens Project A*
Extension: *loads commands from config.json*
You: *opens Project B*
Extension: *still shows Project A's commands*
You: *manually edits config or switches profiles*
Extension: *reloads, breaks flow*
DevStack:
You: *opens Project A*
DevStack: *instantly merges global + Project A config*
*shows unified tree*
You: *opens Project B*
DevStack: *instantly merges global + Project B config*
*shows unified tree*
You: *never even noticed the switch*
It Just Works.™
Technical Capabilities
Execution Modes (No Other Extension Has Both):
Concurrent Execution:
- Run multiple commands simultaneously
- Perfect for parallel build processes
- Start dev server + watch mode + type checking simultaneously
- Massive time savings on complex workflows
Sequential Execution:
- Run commands in order
- Wait for each to complete before next
- Perfect for dependent operations
- Build → Test → Deploy pipelines
Mixed Mode:
- Combine concurrent AND sequential in same workflow
- Example: Start 3 servers concurrently, then sequentially run tests
- Ultimate flexibility
Shell Integration:
- Execute any PowerShell command with full flags
- Execute any Bash command with full flags
- Mix VSCode commands + shell commands in same sequence
- Non-restrictive shell environment
- True automation power
Timing & Control:
- Configurable delays between commands
- Precise execution timing
- Conditional execution (run command B if command A fails) - coming soon
- Variable substitution (workspace paths, file names, environment vars)
Scale Without Limits:
- Unlimited commands per workspace
- Unlimited workspace configs
- Proven stable: 45 workspaces × 450 lines = 20,250 lines
- Search finds anything instantly
- Zero performance degradation
550+ Searchable VSCode Commands:
- Categorized menu during command creation
- See all available commands without leaving VSCode
- Filter by category or search by name
- Add arguments inline with hints
- No documentation hunting required
445+ Built-in Commands:
- Production-ready command sequences
- Copy as-is or customize
- Common workflows pre-built
- Saves hours of configuration
520+ Custom Icons:
- Full VSCode icon library
- Customize any item or folder
- Icons at any nesting level
- Visual organization for instant recognition
- Makes massive configs navigable
Powerful Search:
- Essential for 100+ command configs
- Search by name, description, or content
- Works across global AND workspace configs
- Instant results in 450+ line configs
- Find that command you created 6 months ago
Organizational Freedom:
- Tree view with unlimited nesting
- Organize exactly how you think
- Folders within folders within folders
- Status bar quick access
- Context menu integration
- Keyboard-driven navigation
- Drag & drop reordering (if available)
Comparison: DevStack vs. Every Other Extension
vs. multi-command (166,510 installs) - Current Market Leader:
| Feature |
DevStack |
multi-command |
| Concurrent execution |
✅ |
❌ Sequential only |
| Workspace-specific configs |
✅ Seamless merging |
❌ One config file |
| Shell integration |
✅ Full PowerShell/Bash |
❌ VSCode only (needs plugin) |
| Custom icons |
✅ 520+ icons |
❌ No icons |
| Command discovery |
✅ 550+ searchable |
❌ Manual documentation |
| Config search |
✅ Instant search |
❌ Scroll through file |
| Scale proven |
✅ 20,000+ lines |
❌ Breaks at scale |
| User interface |
✅ Tree view + status bar |
❌ Config file only |
| Visual organization |
✅ Unlimited nesting |
❌ Flat keybindings |
vs. Commands (18,927 installs) - Best UI Alternative:
| Feature |
DevStack |
Commands |
| Concurrent execution |
✅ |
❌ Sequential only |
| Workspace config merging |
✅ Seamless |
⚠️ Basic workspace support |
| Shell integration |
✅ Full PowerShell/Bash |
❌ VSCode only |
| Unlimited commands |
✅ |
⚠️ Limited |
| Command library |
✅ 550+ searchable |
❌ None |
| Search for large configs |
✅ Built for scale |
⚠️ Basic |
| Scale proven |
✅ 450+ lines per workspace |
❌ Not designed for scale |
| Config merging |
✅ Automatic |
❌ Manual |
vs. Macro Commander:
| Feature |
DevStack |
Macro Commander |
| Workspace configs |
✅ 45+ with merging |
❌ None |
| User-friendly |
✅ Visual UI |
❌ JavaScript required |
| Icons |
✅ 520+ |
❌ None |
| Organization |
✅ Tree view |
❌ None |
| Command library |
✅ 550+ searchable |
❌ None |
| Shell integration |
✅ Full support |
⚠️ Limited |
The Verdict:
DevStack has EVERY feature from ALL top extensions, PLUS features nobody else offers:
Unique to DevStack:
- ✅ Concurrent execution
- ✅ Seamless workspace config merging
- ✅ Full shell integration
- ✅ 550+ command discovery system
- ✅ Proven at 20,000+ line scale
- ✅ True multi-project architecture
If you manage:
- More than 20 commands → DevStack is better
- More than 3 projects → DevStack is essential
- More than 10 projects → DevStack is the only option
- 45+ projects → DevStack is literally the only extension that can handle it
Real Talk: This Changes Everything
The Old Way (Every Other Extension):
Morning:
08:00 - Open frontend project
08:01 - Realize you have backend shortcuts loaded
08:02 - Edit config file, comment out backend commands
08:03 - Reload VSCode
08:04 - Finally start working
10:00 - Need to switch to backend project
10:01 - Edit config file, uncomment backend, comment frontend
10:02 - Reload VSCode
10:03 - Back to work
12:00 - Quick fix on DevOps project
12:01 - Sigh deeply
12:02 - Edit config AGAIN
12:03 - Reload AGAIN
12:04 - Fix takes 30 seconds, context switching took 3 minutes
The DevStack Way:
Morning:
08:00 - Open frontend project → See frontend commands + global tools
10:00 - Open backend project → See backend commands + global tools
12:00 - Open DevOps project → See DevOps commands + global tools
Total time thinking about config: 0 seconds
Total reloads: 0
Total frustration: 0
This is the difference between:
- Managing configuration vs. building features
- Fighting your tools vs. tools serving you
- Hobby project vs. professional workflow
From:
- 13-15 extensions max (performance ceiling)
- One bloated config serving all projects
- Manual config switching breaking flow
- Scrolling through irrelevant commands
- Limited to ~50 commands before breaking
To:
- 100+ tools in one extension
- 45+ specialized configurations
- Automatic, seamless switching
- Only see commands you need
- 20,000+ commands managed effortlessly
One extension. Zero compromises. Infinite scale.
That's DevStack.
GETTING STARTED
Requirements
Your VSCode instance must be within a workspace for the extension to become and remain active. For example, if you open a single file while that instance is not within a workspace or in a new window / instance, the extension will not be available for use and will be hidden from view.
Usage
VSCode GUI
| Aspect |
Details |
| To Add Items |
- click on the plus icon in the extensions title pane
- you have a choice of adding an item through the vscode interaface or the web interface, for your first time use the vscode interface as it can be a lot simpler for adding simple items
- a quick pic will pop up asking what type of item you would like to add
- after selecting an option, enter the items label
- it will then ask for the value you would to assign this item, for example,
editor.foldLevel2 would be the value you place here. If you have a value in your clipboard it will automatically paste that value here for you. If you browsing the available commands and copied the one you needed, that value will be inserted for you once you reach this step. Regardless of what you are adding, whenever you come to this step this process will take place. - you can now select which folder to place the item within
- step-by-step visual breakdown
|
| To Add Files As Items |
- in the explorer view, right click on any file select add to devstack
- same process as above, except it will not ask for a value because the files location will be that value
- step-by-step visual breakdown
|
| To Edit / Delete Items |
- in the extensions file tree, you may right click any item to bring up a context menu that will allow you:
- edit item, where you will be put through the step-by-step process of editing the label, value and its location
- edit label
- edit value
- move item
- delete
- toggle hidden, switches from false to true and vice versa
- context menu
|
| To Edit / Delete Folders |
- in the extensions file tree, you may right click any folder to bring up a context menu that will allow you:
- edit folder label
- move folder
- delete
- expand folder by default
- collapse folder by default
- toggle hidden, switches from false to true and vice versa
- context menu
|
| To Execute / Trigger Items |
|
.json Config Settings
| Aspect | Details |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|Note|You will never need to edit the config file, I'm only including it for the people who would rather configure the extenstion through the config file instead of the VSCode GUI or Web GUI. If you use code over code-insiders ( bleeding edge release ), use code in-place of code-insiders. In the following config, there will one example for each type.|
|Global and Workspace Folders| - Folders need the following values:
- label - string
- type -
folder - expanded - boolean, whether or not the folder is expanded on start-up.
- global - boolean
- items - array
- hidden - boolean ( optional )
- Items placed inside global folders will be available to you no matter the workspace you are working in. Workspace folders and the items contained within, will only be available while working within that workspace.
|
|Config Example||
{
"categories": [
{
"label": "MAIN",
"expanded": false,
"type": "folder",
"global": true,
"items": [
{
"label": "CRM",
"path": "code-insiders -n f:/DevStack",
"type": "powershellCommand"
}
]
},
{
"label": "UTILS",
"expanded": false,
"type": "folder",
"global": false,
"items": [
{
"label": "prisma.schema",
"path": "prisma/prisma.schema",
"type": "file"
}
]
},
{
"label": "HIDDEN",
"expanded": false,
"type": "folder",
"global": false,
"hidden": true,
"items": [
{
"label": "generateAndBuild",
"path": "pnpm run generate && pnpm run build",
"hidden": true,
"type": "powershellCommand"
}
]
}
]
}
|
| Items | - The following types are available:
- url - opens default browser at your items value
- command - triggers the command
- file - opens the file within vscode
- snippet - copies the snippets body to your clipboard
- powershellCommand - triggers command within powershell
- debianCMD - triggers command with windows debian wsl
- chain - extecutes the given commands sequentially
- concurrent - executes the given commands all at once
- copyValue - copies the value to your clipboard
- Each item has the following values:
- label - string
- path - the items value
- type - 'file' | 'fileAtLine' | 'url' | 'command' | 'snippet' | 'powershellCommand' | 'debianCMD' | 'chain' | 'concurrent' | 'copyValue'
|
| Config Example |
{
"categories": [
{
"label": "MAIN",
"expanded": false,
"type": "folder",
"global": true,
"items": [
{ "label": "seed.ts", "path": "prisma/seed.ts", "type": "file" },
{ "label": "seed.ts", "path": "prisma/seed.ts:425", "type": "fileAtLine" },
{
"label": "Google",
"path": "https://www.google.com",
"type": "url"
},
{
"label": "CRM",
"path": "code-insiders -n f:/DevStack",
"type": "powershellCommand"
},
{
"label": "SAVE ALL",
"path": "workbench.action.files.saveAll",
"type": "command"
},
// for chain and concurrent item types, you can place any number of items to execute as you wish. The items that you included can either be hidden or not, personally I have a folder that contains all the commands I use within these two types and are kept hidden from view. To configured the commands to execute place each items label in the path value seperated by commas just like the given examples below.
// chain or sequential: once triggered it will execute each item, only moving on to the next once the current item finishes. The commands are fed into a function in which it determins which type of command it is before executing it in its respective enviroment. It checks to see whether it is a file | md, command, url, powershellCommand, debianCMD, copyValue, chain, conncurrent
// concurrent: Making the same checks on its item type as chain, it fires off the set of commands all at once in their respective enviroments, while any powershell commands that are executed will pipe through a single terminal. The terminal output will be reminiscent of the previous version turbo repos terminal output. If you are unfamiliar with it, all powershell output will be piped into a singular instance. Each commands output will vary in different colors, if for example your concurrent command was to set off 3 dev servers, each dev server will output to the same terminal window but each having their own set color. Allowing you to quickly determine what is happening in each shell. The terminal allows input that will pipe it through each of the active shells, if / when you need to close the dev servers you can do so at anytime, the terminal will remain open and act as any normal powershell window would. In the future, I will figure out how to do the same within the windows debian WSL shell and pipe its commands through the same instance, as of now it just executes each command within its own shell.
// with the code configured as it is, you can create a concurrent command that contains a sequential type item within its set commands. Allowing you to run both types at once if your use case needs / allows it.
{
"label": "Kill Terminals && Start DEV Server",
"path": "saveall, killterms, devApp",
"type": "chain"
},
{
"label": "dev:all",
"path": "devApp, devCalc",
"type": "concurrent"
},
{
"label": "HIDDEN",
"expanded": false,
"type": "folder",
"global": true,
"hidden": true,
"items": [
{
"label": "saveall",
"path": "workbench.action.files.saveAll",
"type": "command",
"hidden": true
},
]
},
// creates a terminal shell similar to opening a new Debian (WSL) terminal within the vscode instance, instead of the other options that are available. This opens up the options at your disposal of what can be done with the given commands. The following item is a great example, in which the program with its set flags will not open in any other shell type. Once this command executes, the shell changes folder locations and opens vlc with the set playlist that is stored within the windows file system. After execution, the terminal is free to use with any other commands you would like and can even be closed and does not vlc that is currently running, as if you had manually typed in the command yourself.
{
"label": "VLC w/ playlist",
"path": "cd /mnt/f/music && '/mnt/c/Program Files/VideoLAN/VLC/vlc.exe' playlist.xspf",
"type": "debianCMD"
},
{
"label": "Copy to clipboard",
"path": "Value to be copied into the clipboard",
"type": "copyValue"
},
{
"label": "prisma.schema",
"path": "prisma/prisma.schema",
"type": "file"
},
// Place the snippets title / name within the label. Whenever you create a snippet with the extension it places the snippet within a globally available file, making it accessible from any workspace. In order to maintain vscodes functionality of inline snippet insertion, that global file is copies to your current workspaces .vscode folder, so don't edit that file because it will overwritten at startup. You can either use the extensions snippet file or use your own in place of it. Allowing you to have multiple snippet files stored within your .vscode folder, ocrmnavigator.code-snippets is the extensions snippet file.
{
"label": "Snippet Name",
"path": "ocrmnavigator.code-snippets",
"type": "snippet"
}
]
},
]
}
|
Function Showcase
Functions TOC
VFS
Virtual Filing System
| Aspect | Details |
| --------------- | -------------------------------------------- |
|Function|Programmable virtual file tree system|
|Description| - Provides unlimited programmable items in the form of a file tree in a explorer pane, while also providing functionality in a web gui enviroment, where you can virtually add anything you want including but not limited to:
- files
- Quick access to your most-used files
- Edit display labels for files
- Copy file paths from the items context menu
- reveal file in explorer from context menu
- can also be set to hidden
- The following items effects all item types
- icons
- each config item can be set with a custom icon by setting the variable
icon - whenever adding / editing items
- icons table
- object:
{ "label": "UNFOLD All", "path": "editor.unfoldAll", "type": "command", "icon": "unfold" },
- config reference
- aside from
command type items, whenever creating / editing an item you will be presented the following options when you reach the set of intputing the objects command value- Input, where you can input the value via a text input
- Config reference, instead of having to dig for and open the merged or global config files to reference commands currently within your config. This option presents a list relevant to the one you are now creating, displaying all items that whenever clicked, copies that commands value into your clipboard and then navigates you to the input option. Allowing you to grab a complicated command, or one that you can't remember the value for, paste it into the input box and either edit it for your new item or add it onto a list of commands you already you had in mind
fileAtLine- while the
file opens a file at the begining of the file, this opens the file at the specified line number { "label": "seed.ts", "path": "prisma/seed.ts:425", "type": "fileAtLine" }- in the path value place the relative file path similar to the
file type, followed by the desired line number
- folders
- able to set global and workspace folders
- add as many folders you need for either global or workspace
- folders can be set to expand on instance start to be expanded or collapsed
- folders can also be set to hidden
- URL's
- access websites directly from the extensions pane
- VSCode Command
- executed via vscodes api
- after selecting the
command type when you start the creation process within the devstack interface, you will be provided with several options:- first choice will be
custom input, vscode commands list, devstack commands list - input allows custom values to be used, if one of the provided lists do not have what you need
- vscode commands list comprises of 550+ vscode commands that can be executed
- the devstack options lists 450+ functions that can be executed. All of these functions were built into the extension and are available for you to use as you wish. Whether it be in stand alone commands to execute, sequentially triggered commands, or concurrently executed commands
- commands quickpick options automatically gets updated each time the extension goes through its build process, giving you the most up to date list at all times. I started creating descriptions and categories for each item but is currently a wip. In the meantime, just so you have something to go off of, I'll run the list through an ai prompt having it add a description to each, but till I verify each one there may be one or two descriptions that are slightly off. There currently 400+ commands to choose from, if you would like to review that list it is included in the wizards section of the readme
- PowerShell Command
- executes in windows powershell, just as if you had typed it out
- Bash Command
- executes in windows debian wsl terminal env
- Snippet
- adding to the already included functionality of inline snippet insertion, saving a snippet as an item will have its body content placed into your clipboard whenever clicked
- Sequential Command Execution
- execute whatever items you want in your desired set order
- when creating items through the interface there are two options, one for concurrent / sequential cmds and another for the remaining types. The difference being, once you reach the commands value in the create concurrent / sequential process, the function enters a for loop allowing you to add as many custom / listed commands as you need
- Concurrent Command Execution
- execute whatever items in a threaded capacity
- Copy to clipboard
- placing any value you have set into your clipboard
|
|Usage|see usage|
|Advanced Usage|Sequential/concurrent execution, project-agnostic configuration|
|Preview|Image|
|Config|{
"categories": [
{
"label": "MAIN",
"expanded": false,
"type": "folder",
"global": true,
"items": [
{ "label": "Google", "path": "https://www.google.com", "type": "url" },
{ "label": "CRM", "path": "code-insiders -n f:/DevStack", "type": "powershellCommand" },
{ "label": "SAVE ALL", "path": "workbench.action.files.saveAll", "type": "command" },
{ "label": "Kill Terminals && Start DEV Server", "path": "saveall, killterms, devApp", "type": "chain" },
{ "label": "dev:all", "path": "devApp, devCalc", "type": "concurrent" },
{
"label": "HIDDEN",
"expanded": false,
"type": "folder",
"global": true,
"hidden": true,
"items": [
{ "label": "saveall", "path": "workbench.action.files.saveAll", "type": "command", "hidden": true },
]
},
{ "label": "VLC w/ playlist", "path": "cd /mnt/f/music && '/mnt/c/Program Files/VideoLAN/VLC/vlc.exe' playlist.xspf", "type": "debianCMD" },
{ "label": "Copy to clipboard", "path": "Value to be copied into the clipboard", "type": "copyValue" },
{ "label": "prisma.schema", "path": "prisma/prisma.schema", "type": "file" },
{ "label": "Snippet Name", "path": "ocrmnavigator.code-snippets", "type": "snippet" }
]
},
]
}
|
VSCode Commands
| Aspect |
Details |
| Function |
Program VSCode commands as file tree items |
| Description |
Any VSCode command can be programmed as an item in the file tree. No limit to quantity |
| Usage |
|
- edit
- remove
- trigger whenever clicked within the extensions window
- set type
command in config object or click the plus icon in the title pane |
| Advanced Usage | Chain commands, sequential execution, cheat sheet with 360+ commands |
| Preview | Image |
PowerShell Command
| Aspect |
Details |
| Function |
Execute inline PowerShell commands |
| Description |
Create any inline PowerShell command needed. Can run scripts, node scripts, build processes |
| Usage |
|
- edit
- remove
- trigger whenever clicked within the extensions window
- set type
powershellCommand in config object or click the plus icon in the title pane |
| Advanced Usage | Complex scripts, parameter passing, project-specific commands |
| Preview | Image |
Bash Commands
| Aspect |
Details |
| Function |
Execute Debian WSL commands |
| Description |
Run any command in Debian WSL environment. Execute programs with pre-programmed flags |
| Usage |
|
- edit
- remove
- trigger whenever clicked within the extensions window
- set type
debianCMD in config object or click the plus icon in the title pane |
| Advanced Usage | WSL integration, environment variables, complex workflows |
| Preview | Image |
Sequential Execution
| Aspect |
Details |
| Function |
Run commands in specified order |
| Description |
Program any number of items to trigger one after another, ensuring each process executes in required order |
| Usage |
|
- edit
- remove
- trigger whenever clicked within the extensions window
- set type
chain in config object or click the plus icon in the title pane |
| Advanced Usage | Mixed sequential/concurrent flows, conditional execution |
| Preview | Video |
| Preview | Image |
Concurrent Execution
| Aspect |
Details |
| Function |
Run commands simultaneously |
| Description |
Execute commands all at once for speed. Can run alongside sequential commands |
| Usage |
|
- edit
- remove
- trigger whenever clicked within the extensions window
- set type
concurrent in config object or click the plus icon in the title pane |
| Advanced Usage | Priority-based execution, resource management |
| Preview | [Video] |
| Description | - Two new execute functions have been added to handle different execution patterns:
- Sequential Execution: Functions are called with
await, enabling features like the sequential executor to run commands one after another in order. - Concurrent Execution: The
await keyword is omitted to allow parallel command execution for the concurrent feature.
- The concurrent executor now pipes both PowerShell and Bash commands into a single terminal instance while maintaining several key features:
- - Each command's output continues to display in a distinct color for easy differentiation
- - The main terminal instance remains interactive, allowing you to input commands such as canceling running processes
- - When processes are cancelled, the terminal instance remains open and functions as a regular PowerShell terminal
- All other commands execute in their own separate environments and terminal instances that persist after completion. This means if a command fails, its output remains available for review and debugging.
|
| Usage | Navigate to extension settings and toggle "Bleeding Edge" to true to enable experimental features |
| Advanced Usage | set "ocrmnavigator.CONCURRENT": bleeding-edge, in your global / workspace settings files |
| Aspect |
Details |
| Function |
setting values in order to unlock or remove certain functionality within the extension |
| Location |
Workspace root labeled .order66 |
| Values |
|
- G4 and .vsix the first value for each item is its default
UPDATE_PROMPT_OBJECTS: false | true
CONVERT_README_DEV_MD: false | true
AUTORUN_SCRIPTS: false | true
AUTORUN_DIR: src,
PRO7: false | true
ARCHIVER: custom | vsce
DELETE_OLD_VSIX: true | false
AUTO_INSTALL_VSIX: true | false
OPEN_PUB_DASH: false | true
RELOAD_INSTANCE: false | true
- BE quickpick menu
- Auto Fold Level 2 Pkg.json On File Open
AUTO_FOLD_PKG: false | true |
Project Agnostic Configuration
| Aspect | Details |
| ------------------ | --------------------------------------------------------------------------------------------------------- |
|Function|Split configuration between global and workspace|
|Description|First-level folders can be globally available or confined to specific workspace|
|Usage|Configure folders as global or workspace-specific|
|Advanced Usage|Hybrid configurations, per-project customization|
|Config Files|Global and workspace JSON config files|
|Preview Image|Image|
|Preview Video|Video|
|Config| |
{
"label": "MAIN",
"expanded": false,
"type": "folder",
// this value can either be set within the config itself, or when creating / editing folder items within the web GUI or vscode GUI.
"global": true,
"items": []
}
|
DevStack Quickpick
Overview
| Aspect |
Details |
| Function |
Quick access menu for DevStack features |
| Description |
Comprehensive quick pick menu accessing formatters, database operations, and build processes |
| Usage |
Alt + Shift + D to open menu |
| Advanced Usage |
Includes G3 (git add/commit/push), G4 (upgrade patch), Prisma DB operations, file system cleaning |
| Features |
Git operations (G3, G4) Prisma database management File system cleaning VSCode restart options Build processes |
| Preview |
Image |
Available Options
Git Operations
| Option |
Description |
| G3 |
git add && commit && push |
| G4 |
git add && commit && push && pnpm version patch && git push && git push --tags |
| G4 & .vsix |
One click does all for developing extensions |
| G4 & push vercel |
Same as G4 but drops the creation of the vsix archive |
| G4 & Pub To NPM |
Same as G4 but drops the creation of the vsix archive in place for npm publish |
Build Processes
| Option |
Description |
| Custom VSIX Packager |
Custom vsix packager with smaller package sizes than vsce |
| .vsix build local & install |
Just compiles, builds archive and installs it |
VSCode Operations
| Option |
Description |
| R EXT |
Reload Extension |
| R TS |
Reload Typescript server |
| R Window |
Reload Window |
| DevTools |
Opens Devtools for vscode |
Fold Operations
| Option |
Description |
| Fold Region |
Fold regions 1 through 7 |
| Toggle Region |
Toggle regions 1 through 7 |
| Option |
Description |
| format Current Json File |
Formats current json, turning multiline objects into inline |
| format Json File |
Formats current json, turning multiline objects into inline (takes file path as argument) |
| format Packge Dev Json |
format package.dev.json, turning multiline objects into inline |
| format GBL Nav Config Json |
formats global nav configuration json file |
| Toggle json Validation |
Turns off error checking |
| Toggle jsonc Validation |
Turns off error checking |
Prisma Operations
| Option |
Description |
| * Remote |
Executes all commands for remote server (requires LOCAL and REMOTE in env file) |
| * Local |
Executes all commands for local server (swaps DATABASE_URL) |
| Reset |
prisma reset |
| Push |
prisma push |
| Seed |
prisma seed |
| Gen |
generate prisma docs |
| Studio |
starts the studio server for prisma |
File System Operations
| Option |
Description |
| Clean * |
Removes caches, node_modules, and anything generated via build process |
| Duke NUKEM |
Removes everything before installing with a clean slate |
| i |
install library |
| build |
Build Project |
| Option |
Description |
| Disable For Current File |
disables background processes for current file type |
| Enable For Current File |
enables background processes for current file type |
| DISABLE EVERYTHING |
disables background processes for ALL file types |
| Enable Everything |
enables background processes for ALL file types |
| Toggle Global Disable |
toggles between the two states |
Detailed Descriptions
G4 & .vsix Build Process
- Scans workspace root for
.order66 config file (falls back to defaults)
- Saves any editors in dirty state
- Triggers all node.js scripts in
autorun folder (configurable via AUTORUN_DIR='src') except any scripts labeled pro7.js
- Converts
README.dev.md to README.md (if CONVERT_README_DEV_MD=true)
- Deletes old .vsix archives
- Deletes old .7zip archives
- Scans for packager and runs compile command
- Creates vsix archive (custom or vsce via
ARCHIVER setting)
- Secures sensitive files in password protected archive (if
PRO7=true) or runs pro7.js in the autorun folder
- Checks git status and runs appropriate github commands
- Auto-installs locally (if
AUTO_INSTALL_VSIX=true)
- Opens publisher dashboard (if
OPEN_PUB_DASH=true)
- Restarts vscode instance (if
RELOAD_INSTANCE=true)
There was a change to the order in which each step executed, and a couple that were added. Unaware at the time of building the scripts for this, microsoft flags any password protected archives that are within the .vsix archive. Now deletes old .vsix and .7zip archives earlier, and the .vsix archive step has been moved up, while the .7zip archive process has been moved to execute later but before the push to github
Preview: Image
Custom VSIX Packager
- Meets all requirements for listing extension
- Smaller package sizes than vsce
- More resilient build process (won't error out with SVGs in readme)
Pro7 Archiver
Secures sensitive files within password protected archives for safe GitHub pushing.
Note: Everything in one click - complete extension publishing workflow.
BE Quickpick
Overview
The BE Quickpick provides quick access to various backend development tools and utilities.
Available Options
Settings Management
| Option |
Description |
| Global Settings File |
Opens the global settings JSON file for editing |
| WS Settings File |
Opens the workspace settings JSON file for editing |
| toggle Ws Disable |
Toggles workspace-specific settings disable/enable |
| toggle Ext Disable |
Toggles extension-specific settings disable/enable |
| toggle F Disable |
Toggles file-specific settings disable/enable |
| toggle Global Disable |
Toggles global settings disable/enable |
| restore Ws Settings Except File |
Restores workspace settings while preserving file-specific configurations |
| restore Gbl Settings Except File |
Restores global settings while preserving file-specific configurations |
| Option |
Description |
| auto Create Schema |
Automatically generates database schema files |
| trigger Autorun Folder |
Executes scripts located in the autorun folder |
| check Vsix Now |
Immediately checks for VSIX extension updates |
| vsix Build Local Install |
Builds VSIX package and installs it locally |
Markdown Processing
| Option |
Description |
| MD File To Safe Inline String |
Converts markdown files to safe inline string format |
| md pre-processer |
Processes markdown files with pre-processing rules |
Regex Utilities
| Option |
Description |
| toggle Regex Preview |
Toggles regex pattern preview mode |
| open Regex Helper |
Opens regex helper tool for pattern creation |
| toggle Regex GM |
Toggles global/multiline regex flags |
Reveal In Explorer
| Aspect |
Details |
| Function |
Open file location in system explorer |
| Description |
r-click any file to reveal its location in Windows Explorer/Finder |
| Usage |
r-click in extensions pane → Reveal in Explorer |
| Advanced Usage |
Works from DevStack sidebar and editor context menu |
| Preview |
Image |
Copy Path
| Aspect |
Details |
| Function |
Copy file path to clipboard |
| Description |
Copies full file path or relative path to clipboard |
| Usage |
r-click in extensions pane → Copy Path |
| Advanced Usage |
Works with multiple path formats |
| Preview |
Video |
Search
| Aspect |
Details |
| Function |
Allows you to search through all of your commands that you have made in the extension and executing its item when selected, while also allowing you to see exactly what the command is before executing it |
| Description |
Quick search functionality with title bar access |
| Usage |
Click title bar button for instant access |
| Preview |
Video |
| Preview |
Image |
MARKDOWN
MD Viewer/Renderer
| Aspect |
Details |
| Function |
Render markdown files in browser |
| Description |
View markdown files with proper rendering in browser |
| Usage |
r-click in editor → DevStack → select option |
| Advanced Usage |
Custom CSS, export options, theming |
| Preview |
Image |
MD Viewer/Renderer In VSCode
| Aspect |
Details |
| Function |
Side-by-side markdown preview in VSCode |
| Description |
Displays markdown renderer side by side within VSCode |
| Usage |
r-click in editor → DevStack → select option |
| Advanced Usage |
Live editing, sync scrolling, split views |
| Preview |
Image |
Catalyst Editor
| Aspect |
Details |
| Description |
Staring out as a markdown editor, evolving into multi language support editor built using microsofts monaco editor. Leveraging its api system to continusouly add features along side its default feature set. |
| Features |
- Multi language support covering:
|
- Markdown
- JavaScript
- TypeScript
- HTML
- CSS
- SCSS
- JSON
- Python
- SQL
- YAML
- XML
- Java
- C#
- C++
- PHP
- Rust
- Go
- Shell
- Multi tab auto save
- Persistent editor settings saved locally
- Toggle mini-map
- Toggle line numbering
- Toggle line folding w/ custom rules sets alongside default regions
- Markdown preview, in either full screen or split
- Full screen
- Access to all md files within your currently active workspace allowing you to:
- Keyboard shortcuts including:
- Alt + S - Manual save
- Alt + R - Rename tab
- Alt + P - Toggle preview
- Alt + N - Create new tab
- Alt + W - Close current tab
- Alt + F - Search / find
- Ctrl +
+ | - - Zoom in / out
- Alt + T - Create new TypeScript tab
- Alt + M - Create new Markdown tab
- Reset local storage
- Place entire tab's content into clipboard
- Format document
- Toggle line wrapping
- Find & replace
- Command palette
- Editor sidebar containing:
- Outline
- your document's table of contents that dynamically creates clickable links to navigate within your document
- Markdown reference sheet
- whenever an item is clicked placing its contents into your clipboard to be used wherever pasted
- For example if you click on the table, it will place a markdown formatted table in the clipboard
- all sections, templates, and guides follow the guidelines set forth from github in respect to their markdown renderer
- includes 100% of GitHub-flavored Markdown formatting examples
- File explorer
- select files within your file system to open and edit within the edtior
- Readme generator
- number of sections, where when clicked are put into your clip board to use any where in your document, toc's, badges, and more
- great tool to help speed up the process of building your readme
- Readme Builder
Convert MD File To Safe Inline String
| Aspect |
Details |
| Description |
Converts markdown file content into a JSON-safe inline string by escaping special characters and replacing line breaks with \n |
| Usage |
r-click on an MD file in explorer or use command palette with active editor open, can also take in a file url as an argument to progmatically trigger |
| Preview |
[Image] |
| BE Quickpick |
available for use in the be quickpick menu located on the status bar |
| Usage |
select Convert MD File To Safe Inline String from the be quickpic |
SNIPPETS
Editor / Viewer
| Aspect |
Details |
| Function |
Global snippet management |
| Description |
Snippet viewer/editor built using a Monaco editor for creating / editing / viewing snippets |
| Usage |
Access via extensions title pane / web gui |
| Advanced Usage |
Fuzzy search, quick insertion, automatic workspace sync |
| Preview |
Image |
Context Snippets
| Aspect |
Details |
| Function |
Insert snippets from editor context |
| Description |
Access snippets directly from editor context menu, with search capabilities |
| Usage |
r-click → devstack → context snippets |
| Advanced Usage |
Language-specific snippets, variables, placeholders |
| Preview |
Image |
UI LIBRARY
Catalyst UI
| Aspect |
Details |
| Description |
1808+ components with free/premium tiers. Currently up and running with 193 free components, while offering a plethora of tools to use covering a wide range or development topics. |
| Usage |
shortcut to website accessible through the title pane |
| Advanced Usage |
- Search/filter
- component viewer
- live preview
- react sandbox
- one click installtion of library and configuration of tailwind, and another option just to install components
|
| Tools |
|
- list of available tools to use
- Sandbox
- live react / tailwind development environment
- libraries inventory accessible within the sandbox
- Image
- Image |
- Color Wheel
- MD Reference sheet
- Icons
- VSCode Cmds Reference
- v3 <-> v4 tailwind css converter
- tailwind and vscode theme builder
- formatters
- catalyst editor
- encoder
- list of resusable tools to use within your own projects
| Site | Link |
| Aspect |
Details |
| Function |
Granting access to the entire library from within the editors context menu, inserting all 1808+ components at cursor |
| Usage |
r-click → Catalyst UI → Select component |
| Preview |
Image |
Insert Component via Quickpick
| Aspect |
Details |
| Function |
A quickpick with search capabilities featuring a nested list of available options that inserts the component at cursor |
| Usage |
ui ( located on status bar ) → Select component |
| Preview |
Image |
Install Library Through Extension
| Aspect |
Details |
| Function |
One-click UI library installation |
| Description |
Installs Catalyst UI library with proper folder structure and configurations |
| Usage |
r-click → Install Catalyst UI |
| Installation Breakdown |
- full installation
- installs all required libaries
- creates tailwind.config.js
- creates styles/tailwind.css
- create postcss.config.js
- creates all available components within the components folder
- components only
- installs all required libraries
- creates all available components within the components folder
|
| Preview |
Image |
ICONS LIBRARY
Icons
| Aspect |
Details |
| Function |
React icon library |
| Description |
Icon library designed for simplicity and accuracy with sensible naming convention |
| Installation |
pnpm add @catalystsoftware/icons |
| Usage |
import { Message } from '@catalystsoftware/icons' |
| Advanced Usage |
Filled variants, custom colors, sizing |
| Preview |
Image |
npm install @catalystsoftware/icons
# or
pnpm add @catalystsoftware/icons
Icons Quickpick
| Aspect |
Details |
| Function |
Access icon library via quick pick |
| Description |
Browse and insert icons from @catalystsoftware/icons library |
| Usage |
Open via editor context menu → Catalyst → Icons |
| Advanced Usage |
Search functionality, instant insertion at cursor |
| Library Info |
Logical naming convention: [MainTheme][Container/Feature][Filled] |
| Preview |
Image |
CSS
AI
Detrministic AI Engine Compiler
| Aspect | Deteails |
| ------------------ | ------------------------------------------------------------------------------ |
|Function|Advanced AI prompt optimization|
|Description|Deterministic compiler for AI prompts providing consistent, reliable responses|
|Usage|Use pre-prompt templates|
|Advanced Usage|Cross-engine consistency, complex project handling|
|More Info|Full Documentation|
PROMPT
Prompt - COMING SOON
| Aspect | Details |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|Function|Pre-prompt management with multiple AI providers|
|Description|System for managing pre-prompts with 29 AI provider configurations|
|Usage|Set default pre-prompts|
|Usage|- 29 AI provider configurations
- Hot-swap between providers
- Pre-prompt templates
- Monaco editor for complex prompts
- Auto-save functionality
|
|Usage|Hot-swap providers, Monaco editor, file management|
REMIX-RUN
npx create-remixv2
| Aspect |
Details |
| Function |
Remix v2 project creation |
| Description |
Create Remix v2 projects with 30+ popular stacks and custom stack references |
| Usage |
npx create-remixv2 |
| Preview |
Image |
Automatic Remix Action
| Aspect |
Details |
| Function |
Automatic Remix action generation |
| Description |
Scans for Form components and automatically generates corresponding actions |
| Usage |
Inserts pre-coded action |
| Preview |
Image |
Context Components/Functions
| Aspect |
Details |
| Function |
Insert Remix context components |
| Description |
Insert Remix-specific components and functions from context menu |
| Usage |
r-click → Remix → Select component |
| Advanced Usage |
Custom components, hooks, utilities |
| Preview |
Image |
V1 → V2 Routing Conversion
| Aspect |
Details |
| Function |
Convert route conventions |
| Description |
Converts Remix v2 routing convention to v1 automatically |
| Usage |
Viewers dropdown located in the extensions title pane → project → select option |
| Advanced Usage |
Safety rollback, warnings, backup |
| Preview |
Image |
Convert Single App To Mono Repo
| Aspect |
Details |
| Function |
Monorepo conversion tool |
| Description |
Converts single Remix app into monorepo structure |
| Usage |
Viewers ( located in the extensions title pane ) → master apps → select option |
| Warning |
Always push changes before conversion |
| Preview |
Image |
Open Route File in Browser
| Aspect |
Details |
| Function |
Preview routes in browser |
| Description |
Open route files directly in browser for preview |
| Usage |
r-click → Open Route in Browser |
| Advanced Usage |
URL copying, index/splat route support |
| Config Files |
None required |
| Preview |
Image |
Create Route Files
| Aspect |
Details |
| Function |
Quick route file creation |
| Description |
Create route files quickly with templates |
| Usage |
r-click in editor → Remix → select option |
| Advanced Usage |
Templates, nested routes, action/loader stubs |
| Preview |
Image |
Install Auth in Remix
| Aspect |
Details |
| Function |
One-click auth setup |
| Description |
Install authentication with routes in Remix applications |
| Usage |
Viewers ( located in the extensions title pane ) → project → select option |
| Advanced Usage |
OTP implementation, dependencies, route setup |
| Preview |
Image |
Install OTP in Remix
| Aspect |
Details |
| Function |
OTP implementation |
| Description |
Install OTP (One-Time Password) authentication in Remix with auth routes |
| Usage |
Viewers ( located in the extensions title pane ) → project → select option |
| Advanced Usage |
Email/SMS providers, rate limiting, templates |
| Preview |
Image |
Create Tests for Routes and Actions in Remix-Run
| Aspect |
Details |
| Function |
Auto-generate test files |
| Description |
Create comprehensive test files for routes and actions |
| Usage |
r-click ( editor ) → Remix → Create Tests |
| Preview |
Image |
Remix Run Insert Code
| Aspect |
Details |
| Function |
Range of Remix framework code snippets and functions |
| Description |
Comprehensive Remix development utilities |
| Usage |
r-click ( editor ) → Remix → Create Tests |
| Features |
- Auto-create actions
- Route file creation
- Browser preview
- Auth installation
- Test generation
|
| Preview |
Image |
Create Single App - React Router
| Aspect |
Details |
| Function |
Creates a pre-configured react-router app reminiscent of a remix stack |
| Usage |
Viewers → Master Apps → Select option |
| Preview |
Image |
| Aspect |
Details |
| Function |
Platform conversion tool |
| Description |
Convert Remix app to other platforms/frameworks |
| Usage |
Viewers → Master Apps → Select option |
| Preview |
Image |
Error Boundary
| Aspect |
Details |
| Function |
Inserts error boundary at cursor |
| Usage |
R-click ( editor ) → Remix → select option |
| Preview |
Image |
| Preview |
Image |
| Aspect |
Details |
| Function |
Inserts meta function at cursor |
| Usage |
R-click ( editor ) → Remix → select option |
| Preview |
Image |
| Preview |
Image |
Links Function
| Aspect |
Details |
| Function |
Inserts links functions at cursor |
| Usage |
R-click ( editor ) → Remix → select option |
| Preview |
Image |
| Preview |
Image |
Create Monorepo
| Aspect |
Details |
| Function |
Creates a fully configured monorepo "stack" with automatic setup and first build. Includes component libraries, Tailwind, and other configurations ready to use immediately |
| Usage |
Viewers → Master Apps → select option |
| Preview |
Image |
Build & Deploy Project
| Aspect |
Details |
| Function |
Customize the build process of your monorepo project, similar to Turborepo functionality |
| Usage |
Viewers → Master Apps → select option |
| Preview |
Image |
RR Folder Routing
| Aspect |
Details |
| Function |
Configures React Router to use folder-based routing convention |
| Usage |
Viewers → projet → select option |
| Preview |
Image |
Preview Route URL
| Aspect |
Details |
| Function |
Allows you to preview the current file's URL without opening the browser |
| Usage |
R-click ( editor ) → Remix → select option |
| Preview |
Image |
Create Action Object
| Aspect |
Details |
| Function |
Generate Prisma action objects |
| Description |
Create action objects for Prisma operations |
| Usage |
R-click ( editor ) → Remix → select option |
| Preview |
Image |
SHADCN
Add ShadCN Components
| Aspect |
Details |
| Function |
Add ShadCN components to project |
| Description |
Add ShadCN UI components to your project with one click |
| Usage |
Viewers → project → Install ShadCN Components Only |
| Outline |
Just adds components and installs libraries |
| Preview |
Image |
Install ShadCN Components w/configs
| Aspect |
Details |
| Function |
Full ShadCN installation |
| Description |
Installs complete ShadCN UI library with all components |
| Usage |
Viewers → project → Install ShadCN Components Only |
| Outline |
- Auto-installs dependencies
- Configures paths
- Updates / creates config files
- Installs all components
|
| Preview |
Image |
Insert ShadCN Components
| Aspect |
Details |
| Function |
Insert ShadCN components |
| Description |
Add individual ShadCN UI components to project |
| Usage |
R-click → ShadCN → Select component |
| Available Components |
- Typography
- Nav Menu
- Pagination
- Date Time Picker
- Date W/ Input
- DOB Date Picker
- Avatar
- Alert Dialog
- Switch Card
- Switch
- Textarea
- Tooltip
- Sidebar
- Context Menu
- Popover
- Menubar
- Hover Card
- Dropdown Menu
- Drawer
- Chart
- Combobox
- Checkbox
- Install ShadCN w/ All Components
- Fetch w/ state and useEffect
- Sm Table w/ Columns
- Fuse Input w/ X
- Designed Button ClassName
- Add Missing Imports
- Command Dialog
- Draggable Responsive Dialog Drawer
- ButtonStyled
- Context
- Group
- Toggle
- OTP
- Hover
- Menu
- Dropdown
- Responsive
- Command
- Accordion
- Button
- Input
- Card
- Dialog
- Form
- Select
- Table
- Tabs
- Alert
- Sheet
- Route File
- TanStack Table File
- useEffect
- useState
- Map
- On Submit w/ Fetcher
- Button W/ On Click With Submit
- ClassNames
- Fetcher.Form With Items
- Loader
- Action
|
| Preview |
Image |
GITHUB
Repo Management
GitHub functions located on the status bar to the left in the Devstack quickpick or can select several options via the github submenu within the editor context
| Aspect | Details |
| --------------- | --------------------------------------------------------------------------------------------- |
|Function|GitHub repository management and functionality|
|Description|see devstack quickpic for full feature outline|
|Usage|Use GitHub commands in DevStack quickpick||R-click editor → github → select option|
|Preview|Image|
|Preview|Image|
Open Repo in Browser
| Aspect |
Details |
| Function |
Open GitHub repository |
| Description |
Open GitHub repository in browser from any file |
| Usage |
r-click → Open GitHub Repo |
| Preview |
Video |
Open Repo at File
| Aspect |
Details |
| Function |
Navigate to specific file in repo |
| Description |
Open GitHub repository at specific file location |
| Usage |
r-click → Open GitHub at File |
| Preview |
Video |
Pro7 Archiver
| Aspect | Details |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|Function|Creates and password encrypted archive, storing files that contain sensitive information so as to be included among your files when pushing to github|
|Description|scans workspace root for .pro7 config file, if it collects it it will grab the values out of the file and collect the respective files that were outlined ( similar to .gitignore, but your including files instead of ignoring them ), if the scan does not pick up a .pro7 file, it will then default to only include your .env file. Starting the packaging process it will scan your .env file for PRO7_PASSWORD value where you can set a predefined password. if there is no PRO7_PASSWORD value contained within your .env file, it will then prompt you for you in order to continue. Once the archive has been created it will place within your workspace root directory, and if activated via g4 & .vsix, will continue its process and move onto the next step which would be pushing your repo. This ensures that your archive includes the most up to date, with zero extra effort|
|Usage|Option will be inlcuded within the devstack quickpic & this function will be added to the g4 & .vsix function for it to automatically run and keep an updated archive within your github repo|
|Adv Usage|If you are looking to include this with a custom command sequence that gets triggered when included in either a concurrent|sequential object type, create a hidden item with the following values "path": "ocrmnavigator.pro7Archiver", "type": "command" and then finish it off labeling it whatever you desire. Then include that label in your custom object and will now trigger whenever you activate that command|
|.pro7| {|
.env
.secrets.env
config/
secrets/
*.key
*.pem
api-keys.json
}<\pre><\code> |
if at any time the archiver doesn't work for you within the extension itself, as I have found that even though its a straight conversion from the script I built it appears to error out very easily. place the attached script inside the auto run folder labeled pro7.js and it will run seperatly from the other autorun scripts due to microsoft antivirus checks as microsoft does not trust any zip files to be included within the .vsix archive and remember to set the settings value to false, "ocrmnavigator.PRO7": false,
pro7.js
const fs = require('fs');
const path = require('path');
const { glob } = require('glob');
const sevenBin = require('7zip-bin');
const { extractFull, add, list } = require('node-7z');
const WORKSPACE_ROOT = path.join(__dirname, '..', '..');
const PRO7_FILE = path.join(WORKSPACE_ROOT, '.pro7');
const ENV_FILE = path.join(WORKSPACE_ROOT, '.env');
const OUTPUT_PATH = path.join(WORKSPACE_ROOT, `pro7-${Date.now()}.7z`);
require('dotenv').config({ path: ENV_FILE });
async function pro7Archiver() {
try {
const password = process.env.PRO7_PASSWORD;
if (!password) {
console.error('✗ PRO7_PASSWORD is not set in .env file!');
console.log('\nPlease set PRO7_PASSWORD in your .env file');
process.exit(1);
}
let filesToArchive = [];
if (fs.existsSync(ENV_FILE)) {
filesToArchive.push(ENV_FILE);
console.log('\n✓ Found .env file');
}
if (fs.existsSync(PRO7_FILE)) {
console.log('✓ Found .pro7 file');
const content = fs.readFileSync(PRO7_FILE, 'utf8');
const lines = content.split('\n');
for (const line of lines) {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith('#')) continue;
if (trimmed.includes('*')) {
const globFiles = await glob(trimmed, { cwd: WORKSPACE_ROOT, absolute: true });
filesToArchive.push(...globFiles);
console.log(`✓ Found ${globFiles.length} files`);
} else {
const fullPath = path.join(WORKSPACE_ROOT, trimmed);
if (fs.existsSync(fullPath)) {
filesToArchive.push(fullPath);
console.log(`✓ Added: ${trimmed}`);
} else {
console.log(`✗ Not found: ${trimmed}`);
}
}
}
filesToArchive = [...new Set(filesToArchive)];
} else {
console.log('✗ .pro7 file not found');
}
if (filesToArchive.length === 0) {
console.error('\n✗ No files to archive!');
process.exit(1);
}
console.log('\n✓ Cleaning up old archives...');
const existingArchives = await glob('pro7-*.7z', { cwd: WORKSPACE_ROOT, absolute: true });
for (const archive of existingArchives) {
fs.unlinkSync(archive);
console.log(` Deleted: ${path.basename(archive)}`);
}
const stream = add(OUTPUT_PATH, filesToArchive, {
password: password,
method: ['0=BCJ2', '1=LZMA2'],
$bin: sevenBin.path7za,
$progress: true
});
await new Promise((resolve, reject) => {
stream.on('end', resolve);
stream.on('error', reject);
});
console.log('✓ Archive path:', OUTPUT_PATH);
const listStream = list(OUTPUT_PATH, {
password: password,
$bin: sevenBin.path7za
});
let fileCount = 0;
listStream.on('data', (data) => {
if (data.file) fileCount++;
});
await new Promise((resolve, reject) => {
listStream.on('end', resolve);
listStream.on('error', reject);
});
console.log(`✓ Archive contains `);
console.log(`✓ ARCHIVING COMPLETED SUCCESSFULLY - CONTAINS ${fileCount} ${fileCount === 1 ? 'FILE' : 'FILES'}`);
} catch (error) {
console.error('\n' + '='.repeat(60));
console.error('✗ ARCHIVE CREATION FAILED');
console.error('='.repeat(60));
console.error('\nError message:', error.message);
console.error('Stack trace:', error.stack);
process.exit(1);
}
}
console.log('='.repeat(60));
console.log('PRO7 ARCHIVER');
console.log('='.repeat(60));
pro7Archiver();
PRISMA
[!TIP]
Whenever there is a prisma function that you want trigger, if it requires the schema object name in order to function my best advise is type the schema objects name outside of any function you have already created, ie User with the proper casing. After you typed this above and outside of the action function, highlight it, r-click and select the desired function to trigger. This is due to most of the functions insert code at cursor. You can imagine, if you triggered it right in the middle of your prisma function inside your action, it would blow your action or loader function up, splitting your prisma function in half and because its never just a few lines of code, can even push the entire action / loader out of view completely. Even when using click to schema object, you can literally be anywhere in the workspace, type out the objects name User randomly in a typescript file, trigger the function and you will navigate to your schema file and the file will open at your desired object.
Create Include Object
| Aspect |
Details |
| Function |
Generate Prisma include objects |
| Description |
Create include objects that include all relations for Prisma models |
| Usage |
- r-click on a Prisma object to automatically create an include object for your Prisma queries.
- Best practice: type the schema object name (case-sensitive) a few lines down from your function, then r-click and trigger.
- File system cleaning
- VSCode restart options
- This prevents the function from disrupting your existing code. Example: type
User separately, r-click it, and generate the include object without affecting your prisma.
|
| Preview |
Image |
Click to Schema Object
| Aspect |
Details |
| Function |
Jump to Prisma schema definition |
| Description |
Hightlight, right click and have the extension navaigate to the object within your schema file. |
| Usage |
r-click model name → Prisma → Open Schema Object |
| Advanced Usage |
Works from any file referencing Prisma models |
| Preview |
Image |
Generate Crud Resolvers / Rest End Points
| Aspect |
Details |
| Function |
Auto-generate CRUD endpoints & Auto-generate API endpoints |
| Description |
Generate CRUD resolvers and REST endpoints automatically |
| Usage |
R-click → Prisma → "CRUD" |
| Usage |
REST/GraphQL, preview, customization |
| Usage |
- Hover preview before generation
- Full CRUD operations
- TypeScript support
|
| Preview |
Image |
| Preview |
Image |
| Preview |
Image |
| Preview |
Image |
Auto Create Schema
| Aspect |
Details |
| Description |
Scans app/src folders for Prisma functions (create, findFirst, etc.), extracts model names, fields, and relations, then automatically generates or updates the Prisma schema file with proper typing and attributes |
| Usage |
R-click editor → Prisma → select option |
| Advanced Usage |
Merges with existing schema.prisma, applies field rules from constants/fieldRules.ts (e.g., email gets @unique), auto-creates related models from include statements, preserves existing models and custom fields |
| BLEEDING EDGE |
|
| WARNING |
This feature set will only be active for users that have bleeding edge enabled and will not effect users that do not have this set to true |
| Usage |
select Auto Create Schema from the be quickpic |
Visualize Schema Relations
| Aspect |
Details |
| Function |
Creates a visual diagram showing relationships between database tables/models |
| Description |
COMING SOON! |
| Usage |
R-click editor → Prisma → select option |
VSCODE
| Aspect |
Details |
| Function |
Toggle performance modes |
| Description |
Switch between performance modes for working with large files |
| Usage |
Options available via the devstack quickpic or editors context menu |
| Features |
- Disable For Current File
- Disables DevStack features for the currently active file to improve performance
- Enable For Current File
- Re-enables DevStack features for the currently active file
- Disable Everything
- Globally disables all DevStack features across the workspace
- Enable Everything
- Re-enables all DevStack features across the workspace
- Toggle Global Disable
- Toggles the global disable state for all DevStack feature
|
| Preview |
Image |
| Preview |
Image |
Custom VSIX Packager
| Aspect |
Details |
| Function |
Alternative VSIX packaging |
| Description |
Custom VSIX packager as alternative to vsce |
| Usage |
DevStack Quickpic → Custom VSIX Packager |
| Usage |
- Smaller file sizes than vsce
- Custom ignore patterns
- Structure visualization
|
| Preview |
Image |
Region Folding
| Aspect |
Details |
| Function |
1-7 fold region, instead of folding by actual level folds by region level. The same goes with the second set but is a toggle. If you want to use the functions listed below create an item in devstack with type command, also found in devstack quickpick |
| Function Overview |
- Fold Region Level 1 -
ocrmnavigator.foldRegionLevel1
|
- Fold Region Level 2 -
ocrmnavigator.foldRegionLevel2
- Fold Region Level 3 -
ocrmnavigator.foldRegionLevel3
- Fold Region Level 4 -
ocrmnavigator.foldRegionLevel4
- Fold Region Level 5 -
ocrmnavigator.foldRegionLevel5
- Fold Region Level 6 -
ocrmnavigator.foldRegionLevel6
- Fold Region Level 7 -
ocrmnavigator.foldRegionLevel7
- Toggle Region Level 1 -
ocrmnavigator.toggleFoldRegionLevel1
- Toggle Region Level 2 -
ocrmnavigator.toggleFoldRegionLevel2
- Toggle Region Level 3 -
ocrmnavigator.toggleFoldRegionLevel3
- Toggle Region Level 4 -
ocrmnavigator.toggleFoldRegionLevel4
- Toggle Region Level 5 -
ocrmnavigator.toggleFoldRegionLevel5
- Toggle Region Level 6 -
ocrmnavigator.toggleFoldRegionLevel6
- Toggle Region Level 7 -
ocrmnavigator.toggleFoldRegionLevel7 |
| Aspect |
Details |
| Function |
Includes formatting json and jsonc files converting multiline items to inline, toggles error logging json and jsonc files. If you want to use the functions listed below create an item in devstack with type command, also found in devstack quickpick |
| Function Overview |
- format Current Json File -
ocrmnavigator.formatCurrentJsonFile
|
- format Packge Dev Json -
ocrmnavigator.formatPackgeDevJson
- format Global Navigator Config Json -
ocrmnavigator.formatGlobalNavigatorConfigJson
- toggle Json Validation -
ocrmnavigator.toggleJsonValidation
- toggle Jsonc Validation -
ocrmnavigator.toggleJsoncValidation |
Encoder/Decoder
| Aspect |
Details |
| Function |
File format conversion |
| Description |
Convert between file formats: Base64, SVG, MP4 to MP3, etc. |
| Usage |
Access via web GUI |
| Advanced Usage |
13+ formats, batch processing, quality settings |
| Preview |
[Video] |
| Aspect |
Details |
| Function |
Opens configuration interface for setting up custom formatters |
| Description |
Configure formatters per file type with live preview of changes |
| Usage |
Web GUI |
| Preview |
[Video] |
| Aspect |
Details |
| Function |
Multi-format file formatter |
| Description |
Format 33+ file types with, can also set as default formatter per file type, to set select Format Document with..., select configure and select desired foramtter |
| Usage |
r-click → Formatters → select option |
| Preview |
Image |
Inline Imports
| Aspect |
Details |
| Function |
Convert multi-line imports to single line |
| Description |
Transforms multi-line imports into single-line format while converting @ to ~ |
| Usage |
r-click → Format document with → select option |
| Preview |
Video |
Batch Rename
| Aspect |
Details |
| Function |
Mass file renaming tool |
| Description |
Edit multiple filenames via generated .txt file |
| Usage |
Hightlight files → r-click → Batch Rename |
| Advanced Usage |
Pattern matching, regex support, undo functionality |
File Line Jumper
| Aspect |
Details |
| Function |
Creates clickable file links with line numbers |
| Description |
Creates clickable links in any file that open at specific line numbers. Available before and after return statements |
| Usage |
Use // @dev path:line syntax |
| Example |
// @dev app/components/catalyst-ui/primitives/table.tsx:6 |
| Preview |
Video |
| Preview |
Image |
File Search Jumper
| Aspect |
Details |
| Function |
Creates search-based file links |
| Description |
Create links that search for terms and navigate to first instance |
| Usage |
Use // @devsearch path:term |
| Example |
// @devsearch app/components/catalyst-ui/data/table-data.tsx:Table |
| Preview |
Video |
| Preview |
Image |
File Nesting - Coming Soon
| Aspect |
Details |
| Function |
Configure file nesting rules |
| Description |
Organize related files in explorer view |
| Usage |
Configure via settings |
Remove Trailing Commas
| Aspect |
Details |
| Function |
Clean JSON/JavaScript trailing commas |
| Description |
Removes trailing commas from JSON and JS objects |
| Usage |
r-click → Formatters → select option |
| Preview |
Image |
| Aspect |
Details |
| Function |
Strip code comments |
| Description |
Strips all comments from the current file |
| Usage |
r-click → Formatters → select option or command palette |
| Preview |
Image |
Remove console.log from file
| Aspect |
Details |
| Function |
Clean console logs from file |
| Description |
Removes all console.log statements from the current file |
| Usage |
r-click → Formatters → select option or command palette |
| Preview |
Image |
Remove console.log from folder
| Aspect |
Details |
| Function |
Clean console logs from folder |
| Description |
Removes all console.log statements from all files in the selected folder |
| Usage |
r-click folder → Formatters → select option |
| Preview |
Image |
Remove console.log from workspace
| Aspect |
Details |
| Function |
Clean console logs from workspace |
| Description |
Removes all console.log statements from all files in the entire workspace |
| Usage |
Command palette → select remove console.log from workspace |
| Preview |
Image |
Remove Unused Imports From File
| Aspect |
Details |
| Function |
Clean unused imports |
| Description |
Detects and removes import statements that are not used in the file |
| Usage |
r-click → Formatters → select option or command palette |
| Preview |
Image |
REFERENCE
Shortcuts
| Aspect |
Details |
| Function |
Keyboard shortcuts reference |
| Description |
Reference for all keyboard shortcuts in the extension |
| Usage |
|
| Context Snippets |
alt + s |
| Clipboard++ |
alt + c |
| Show Bookmarks |
alt + b |
| DevStack Quick Pick |
alt + d |
| Open UI Dashboard |
alt + a |
| Show Error History |
alt + h |
| Catalyst UI Quickpick |
alt + x |
| Icons Quickpick |
alt + v |
VSCode Commands Cheat Sheet
| Aspect |
Details |
| Function |
VSCode commands reference |
| Description |
Cheat sheet with 360+ commonly used VSCode commands |
| Usage |
Access via reference menu |
| Advanced Usage |
Search, filter by category, quick copy |
| Preview |
Image |
Clipboard History Pro
| Aspect |
Details |
| Function |
Multi-item clipboard manager |
| Description |
Track and reuse your last 20 clipboard items |
| Usage |
Click Clipboard++ located on the status bar |
| Advanced Usage |
- Hover previews
- Status bar access
- Persistent across sessions
|
Bookmarks
| Aspect |
Details |
| Function |
Line-specific code bookmarks |
| Description |
- Mark and navigate to specific lines across your workspace
- Stores up to 20 bookmarks
- Status bar access
- Quick navigation
|
| Usage |
Click Bookmarks located on the status bar |
| Add bookmark |
r-click line → DevStack → Add Bookmark |
| Preview |
Image |
Markdown Cheat Sheet
| Aspect |
Details |
| Function |
Markdown reference guide |
| Description |
Cheat sheet with GitHub-flavored Markdown examples |
| Usage |
Web GUI |
| Preview |
Image |
Color Wheel
| Aspect |
Details |
| Function |
Advanced color picker |
| Description |
ShadCN-inspired color picker with multiple format outputs |
| Usage |
Web GUI |
| Preview |
Image |
Wizards Section
| Aspect |
Details |
| Function |
Command reference and organization |
| Description |
Collection of all extension commands for custom workflows. To use any of the listed commands create an items with its respective values, can create commands, powershell, bash, chain, concurrent and more |
| Usage |
Browse categorized command list, outlined within the accordian below |
| Advanced Usage |
Create custom chains/concurrent commands, integrate with other extensions |
| Note |
This section will get redesigned featuring a proper description, which will ultimately allow me to automate the creation of this section to keep it up to date. Currently any new items can be found in the roadmap section |
List...
| Name |
Value |
| VFS |
|
| COMMANDS, POWERSHELL, OPEN FILE FROM DEVSTACK PANE, VSCODE COMMAND, ETC |
|
| Copy Value |
copyValue |
| Execute Debian WSL CMD |
debianCMD |
| Bash Cmd |
addTerminalCommandToCategory |
| Snippets File |
snippetsFile |
| Command |
cmdsEdit |
| Chain |
chainsCreate |
| Cmd / Powershell Cmd / URL / VSCode Cmd / Debian Cmd / File / MD / Folder |
cmdsCreate |
| Playlist |
openMusicInBrowser |
| Chains |
devStackView |
| Execute Terminal CMDS |
executeItem |
| Chain / Cmd Sequencer |
addAutoSequencer |
| Execute a chain of items |
autoSequencer |
| Copy Path |
copyPath |
| Execute Command |
executeSTRCommand |
| Execute Command |
executeCommand |
| Concurrently |
concurrent |
| EDITING ITEMS IN DEVSTACK |
|
| Batch Add Files to CRM Navigator |
addFilesToNavigator |
| Toggle To Hide Item In UI |
hideSingleItem |
| Toggle Hidden Nav Items |
toggleHiddenItems |
| Add to tree items |
addUnusedToFileTree |
| Add File to DevStack |
addFileToNavigator |
| Add File/s to DevStack |
initialFile |
| Edit Label |
editFileLabel |
| Remove Item |
deleteItem |
| Move Folder Up |
moveCategoryUp |
| Move Folder Down |
moveCategoryDown |
| Remove Folder |
deleteCategory |
| Move File Up |
moveFileUp |
| Remove URL |
removeUrl |
| Edit Command |
editCommand |
| Move File Item |
moveItem |
| Select as Move Destination |
setMoveTarget |
| Edit Web URL |
editWebUrl |
| Add Sub Folder |
addSubcategory |
| Refresh Navigator |
refresh |
| Expand Folder By Default |
expandFolder |
| Collapse Folder By Default |
collapseFolder |
| Add Item |
addItemToDevstack |
| Create |
uiCreate |
| DevStack Chains |
chainsEdit |
| SEARCH DEVSTACK |
|
| DevStack: Search |
showQuickPick |
| Search |
quickSearch |
| Search in Navigator |
search |
| UI WEB APP |
|
| DevStack |
cmdsView |
| Media Player |
openPlayer |
| Add Menu |
addActions |
| Main Menu |
mainActions |
| Configurators |
uiConfigurators |
| Master Apps |
uiMasterApps |
| UI Dashboard |
openUi |
| OTHER FUNCTIONLAITY |
|
| Convert To Become Agnostic |
convertToAgnostic |
| Reference |
uiReference |
| clean |
clean |
| Configuration |
configSub |
| prevState |
prevState |
| Show History |
showHistory |
| DevStack |
devStackSubmenu |
| Search For Unused Exports |
searchForExportsThatAreNotInUse |
| Add Bookmark |
bookmarks.add |
| Show Bookmarks |
bookmarks.show |
| Show Clipboard History |
clipboardManager.showHistory |
| Reveal in Explorer |
revealInExplorer |
| Open Viewer |
viewersSub |
| MARKDOWN |
|
| Render MD |
renderMd |
| MD |
mdViewWorkspaceList |
| MD |
createUiMD |
| Render MD In VSCode |
renderedMDFile |
| View MD |
mdFile |
| MD w/ Viewer |
createMDWCheat3Wide |
| Edit .MD Label |
editMDLabel |
| SNIPPETS |
|
| Context Snippets |
contextSnippets |
| %s |
insertSnippet |
| refreshWorkspaceSnippets |
refreshWorkspaceSnippets |
| Import Snippets |
importSnippets |
| Copy Snippet Body |
copySnippetToClipboard |
| JSON |
|
| JSON Comments |
jsonComments |
| UI COMPONENTS LIBRARY |
|
| Install Catalyst-UI exluding config files |
installCatalystUIOnly |
| Install Catalyst-UI Free exluding config files |
installCatalystUIFreeOnly |
| Install Catalyst UI Comps |
installCatalystUIFree |
| Install Catalyst UI |
installCatalystUI |
| Components |
UIComponents |
| Components List |
UIComponentsList |
| Change Free Premium |
changeFreePremium |
| TanStack Table Scaffolding |
myTanStackTable |
| Project Scaffolding |
myProjectSetup |
| Components Viewer |
UIComponentsViewer |
| Required for clientOnly - use-hydrated.js |
useHydrated |
| Custom client-only.js that replaces remix-utils version |
clientOnly |
| Search w/ Fuse.js |
searchWFusejs |
| Search w/ Filter |
searchWFilter |
| Command w/ CommandInput |
commandWCommandInput |
| Command w/ Search |
commandWSearch |
| BG w/ Hover |
bgWHover |
| BG Blue w/ Hover |
blue |
| API Route |
apiRoute |
| Command - Pagination |
cammandPagination |
| ICON LIBRARY |
|
| icons |
insertIcon |
| CSS LIBRARY |
|
| Scroll Bar - based on CSS theme |
themedScrollBar |
| AI |
|
| Open Pre-Prompt |
openPrePrompt |
| Send Function Context to Copilot |
sendFunctionContextToCopilot |
| Show Modernization Stats |
showModernizationStats |
| Convert Class to Hooks |
convertClassToHooks |
| Modernize Code |
modernizeCode |
| Navigate To Error |
navigateToError |
| Undo Last Auto-Fix |
undoLastFix |
| Confirm Fix Worked (Learn Pattern) |
confirmFixWorked |
| Clear Error History |
clearErrorHistory |
| Show Error History |
showErrorHistory |
| Find Errors, Missing Imports & More |
errorsMissingImportsPlus |
| REMIX-RUN |
|
| Automatic Remix Action |
autoRemixAction |
| Build & Deploy |
buildProjectConfigurator |
| Create Single App - React Router |
createSingleApp |
| Error Boundary |
addErrorBoundary |
| Meta Function |
addMetaFunction |
| Links Function |
addLinksFunction |
| Create Action Object |
createActionObject |
| Auth Design Page |
authDesignPage |
| Create Include Object |
createIncludeObject |
| Create Monorepo |
createMonorepo |
| Convert to Monorepo |
convertToMono |
| Build & Deploy Project |
buildProject |
| Remix |
remixAdd |
| Functions |
remix |
| RR Folder Routing |
reactrouterFileBasedRouting |
| Create Tests For Route and Action |
testRouteFile |
| Install Auth in Remix w/ Auth Routes |
installAuthRemix |
| Install OTP Into Remix w/ Auth Routes |
installOTPRemix |
| Add ESlint and Prettier configs |
configureEslingPrettier |
| Converts the v1 routing convention to v2 |
convertV1ToV2 |
| Open Route in Browser |
openRouteInBrowser |
| Preview Route URL |
previewRoute |
| Test Route Conversion |
testRouteConversion |
| Open the files route |
openUrlFromEditor |
| SHADCN |
|
| Typography |
typography |
| Nav Menu |
navMenu |
| Pagination |
pagination |
| Date Time Picker |
dateTime |
| Date W/ Input |
dateWInput |
| DOB Date Picker |
dobDate |
| Avatar |
avatar |
| Alert Dialog |
alertDialog |
| Switch Card |
switchCard |
| Switch |
shadCNswitch |
| Textarea |
textarea |
| Tooltip |
addShadcnTooltip |
| Sidebar |
addShadcnSidebar |
| Context Menu |
addShadcnContextMenu |
| Popover |
addShadcnPopover |
| Menubar |
addShadcnMenubar |
| Hover Card |
addShadcnHoverCard |
| Dropdown Menu |
addShadcnDropdownMenu |
| Drawer |
addShadcnDrawer |
| Chart |
addShadcnChart |
| Combobox |
addShadcnCombobox |
| Checkbox |
addShadcnCheckbox |
| Install ShadCN w/ All Components |
installShadcn |
| Fetch w/ state and useEffect |
addFetch |
| Sm Table w/ Columns |
addCleanSmTable |
| Fuse Input w/ X |
addFuseInput |
| Designed Button ClassName |
designedButtonClassName |
| Add Missing Imports |
addMissingImports |
| Command Dialog |
commandDiaolog |
| Draggable Responsive Dialog Drawer |
draggableresponsivedialogdrawer |
| ButtonStyled |
ButtonStyled |
| Context |
Context |
| Group |
Group |
| Toggle |
Toggle |
| OTP |
OTP |
| Hover |
Hover |
| Menu |
Menu |
| Dropdown |
Dropdown |
| Responseive |
Responseive |
| Command |
Command |
| Accordion |
Accordion |
| Button |
addShadcnButton |
| Input |
addShadcnInput |
| Card |
addShadcnCard |
| Dialog |
addShadcnDialog |
| Form |
addShadcnForm |
| Select |
addShadcnSelect |
| Table |
addShadcnTable |
| Tabs |
addShadcnTabs |
| Alert |
addShadcnAlert |
| Sheet |
addShadcnSheet |
| Route File |
addRouteFile |
| TanStack Table File |
addTableFile |
| useEffect |
addUseEffect |
| useState |
addUseState |
| Map |
addMap |
| On Submit w/ Fetcher |
addOnSubmitFunionatlity |
| Button W/ On Click With Submit |
addOnClickWithSubmit |
| ClassNames |
addClassNames |
| Fetcher.Form With Items |
addFetcherForm |
| Loader |
addLoader |
| Action |
addAction |
| GITHUB |
|
| Open GitHub Repo At File |
openGitHubRepoAtFile |
| Open GitHub Repo In Browser |
openGitHubRepo |
| G4PUBNPM |
G4PUBNPM |
| GitHub Functions |
|
| Auto Commit, Push and Upgrade |
autoCommitPushUpgrade |
| Auto Commit and Push |
autoCommitPush |
| Upgrade Patch, create & reveal VSIX |
upgradeExtension |
| PRISMA |
|
| Update Prisma |
updatePrisma |
| Prisma |
prisma |
| Generate CRUD Resolvers |
generateCrudResolvers |
| Open Object In Schema |
clickToSchemaObject |
| dbAllLocal |
dbAllLocal |
| dbAllRemote |
dbAllRemote |
| dbReset |
dbReset |
| dbPush |
dbPush |
| dbSeed |
dbSeed |
| dbGen |
dbGen |
| dbStudio |
dbStudio |
| Visualize Schema Relations |
visualizeSchemaRelations |
| VSCODE |
|
| Performance Switch: Disable For Current File |
disableForCurrentFile |
| Performance Switch: Enable For Current File |
enableForCurrentFile |
| Performance Switch: Disable Everything |
disableEverything |
| Performance Switch: Enable Everything |
enableEverything |
| Performance Switch: Toggle Global Disable |
toggleGlobalDisable |
| Build Extension +++ |
YEEEETMOTHERFUCKER2 |
| yeet |
yeet |
| Remove All Comments |
removeAllComments |
| Batch Rename |
renameBatch |
| Custom .VSIX Packager |
customVsixPackager |
| Auto Fold #region |
foldParentRegions |
| Remove Trailing Commas |
removeJson |
| YEEEET!!! |
YEEEETMOTHERFUCKER |
| Formatters |
formattersSub |
| Auto Fold #region |
autoFoldRegion |
| Remove console.log statements from this file |
removeConsoleLogsFromFile |
| Remove console.log statements from folder |
removeConsoleLogsFromFolder |
| Remove console.log statements from workspace |
removeConsoleLogsFromWorkspace |
| Inline Imports |
inlinesImports |
| Remove Unused Imports From File |
removeUnusedImports |
| Format with DevStack |
formatCurrentFile |
| Formatters |
configureFormatters |
| Configure Missing Imports |
configureImports |
| DukeNUKEM |
DukeNUKEM |
| Missing Imports && Variables |
missingImportsAndVariables |
| REFERENCE |
|
| Tailwind Converter |
tailwindConverter |
| Open Left Off Note |
openLeftOffNote |
| Navigate to Bookmark |
navigateToBookmark |
| View Left Off Note |
openExistingNote |
| VSCode Cmds Reference |
showCommandsReference |
| Color Wheel |
colorWheel |
| MD Guide |
viewMarkdownGuide |
| build |
build |
| REXT |
REXT |
| RTS |
RTS |
| RWINDOW |
RWINDOW |
| DEVOOLS |
DEVOOLS |
| CONFIG |
|
| Create Export Index ( registry ) |
createFolderSmartIndex |
| View Example Config |
configExample |
| Edit .json Config |
editConfig |
| Share Config With Friend |
shareConfig |
| Default Apps |
editDefaultValues |
| Export Config |
exportConfig |
| Import Config |
importConfig |
| VSCODE && TAILWIND STYLING |
|
| Blacked Out |
blackedOut |
| Blued Out |
bluedOut |
| VSCode Theme Configurator |
themeViewer |
| Window Differentiator |
windowDifferentiator |
| Reset Colors - Window Differentiator |
resetWindowDifferentiator |
VSCODE & TAILWIND STYLING
VSCode & Tailwind Theme Builder
| Aspect |
Details |
| Function |
Create custom VSCode & Tailwind themes |
| Description |
Visual theme configurator with live preview, then provides v4, v3 css formats and vscode settings file format |
| Usage |
Web GUI |
| Preview |
Image |
Blacked Out
| Aspect |
Details |
| Function |
Dark theme preset |
| Description |
Ultra-dark theme configuration for VSCode, sets your active workspaces theme settings |
| Usage |
Settings Dropdown → select option |
| Preview |
Image |
Blued Out
| Aspect |
Details |
| Function |
Dark theme preset, in dark blue |
| Description |
Ultra-dark theme configuration for VSCode, sets your active workspaces theme settings |
| Usage |
Settings Dropdown → select option |
| Preview |
Image |
Window Differentiator
| Aspect |
Details |
| Function |
Multi-window color coding |
| Description |
Assign different colors to multiple VSCode windows, provides a different color each time the function is triggered with about 20+ variants |
| Usage |
Settings Dropdown → select option |
| Preview |
Image |
Reset - Window Differentiator
| Aspect |
Details |
| Function |
Reset window colors |
| Description |
Restores default window colors |
| Usage |
Settings Dropdown → select option |
| Preview |
Image |
Left Off Note
| Aspect |
Details |
| Function |
Project-specific notes system |
| Description |
Leave detailed, project-specific notes for where you left off |
| Usage |
Context menu → Open Leftoff Note |
| Advanced Usage |
Persistent notes per workspace, markdown support |
| Preview |
Image |
Tailwind Converter
| Aspect |
Details |
| Function |
Convert between Tailwind versions |
| Description |
V3←→V4 Tailwind class converter tool |
| Usage |
Web GUI |
| Preview |
Image |
React/Tailwind Sandbox
| Aspect |
Details |
| Function |
Live development environment |
| Description |
Dedicated live development environment for component design with Monaco editor and dynamic dock |
| Usage |
Web GUI |
| Advanced Usage |
Hot reload, component library integration, export |
| Config Files |
Sandbox config files |
CONFIG
Share Config With Friends / Export All Configs
| Aspect |
Details |
| Function |
Export DevStack configuration |
| Description |
- Share your setup with others via exported config files
- Includes README with setup instructions
- Exports to shareWithFriends folder
|
| Usage |
Settings dropdown → Share Config |
| Warning |
Review for sensitive data before sharing |
| Preview |
Image |
| Preview |
Image |
View Config Example
| Aspect |
Details |
| Function |
Configuration reference |
| Description |
View example DevStack configuration files |
| Usage |
settings dropdown → select option && Web GUI Sidebar |
| Preview |
Image |
| Preview |
Image |
Add Missing Imports w/ Global Config
| Aspect |
Details |
| Function |
Auto-import missing dependencies |
| Description |
Automatically adds missing import statements based on global configuration |
| Usage |
r-click in editor → formatters → select option |
| Preview |
Image |
Default Apps Configuration
| Aspect | Details |
| --------------- | ------------------------------------------------------------------------------------------------ |
|Function|Manage active features|
|Description|Control which DevStack features load on startup|
|Usage|Accessible via extensions settings, workspace or global user settings files, or from the web GUI|
|Config| {|
"ocrmnavigator.vscodeVersion": "Code - Insiders",
"ocrmnavigator.configPath": ".vscode/ocrmnavigator/search-config.json",
"ocrmnavigator.toggleHiddenItems": true,
"ocrmnavigator.superuserTaskRunner": true,
"ocrmnavigator.strPrismaUpdater": true,
"ocrmnavigator.commands": true,
"ocrmnavigator.vscodecmdref": true,
"ocrmnavigator.markdownViewer": true,
"ocrmnavigator.snippets": true,
"ocrmnavigator.snippetsInEditor": true,
"ocrmnavigator.editorContextSnippets": true,
"ocrmnavigator.formatters": true,
"ocrmnavigator.trailingCommas": true,
"ocrmnavigator.batchRename": true,
"ocrmnavigator.addMissingImports": true,
"ocrmnavigator.eslintPrettier": true,
"ocrmnavigator.remixUtils": true,
"ocrmnavigator.theme": true,
"ocrmnavigator.blackedOut": true,
"ocrmnavigator.windowDifferentiator": true,
"ocrmnavigator.shadCNComponents": true,
"ocrmnavigator.repoMgr": true,
"ocrmnavigator.openGithub": true,
"ocrmnavigator.githubFunctions": true,
"ocrmnavigator.prismaFunctions": true,
"ocrmnavigator.remixComponents": true,
"ocrmnavigator.clickToSchema": true,
"ocrmnavigator.crudResolvers": true,
"ocrmnavigator.extMgrForDevs": true,
"ocrmnavigator.fileNesting": true,
"ocrmnavigator.revealExplorer": true,
"ocrmnavigator.copyPath": true,
"ocrmnavigator.bookmarks": true,
"ocrmnavigator.searchBar": true,
"ocrmnavigator.clipBoardHistory": true,
"ocrmnavigator.colorWheel": true,
"ocrmnavigator.lucideIcons": true,
"ocrmnavigator.share": true,
"ocrmnavigator.url": true,
"ocrmnavigator.jsonComments": true,
"ocrmnavigator.con": true,
"ocrmnavigator.removeAllComments": true,
"ocrmnavigator.unusedFunctions": true,
"ocrmnavigator.viewers": true,
"ocrmnavigator.uiDashboard": true,
"ocrmnavigator.devStackFunctions": true,
"ocrmnavigator.openLeftOffNote": true,
"ocrmnavigator.autoFoldRegion": true,
"ocrmnavigator.notesTodoAndThings": true,
"ocrmnavigator.renderMd": true,
"ocrmnavigator.visualizeSchemaRelations": true,
"ocrmnavigator.createFolderSmartIndex": true,
"ocrmnavigator.tailwindConverter": true,
"ocrmnavigator.convertToAgnostic": true,
"ocrmnavigator.concurrent": true,
"ocrmnavigator.autoSequencer": true,
}
Create Export Index
| Aspect |
Details |
| Function |
Creates a index file that acts as a registry, allowing for easier imports for the effected functions / components |
| Description |
- Within the blocks folder of my components library, instead of importing each and every single individual demo, ie
<Demoone />, <DemoTwo /> - the registry file was already created, so this step was already completed
- next I imported via
import * as Components from './index'; - then I was able to access every single registry item via,
<Components.LoanApp />, <Components.ServiceRepairForm /> - This saved a lot of time, because I was able to do a find and replace, allowing me to insert
<Components. infront of every function within seconds for 1550+ blocks
|
| Usage |
- Right clicking on any folder will reveal the create export index option
- Selecting it will create an index.tsx file, exporting all of that folder's items recursively to allow easier imports when called
|
| Preview |
Image |
Edit .json Config
| Aspect |
Details |
| Function |
Opens the config file in your editor, allowing you to make edits without having to dig through the file system to find it |
| Usage |
Settings dropdown → select option |
| Preview |
Image |
Export Config
| Aspect |
Details |
| Function |
Export the config, writing to a file in your workspace's root directory |
| Usage |
Settings dropdown → select option |
| Preview |
Image |
Import Config
| Aspect |
Details |
| Function |
Import a backup or import a config you made changes to with ease |
| Usage |
Settings dropdown → select option |
| Preview |
Image |
Add ESLint & Prettier Configs
| Aspect | Details |
| --------------- | -------------------------------------------------------------------------------- |
|Function|Install linting configurations|
|Description|Adds ESLint and Prettier configuration files to project|
|Usage|Viewers dropdown → project → select option|
|Preview|Image|
To do Notes Reminders and Post Its
| Aspect |
Details |
| Function |
Allowing you to create to do lists, notes, reminders and even a section for quick notes during coding sessions |
| Description |
Uses a repo as a single source of truth, allowing you to access it no matter the workspace you are currently coding in. There is also a web app, that was designed for use on mobile devices. There are some really nice ui features implemented into the web app, that I wish all todo/note apps had. For example, its annoying whenever you go to review to do lists, to open one list, check off its items, exit out and go back to your lists view, enter another to do list, reviews its items and so on. Instead, whenever your viewing your list of to dos, the bottom right hand corner features a toggle, when clicked it merges all of your to do list into one and seperates each lists items by its title. Line items are no longer editable, but the entire line item is now clickable in order to change its state from incomplete to completed. Obviously allowing you to quickly review everything at once with ease. |
| Explorer Pane |
- 4 sections broken up displaying each sections relevant items
|
- on the title of each section has a button for easily creating that sections items
- just like any other explorer pane, each sections title can be clicked on to either hide or show its contents
- each section hosts a labeling system to allow you to categorize its items with
priority, trash, and completed
- each items contenxt menu allows you to label that item as well as delete the item from the repo / list |
| To Do | - using vscodes file tree displays clickable list items that when clicked complete the line item and automatically syncs to your todo/notes repo
- when clicking on a lists title, opens that list in a markdown doc in the editor for you to make edits
- whenever you save within the editor, pushes to your todo/notes repo
- displayed check lists renders all nested items allowing you to fold by section with the file tree
- in regards to the todo/notes repo you can
- create new repos to use
- share repos
- change the current repo
- and everything else that is usually at your disposal when it comes to github |
| Notes | - simple note format
- first line use for your docs title
# NOTE
- from the 3rd line down, the remainder of the doc can be used as you see fit
- no limit on the amount of notes |
| Reminders | - same format as notes except for the reminders date and time
- 1st line title
# REMINDER
- 3rd line date and time for reminder
DUE: 2025-05-22 09:00
- 5th line onwards, use as you wish |
| Post its | - used as a quick and dirty notes section, like a post it pad
- during coding, for me anyways, there are times where its easier to have .txt doc up, create a new file within the project or something similar where I can place code pieces that Im constantly using in the current file that I am coding in. I wanted a way to be able to take care of that but with out the extra over head of opening up other programs, create new files within the project, etc and then have to manage these items later down the road
- for an example see the code snippet below
- whenever a tab is active, instead of the tab trigger being dead space in the ui, it now acts as a copy button for that tabs content
- each items context menu contains the following funtions:
- copy contents
- clear contents
- delete all |
<Tabs>
<TabsList>
<TabsTrigger value="white">{white color}</TabsTrigger>
<TabsTrigger value="green">{green color}</TabsTrigger>
<TabsTrigger value="blue">{blue color}</TabsTrigger>
<TabsTrigger value="yellow">{yellow color}</TabsTrigger>
<TabsTrigger value="purple">{purple color}</TabsTrigger>
</TabsList>
<TabsContent value="white">
notes data
</TabsContent>
<TabsContent value="green">
notes data
</TabsContent>
<TabsContent value="blue">
notes data
</TabsContent>
<TabsContent value="yellow">
notes data
</TabsContent>
<TabsContent value="purple">
notes data
</TabsContent>
</Tabs>
[!TIP]
If you were using the to do extension prior, and would like a very easy, painless way to transfer over to use within this extension. Before removing the old extension, change the name of the values in your global settings file from ntrsync to ocrmnavigator so each of them are like the following "ocrmnavigator.branch": "main", and because the code was just transferred over, on your next instance start the explorer pane will load up exactly like it did before.
Markdown Pre-Processor
| Aspect |
Details |
| Function |
pre-processor for markdown documents that processes a variables system, source map creator/updater, toc creator/updater with toc type, list conversion, code section conversion |
| Description |
currently only the vars systemk, list conversion and code section conversions are available within the extension. I'll include the file for you, if you would like the other features as well |
| Usage |
devstack quickpick option labeled Markdown Pre-Processor, if using the js file you can place within the autorun folder or run from the terminal. In the js file you can change the source file, target file, and set which sections of the pre-processor to run as well as which type of table of contents list that you want in your converted md file |
| Lists |
for lists to render inside a table, the lists need to be an inline html list, which you can imagine are horrible for human reading consumption, but with the conversion you can create your lists just like you would any where else in a markdown doc ie - list item and it will convert it to an inline html format |
| Code Sections |
|
| TOC |
|
| Sourcemap |
|
| Variables |
|
markdown-pre-processor.js
const fs = require('fs');
const path = require('path');
const srcFile = 'README.dev.md'
const tgtFile = 'README.md'
const variableSystem = true
const sourcemapUpdater = true
const tocUpdater = true
const tocType = 'roman'; // 'unordered', 'ordered', 'roman', 'accordion'
const tableConversion = true
const sourceFile = path.join(__dirname, '..', '..', srcFile);
const targetFile = path.join(__dirname, '..', '..', tgtFile);
console.log('='.repeat(60));
console.log('CONVERT README.DEV.MD');
console.log('='.repeat(60));
try {
let content = fs.readFileSync(sourceFile, 'utf8');
content = content.replace(/\r\n/g, '\n').replace(/\r/g, '\n');
console.log('✓ Normalized line endings');
// VARIABLE SYSTEM
// #region ============================================
if (variableSystem) {
const variables = {};
const constRegex = /<!--\s*const\s+(\w+)\s*:\s*(.+?)\s*-->/g;
const constMatches = [...content.matchAll(constRegex)];
constMatches.forEach(match => {
variables[match[1]] = match[2].trim();
console.log(`✓ Variable set: ${match[1]} = ${match[2].trim()}`);
});
content = content.replace(constRegex, '');
let lastContent, iterations = 0;
do {
lastContent = content;
content = content.replace(/\${(\w+)}/g, (match, varName) => {
if (variables[varName] !== undefined) return variables[varName];
console.warn(`⚠ Variable not found: ${varName}`);
return match;
});
} while (content !== lastContent && ++iterations < 10);
content = content.replace(/^\s*<!--\s*-->\s*$/gm, '');
if (Object.keys(variables).length > 0) {
console.log(`✓ Processed ${Object.keys(variables).length} variables`);
}
}
// #endregion
// TOC UPDATER
// #region ============================================
if (tocUpdater) {
console.log('\nGenerating Table of Contents...');
const lines = content.split('\n');
const headers = [];
let foundToc = false;
let tocLineIndex = -1;
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
if (line.match(/^##\s+.*?\*?\*?TOC\*?\*?/i)) {
foundToc = true;
tocLineIndex = i;
console.log(`Found TOC at line ${i + 1}: ${line.substring(0, 60)}`);
continue;
}
if (foundToc) {
const imageMatch = line.match(/^##\s+<img[^>]+>\*?\*?(.+?)\*?\*?/);
const simpleMatch = line.match(/^##\s+(.+)$/);
if (imageMatch) {
let title = imageMatch[1].trim();
title = title.replace(/<br\s*\/?>\s*$/i, '').trim();
const anchor = title.toLowerCase().replace(/\s+/g, '-').replace(/[^\w-]/g, '');
headers.push({ title, anchor, line: i });
console.log(` Found header: ${title}`);
} else if (simpleMatch) {
let title = simpleMatch[1].trim();
title = title.replace(/<br\s*\/?>\s*$/i, '').replace(/\*\*/g, '').trim();
if (title.toLowerCase() === 'sourcemap') continue;
const anchor = title.toLowerCase().replace(/\s+/g, '-').replace(/[^\w-]/g, '');
headers.push({ title, anchor, line: i });
console.log(` Found header: ${title}`);
}
}
}
let tocContent = '';
const romanNumerals = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X',
'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX',
'XXI', 'XXII', 'XXIII', 'XXIV', 'XXV', 'XXVI', 'XXVII', 'XXVIII', 'XXIX', 'XXX',
'XXXI', 'XXXII', 'XXXIII', 'XXXIV', 'XXXV', 'XXXVI', 'XXXVII', 'XXXVIII', 'XXXIX', 'XL',
'XLI', 'XLII', 'XLIII', 'XLIV', 'XLV', 'XLVI', 'XLVII', 'XLVIII', 'XLIX', 'L'];
headers.forEach((header, idx) => {
let prefix = '';
switch (tocType) {
case 'ordered':
prefix = `${idx + 1}. `;
break;
case 'roman':
prefix = `${romanNumerals[idx] || (idx + 1)}. `;
break;
case 'unordered':
case 'accordion':
prefix = '- ';
break;
}
tocContent += `${prefix}[${header.title.toUpperCase()}](#${header.anchor})\n`;
});
if (tocType === 'accordion') {
tocContent = `<details closed><summary style="font-size: 1.2em; color: #1447e6;"><b>TOC</b></summary>\n\n${tocContent}\n</details>`;
}
if (tocLineIndex !== -1) {
const tocHeaderLine = lines[tocLineIndex];
const afterTocIndex = tocLineIndex + 1;
let nextSectionIndex = -1;
for (let i = afterTocIndex; i < lines.length; i++) {
if (lines[i].match(/^##\s+/)) {
nextSectionIndex = i;
break;
}
}
const beforeToc = lines.slice(0, afterTocIndex).join('\n');
const afterNextSection = nextSectionIndex !== -1 ? lines.slice(nextSectionIndex).join('\n') : '';
content = beforeToc + '\n\n' + tocContent + '\n\n' + afterNextSection;
console.log(`✓ TOC updated with ${headers.length} entries (${tocType} style)`);
} else {
console.warn('⚠ TOC section not found');
}
}
// #endregion
// SOURCEMAP UPDATER
// #region ============================================
if (sourcemapUpdater) {
console.log('\nGenerating Sourcemap...');
const lines = content.split('\n');
const sections = [];
let currentSection = null;
let inSourcemapSection = false;
let foundToc = false;
for (let i = 0; i < lines.length; i++) {
const line = lines[i];
if (line.match(/^##\s+.*?\*?\*?TOC\*?\*?/i)) {
foundToc = true;
continue;
}
const h2ImageMatch = line.match(/^##\s+<img[^>]+>\*?\*?(.+?)\*?\*?/);
const h2Match = line.match(/^##\s+(.+)$/);
if (h2ImageMatch || h2Match) {
let title = h2ImageMatch ? h2ImageMatch[1].trim() : h2Match[1].trim();
title = title.replace(/<br\s*\/?>\s*$/i, '').replace(/\*\*/g, '').trim();
if (title.toLowerCase() === 'sourcemap') {
inSourcemapSection = true;
currentSection = null;
continue;
}
if (inSourcemapSection && title.toLowerCase() !== 'sourcemap') {
inSourcemapSection = false;
}
const skipSections = [
'toc',
'sourcemap',
'license',
'overview',
'features',
'getting started',
'usage',
'roadmap',
'project roadmap',
'acknowledgments',
'acknowledgements'
];
const titleLower = title.toLowerCase();
if (skipSections.includes(titleLower) || !foundToc || title.trim() === '') {
currentSection = null;
continue;
}
const anchor = title.toLowerCase().replace(/\s+/g, '-').replace(/[^\w-]/g, '');
if (anchor === '') {
currentSection = null;
continue;
}
currentSection = { title, anchor, subsections: [] };
sections.push(currentSection);
console.log(` Section: ${title}`);
}
if (!inSourcemapSection && currentSection) {
const h3Match = line.match(/^###\s+(.+)$/);
if (h3Match) {
const subtitle = h3Match[1].trim();
if (subtitle === '') continue;
const subanchor = subtitle.toLowerCase().replace(/\s+/g, '-').replace(/[^\w-]/g, '');
if (subanchor === '') continue;
currentSection.subsections.push({ title: subtitle, anchor: subanchor });
console.log(` Subsection: ${subtitle}`);
}
}
}
let sourcemapContent = '';
sections.forEach(section => {
if (section.title && section.anchor) {
sourcemapContent += `- [${section.title}](#${section.anchor})\n`;
section.subsections.forEach(sub => {
if (sub.title && sub.anchor) {
sourcemapContent += ` - [${sub.title}](#${sub.anchor})\n`;
}
});
}
});
const licenseRegex = /^##\s+.*?\*?\*?License\*?\*?/im;
const licenseMatch = content.match(licenseRegex);
if (licenseMatch) {
const licenseIndex = content.indexOf(licenseMatch[0]);
const sourcemapRegex = /^##\s+.*?\*?\*?Sourcemap\*?\*?/im;
const existingSourcemap = content.match(sourcemapRegex);
if (existingSourcemap) {
const sourcemapStartIndex = content.indexOf(existingSourcemap[0]);
const afterSourcemap = content.substring(sourcemapStartIndex);
const nextSectionMatch = afterSourcemap.match(/^##\s+/m);
if (nextSectionMatch) {
const nextSectionIndex = afterSourcemap.indexOf(nextSectionMatch[0]);
const beforeSourcemap = content.substring(0, sourcemapStartIndex);
const afterSourcemapSection = content.substring(sourcemapStartIndex + nextSectionIndex);
content = beforeSourcemap + afterSourcemapSection;
const newLicenseMatch = content.match(licenseRegex);
if (newLicenseMatch) {
const newLicenseIndex = content.indexOf(newLicenseMatch[0]);
const beforeLicense = content.substring(0, newLicenseIndex);
const fromLicense = content.substring(newLicenseIndex);
content = beforeLicense + '## Sourcemap\n\n' + sourcemapContent + '\n\n' + fromLicense;
}
}
} else {
const beforeLicense = content.substring(0, licenseIndex);
const fromLicense = content.substring(licenseIndex);
content = beforeLicense + '## Sourcemap\n\n' + sourcemapContent + '\n\n' + fromLicense;
}
console.log(`✓ Sourcemap updated with ${sections.length} sections (placed before License)`);
} else {
console.warn('⚠ License section not found - placing Sourcemap at end');
content += '\n\n## Sourcemap\n\n' + sourcemapContent + '\n';
}
}
// #endregion
// TABLE CONVERSION LOGIC
// #region ============================================
if (tableConversion) {
function convertMarkdownListToHtml(listText) {
const lines = listText.split('\n').filter(line => line.trim());
let html = '<ul>';
let indentStack = [0];
for (let i = 0; i < lines.length; i++) {
const match = lines[i].match(/^(\s*)-\s+(.+)$/);
if (!match) continue;
const spaces = match[1].length;
const text = match[2].trim();
const currentIndent = indentStack[indentStack.length - 1];
if (spaces > currentIndent) {
html += '<ul>';
indentStack.push(spaces);
} else if (spaces < currentIndent) {
while (indentStack.length > 1 && spaces < indentStack[indentStack.length - 1]) {
html += '</li></ul>';
indentStack.pop();
}
html += '</li>';
} else if (i > 0) {
html += '</li>';
}
html += `<li>${text}`;
}
html += '</li>';
while (indentStack.length > 1) {
html += '</ul></li>';
indentStack.pop();
}
html += '</ul>';
return html;
}
function processTableCell(cellContent) {
cellContent = cellContent.trim();
if (cellContent.includes('```')) {
const codeMatch = cellContent.match(/```(\w+)?\s*\n([\s\S]*?)```/);
if (codeMatch) {
const code = codeMatch[2];
return `<pre><code>${code.replace(/</g, '<').replace(/>/g, '>')}</code></pre>`;
}
}
if (cellContent.match(/(^|\n)\s*-\s+/)) {
return convertMarkdownListToHtml(cellContent);
}
return cellContent;
}
const lines = content.split('\n');
const output = [];
let i = 0;
let tablesFound = 0;
while (i < lines.length) {
const line = lines[i];
if (line.match(/^\|.+\|$/)) {
const nextLine = i + 1 < lines.length ? lines[i + 1] : '';
if (nextLine.match(/^\|[\s\-:|]+\|$/)) {
tablesFound++;
output.push(line);
output.push(nextLine);
i += 2;
let rowsProcessed = 0;
while (i < lines.length) {
const currentLine = lines[i];
if (currentLine.match(/^\|/)) {
let fullRow = currentLine;
let rowLines = [currentLine];
while (!fullRow.match(/\|$/) && i + 1 < lines.length) {
i++;
fullRow += '\n' + lines[i];
rowLines.push(lines[i]);
}
const pipePositions = [];
for (let j = 0; j < fullRow.length; j++) {
if (fullRow[j] === '|') pipePositions.push(j);
}
if (pipePositions.length >= 2) {
const cells = [];
for (let j = 0; j < pipePositions.length - 1; j++) {
const start = pipePositions[j] + 1;
const end = pipePositions[j + 1];
const cellContent = fullRow.substring(start, end);
cells.push(cellContent);
}
const processedCells = cells.map(cell => processTableCell(cell));
output.push('|' + processedCells.join('|') + '|');
rowsProcessed++;
} else {
output.push(...rowLines);
}
i++;
} else if (currentLine.trim() === '') {
if (i + 1 < lines.length && lines[i + 1].match(/^\|/)) {
output.push(currentLine);
i++;
} else {
break;
}
} else {
break;
}
}
console.log(`✓ Table #${tablesFound}: ${rowsProcessed} rows processed`);
continue;
}
}
output.push(line);
i++;
}
content = output.join('\n');
if (tablesFound > 0) {
console.log(`✓ Table conversion: ${tablesFound} tables processed`);
}
}
// #endregion
fs.writeFileSync(targetFile, content, 'utf8');
console.log('='.repeat(60));
console.log(`✓ Processing complete:`);
if (variableSystem) console.log(` - Variable system: enabled`);
if (tocUpdater) console.log(` - TOC updater: enabled (${tocType})`);
if (sourcemapUpdater) console.log(` - Sourcemap updater: enabled`);
if (tableConversion) console.log(` - Table conversion: enabled`);
console.log('✓ Successfully converted README.dev.md to README.md');
console.log(`✓ Output written to: ${targetFile}`);
console.log('='.repeat(60));
} catch (error) {
if (error.code === 'ENOENT') {
console.error('✗ Error: README.dev.md not found');
} else {
console.error('✗ Error converting file:', error.message);
}
process.exit(1);
}
Config Item Examples
If there is a command missing from a chain commands list, it just means that it was already disclosed in a prior list.
| Item Label |
Details |
| Details |
saves all editors, because I need seperate package.json in order to effectively edit the contents with comment sections this functions formats the contents removes all comments overwrites package.json with the correct format so as to not error out the compile process, compiles extension, packages .vsix archive via custom archiver, waits 2 secs because it moves on too quickly, installs the most recent .vsix archive and reloads your current window |
| Local Build & Install VSCode Ext |
type: chain path: saveall, buildpkg, npmRunCompile, customVsixPackager, await2Secs, isntallNow, RWINDOW |
| RWINDOW |
type: command path: ocrmnavigator.RWINDOW hidden: true |
| saveall |
type: command path: workbench.action.files.saveAll hidden: true |
| buildpkg |
type: powershellCommand path: npm run clean-package hidden: true |
| customVsixPackager |
type: command path: ocrmnavigator.customVsixPackager hidden: true |
| isntallNow |
type: command path: ocrmnavigator.isntallNow hidden: true |
| await2Secs |
type: command path: ocrmnavigator.await2Secs hidden: true |
| npmRunCompile |
type: powershellCommand path: npm run compile hidden: true |
| Item Label |
Details |
| Details |
open new vscode instance with the set path |
| Catalyst Software |
type: powershellCommand path: code-insiders -n f:/OpinionatedCRM |
| Item Label |
Details |
| Details |
open new browser window, navigating to the set url |
| Manage VS Extensions |
type: url path: https://marketplace.visualstudio.com/manage/publishers/skyler?auth_redirect=True |
| Item Label |
Details |
| Details |
open vlc with set playlist, I could NOT find a way to use powershell to open vlc with a playlist. Tons of ways you could just open vlc but none that I could find, even on the message boards, a way to accomplish with powershell. This was actually the reason why this extension executes bash commands differently then a lot of other extensions. As the most popular implementation doesn't actually execute the command in a real bash enviroment within your debian wsl. Thus ultimately allowing the execution of any bash cmd with any flags that you set |
| VLC w/ playlist |
type: debianCMD path: cd /mnt/f/music && '/mnt/c/Program Files/VideoLAN/VLC/vlc.exe' 1Firreee.xspf |
| Item Label |
Details |
| Details |
removes .pnpm-cache, node_modules, pnpm-lock.yaml, .cache, public/build, build from your current workspace root |
| clean |
type: powershellCommand path: foreach ($path in @('.pnpm-cache','.pnpm-cache', 'node_modules', 'pnpm-lock.yaml', '.cache', 'public\\build', 'build')) { if (Test-Path $path) { Remove-Item -Path $path -Recurse -Force -ErrorAction SilentlyContinue } } |
| Item Label |
Details |
| Details |
this extension showed me just how much you can automate when it comes to building and getting a project ready to either be posted on the marketplace or standing the site up, no matter how complicated that process is. For example, in order for everything to stay up to date without my intervention. This extension needs to update the quickpick options menu for the icon library by scanning the icons projects root folder, updating 600+ icons. For the ui library, there are two user access levels to accomadate, it then generates the data by scanning that projects component library and creates all the functions that the extension needs, then updates the package.json commands section along with all the submenu sections that are needed for both user access levels, the package.json alone is sitting at over 35,000+ lines. With the total amount of components growing with the current count of 2800+, the context menu is great and all but if you can't remember exactly where an item is located in its relevant submenu, instead of wasting time searching for it there is also a quickpick menu, that menus list also needs updating so it does that too. Next it takes in several markdown files that I constantly update for pre-prompt, converts them into a value that can be used within a json object and updates my global config for devstack so I can place that data into my clipboard at any time. Next up, kinda cheated on this one but this chain references another chain because it covered everything I needed to do next, the chain I referenced is the first table in this section. Even though I have this programmed as a function in the devstack quick pane, the quickpick option is the one button click does all, where as this accomplishes that for developement testing. |
| TRIGGER ALL FOR LOCAL TESTING |
type: chain path: saveall, CreateandRename, runGen2, ImportallcompsDevStack, genIcons, genIcons, genUi, iconInv, updatePrompts, localBuildAndInstall |
| CreateandRename |
type: powershellCommand path: powershell.exe -File ./updaters/CopyAndRenameFiles.ps1 hidden: true |
| runGen2 |
type: powershellCommand path: bun ./updaters/gen2.ts hidden: true |
| ImportallcompsDevStack |
type: powershellCommand path: node ./updaters/build-catalyst-functions.js hidden: true |
| genIcons |
type: powershellCommand path: node ./updaters/generate-icon-inventory.js hidden: true |
| genUi |
type: powershellCommand path: node ./updaters/generate-ui-inventory.js hidden: true |
| iconInv |
type: powershellCommand path: node ./updaters/icon-library-inventory.js hidden: true |
| updatePrompts |
type: powershellCommand path: node ./updaters/update-prompt-from-md.js hidden: true |
| localBuildAndInstall |
type: chain path: saveall, buildpkg, npmRunCompile, customVsixPackager, await2Secs, isntallNow, RWINDOW hidden: true |
Scripts And Others
| Aspect |
Details |
| Description |
The website that previously hosted the documentation prior to this updated readme, will be hosting scripts and other large items that would other make this readme even greater in length. |
| Site |
|
| Items |
|
Sourcemap
ROADMAP
Upcoming Features
Items listed below will also contain upcoming features for the ui library
- [ ] the ability to set arguemnts for items
- [ ] conditional item type, ie if a command fails run x
- [ ] even though, currently there is a delay available, create customizable delay
- [ ] VISUALIZE SCHEMA OBJECT - start from scratch and build it on the browser side
- [ ] within the web app, build a schema wizard. I find that as the schema / project continues to build and expanded on I'm constantly jumping back and forth, from object to object, grabing the value to link to another object, then going back ensuring everything was done right, then triple checking. All the while, your bouncing down 450 lines, then back up 450, then down 550, shit went to far... searching for it again, saying under my breath, where the fuck did it just go... lol
- [ ] whenever working with an object, have a + relation button, when clicked opens a command to search and select a object to link to
- [ ] being able to insert pre built objects
- [ ] with nice, thought-out and planned ui, would make it so easy to work with, like having a command on the left to search for or select the object to edit, this object should be linked, so editing the user object needing to add that relation, technically, you can remove half that processes work laod. Steps to complete would be: 1) select user object, 2) click add relation, and select review object
- [ ] new tools
- [ ] messsenger
- [ ] event calendar
- [ ] appointment calendar
- [ ] catalyst editor
- [ ] rich text editor
Issues
Recently Added Features
- [x] File Link Jumper
- nav links that can be placed within any file to navigate to any other file, if including a line number also navigates to that file at the specified line
- added variant where it navigates to the first mention of the referened string
- monaco editer
- save editors settings to local storage, enabling edits to persist
- more items added to reference sections
- readme generator
- seem to have broken some of the functionality when swapping the sidebar out for the new version. The readme template dropdown isn't displaying any valuees to choose, but everything else works
- open route in browser
- fixed index and splat issues
- [x] icons
- created quick pick menu that inserts icon at cursor and import statement at the top of the file
- encoders
- added the following encoders:
- png to svg
- ico to svg
- jpg to svg
- [x] To do, Notes, Reminders
- merged into devstack
- added post it notes section
- VFS
- [x] items and folders can now be set with custom icons
- [x] every available icon via vscodes
icons-in-labels, is available to be selected via the add / edit item
- [x] DevStack Quickpick Menu
- added several items and rearranged overall structure currently has the following items:
- gs and vsix
- update patch version
- custom vsix packager
- reload extensions
- reload ts server
- reload window
- open devtools
- search devstack
- shortcuts reference
- to do / notes menu
- github menu
- fold menu
- format and errors menu
- performance switch menu
- file system menu
- prisma functions menu
- [x] Bleeding Edge Menu
- activate quickpick menu via setting the global or workspace settings via
"ocrmnavigator.BE_QP": true,
- features that need longer testing and contains the following items currently
- auto create schema
- g4 and vsix - different feature set than the one in the devstack menu
- trigger autorun folder
- convert md file to safe inline string
- toggle regex review
- toggle regex gm
- open regex helper
- reload window
- open gbl settings file
- open ws settings file
- display full gh token
- performance switch
- completely redone as the previous version was... too agressive
- [x] autorun folder
- when using any g4 function, executes any node .js script contained with in the folder
- [x] Code snap
- highlight desired code section, then
alt + d, activate function via quickpick menu option
- creates a terminal style window with the selected code to painlessly share code snippets in a nice looking format
- can predefine settings to be used, but also contains a sidebar to set them on the fly
- motions category
- primitive components that have animations added to each
- build package.json
- takes contents from package.dev.jsonc, formats the file and removes comments then overwrites package.json
- to use add item
"type": "command", and "command": "ocrmnavigator.formatPackgeJson"
New functions for `Wizards Section`
[
{ "command": "ocrmnavigator.editIcon", "title": "await 2 Secs" },
{ "command": "ocrmnavigator.await2Secs", "title": "await 2 Secs" },
{ "command": "ocrmnavigator.createTodo", "title": "Create To Do", "icon": "$(plus)" },
{ "command": "ocrmnavigator.createNote", "title": "Create Note", "icon": "$(plus)" },
{ "command": "ocrmnavigator.createReminder", "title": "Create Reminder", "icon": "$(plus)" },
{ "command": "ocrmnavigator.openPkgJson", "title": "Open package.json" },
{ "command": "ocrmnavigator.openReadme", "title": "Open README" },
{ "command": "ocrmnavigator.reloadExt", "title": "Reload Ext", "icon": "$(copy)" },
{ "command": "ocrmnavigator.toggleAutoSync", "title": "Toggle Auto Sync", "icon": "$(copy)" },
{ "command": "ocrmnavigator.restLocalDirectoryPullRepo", "title": "Reset Local Directory Pull Repo", "icon": "$(copy)" },
{ "command": "ocrmnavigator.customCmd", "title": "Custom Cmd", "icon": "$(copy)" },
{ "command": "ocrmnavigator.showConfig", "title": "Show Config", "icon": "$(copy)" },
{ "command": "ocrmnavigator.createRepo", "title": "Create Repo", "icon": "$(plus)" },
{ "command": "ocrmnavigator.listRepo", "title": "List Repo", "icon": "$(copy)" },
{ "command": "ocrmnavigator.syncNow", "title": "Sync Now", "icon": "$(repo-sync)" },
{ "command": "ocrmnavigator.gitPush", "title": "Git Push", "icon": "$(repo-push)" },
{ "command": "ocrmnavigator.setAll", "title": "Set All", "icon": "$(copy)" },
{ "command": "ocrmnavigator.setRepo", "title": "Set Repo", "icon": "$(copy)" },
{ "command": "ocrmnavigator.setPrivate", "title": "Set Private", "icon": "$(copy)" },
{ "command": "ocrmnavigator.setBranch", "title": "Set Branch", "icon": "$(copy)" },
{ "command": "ocrmnavigator.setATAT", "title": "Set ATAT", "icon": "$(copy)" },
{ "command": "ocrmnavigator.changeRepo", "title": "Change Repo", "icon": "$(copy)" },
{ "command": "ocrmnavigator.githubBasic", "title": "Github Basic", "icon": "$(copy)" },
{ "command": "ocrmnavigator.githubAdv", "title": "Github Advanced", "icon": "$(copy)" },
{ "command": "ocrmnavigator.githubSettings", "title": "Github Settings", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitCommit", "title": "Git Commit", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitChanges", "title": "Git Changes", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitPullPush", "title": "Git Pull Push", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitBranch", "title": "Git Branch", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitRemote", "title": "Git Remote", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitStash", "title": "Git Stash", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitTags", "title": "Git Tags", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitPull", "title": "Git Pull", "icon": "$(arrow-down)" },
{ "command": "ocrmnavigator.gitClone", "title": "Git Clone", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitCheckout", "title": "Git Checkout", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gitFetch", "title": "Git Fetch", "icon": "$(copy)" },
{ "command": "ocrmnavigator.shareRepo", "title": "Share Repo", "icon": "$(copy)" },
{ "command": "ocrmnavigator.removeCollab", "title": "Remove Collab", "icon": "$(copy)" },
{ "command": "ocrmnavigator.showATAT", "title": "Show ATAT", "icon": "$(token)" },
{ "command": "ocrmnavigator.navigateToTokenGen", "title": "Navigate To Token Gen", "icon": "$(copy)" },
{ "command": "ocrmnavigator.foldParents", "title": "Fold Parents", "icon": "$(copy)" },
{ "command": "ocrmnavigator.configureGithubSync", "title": "Configure Github Sync", "icon": "$(copy)" },
{ "command": "ocrmnavigator.gotoSettingsFile", "title": "Goto Settings File", "icon": "$(copy)" },
{ "command": "ocrmnavigator.placeAllSettingsInClipboard", "title": "Place All Settings In Clipboard", "icon": "$(copy)" },
{ "command": "ocrmnavigator.toggleCheck", "title": "toggle Check", "icon": "$(copy)" },
{ "command": "ocrmnavigator.patchVersion", "title": "patch Version", "icon": "$(copy)" },
{ "command": "ocrmnavigator.nextImportIssue", "title": "next Import Issue", "icon": "$(copy)" },
{ "command": "ocrmnavigator.prevImportIssue", "title": "prev Import Issue", "icon": "$(copy)" },
{ "command": "ocrmnavigator.scanFolderImports", "title": "Scan Folder Imports", "icon": "$(copy)" },
{ "command": "ocrmnavigator.scanFileImports", "title": "Scan File Imports", "icon": "$(copy)" },
{ "command": "ocrmnavigator.insertRegion", "title": "Insert #region", "icon": "$(copy)" },
{ "command": "ocrmnavigator.insertEndRegion", "title": "Insert #endregion", "icon": "$(copy)" },
{ "command": "ocrmnavigator.wrapWithRegion", "title": "wrap With Region", "icon": "$(copy)" },
{ "command": "ocrmnavigator.shoeFullToken", "title": "Shoe Full Token", "icon": "$(copy)" },
{ "command": "ocrmnavigator.openOrCopyPostIt", "title": "Open or Copy Post It Pad", "icon": "$(copy)" },
{ "command": "ocrmnavigator.copyPostItContent", "title": "Copy Content", "icon": "$(copy)" },
{ "command": "ocrmnavigator.clearPostItPad", "title": "Clear This Pad", "icon": "$(clear-all)" },
{ "command": "ocrmnavigator.deleteAllPostIts", "title": "Delete All Post-Its", "icon": "$(trash)" },
{ "command": "ocrmnavigator.isntallNow", "title": "isntall Now" },
{ "command": "ocrmnavigator.checkVsixNow", "title": "check Vsix Now" },
{ "command": "ocrmnavigator.GBLSettingsFile", "title": "GBLSettingsFile" },
{ "command": "ocrmnavigator.checkVsixNow", "title": "WSSettingsFile" },
{ "command": "ocrmnavigator.YEEEETMOTHERFUCKERVERCEL", "title": "G4 and Push To Vercel" },
{ "command": "ocrmnavigator.toggleRegexPreview", "title": "OCRM Navigator: Toggle Regex Preview" },
{ "command": "ocrmnavigator.toggleRegexGM", "title": "OCRM Navigator: Toggle Regex GM Flags" },
{ "command": "ocrmnavigator.openRegexHelper", "title": "OCRM Navigator: Open Regex Pattern Helper" },
{ "command": "ocrmnavigator.insertRegexPattern", "title": "OCRM Navigator: Insert Regex Pattern" },
{ "command": "ocrmnavigator.toggleJsonValidation", "title": "toggle Json Validation" },
{ "command": "ocrmnavigator.toggleJsoncValidation", "title": "toggle Jsonc Validation" },
{ "command": "ocrmnavigator.foldRegionLevel1", "title": "Fold Level 1 Regions" },
{ "command": "ocrmnavigator.foldRegionLevel2", "title": "Fold Level 2 Regions" },
{ "command": "ocrmnavigator.foldRegionLevel3", "title": "Fold Level 3 Regions" },
{ "command": "ocrmnavigator.foldRegionLevel4", "title": "Fold Level 4 Regions" },
{ "command": "ocrmnavigator.foldRegionLevel5", "title": "Fold Level 5 Regions" },
{ "command": "ocrmnavigator.foldRegionLevel6", "title": "Fold Level 6 Regions" },
{ "command": "ocrmnavigator.foldRegionLevel7", "title": "Fold Level 7 Regions" },
{ "command": "ocrmnavigator.toggleFoldRegionLevel1", "title": "Toggle Fold Level 1 Regions" },
{ "command": "ocrmnavigator.toggleFoldRegionLevel2", "title": "Toggle Fold Level 2 Regions" },
{ "command": "ocrmnavigator.toggleFoldRegionLevel3", "title": "Toggle Fold Level 3 Regions" },
{ "command": "ocrmnavigator.toggleFoldRegionLevel4", "title": "Toggle Fold Level 4 Regions" },
{ "command": "ocrmnavigator.toggleFoldRegionLevel5", "title": "Toggle Fold Level 5 Regions" },
{ "command": "ocrmnavigator.toggleFoldRegionLevel6", "title": "Toggle Fold Level 6 Regions" },
{ "command": "ocrmnavigator.toggleFoldRegionLevel7", "title": "Toggle Fold Level 7 Regions" },
{ "command": "ocrmnavigator.formatJsonFile", "title": "format Json File" },
{ "command": "ocrmnavigator.vsixBuildLocalInstall", "title": "vsix Build Local Install", "category": "Catalyst" },
{ "command": "ocrmnavigator.triggerAutorunFolder", "title": "trigger Autorun Folder", "category": "Catalyst" },
{ "command": "ocrmnavigator.createPropertiesFile", "title": "create Properties File", "category": "Catalyst" },
{ "command": "ocrmnavigator.updatePromptObjects", "title": "Update Prompt Objects", "category": "Catalyst" },
{ "command": "ocrmnavigator.convertReadmeDevMd", "title": "Convert README.dev.md -> README.md", "category": "Catalyst" },
{ "command": "ocrmnavigator.pro7Archiver", "title": "Create Encrypted Package", "category": "Catalyst" },
{ "command": "ocrmnavigator.catalystUIQuickPick", "title": "Catalyst-UI Quick Pick", "category": "Catalyst" },
]
LICENSE
This project is protected under the MIT License. For more details, refer to the LICENSE file.
ACKNOWLEDGMENTS
Return
| |