LowCode Studio
Version 0.8.15 · Studio-like low-code RPA designer for VS Code and Cursor on Mac, Windows, and Linux.
Built for UiPath practitioners who design, framework, develop, deploy, and test automations, but cannot run UiPath Studio Desktop on macOS. UiPath’s official Maestro extension covers Maestro Flows (.flow). This extension covers classic Studio workflows, Flowcharts, and REFramework locally — with the easiest path to Studio Web publish.
Not an official UiPath product.

Feature reference: docs/FEATURES.md · Full activity list: docs/ACTIVITIES.md · Studio Web guide: docs/STUDIO_WEB.md · Roadmap: docs/ROADMAP.md
The easy loop (what this extension is for)
New REFramework project (.uipx Local Workspace scaffolded automatically)
→ Dry Run / Scenarios (F5 / Shift+F5)
→ Open folder in Studio Web → Local Workspace
→ Save in LCS (↔ bidirectional sync) → Publish
Creating a new REFramework project now writes its Studio Web Local Workspace (.uipx) at the same time — no separate Connect Local Workspace step needed to get started. Use Connect Local Workspace (Cmd+Shift+U) later to re-sync or link an existing solution.
| Priority |
What |
Shortcut |
| 1. Test |
Dry Run + Manage Scenarios |
F5 / Shift+F5 / Cmd+Shift+T |
| 2. Ship |
Studio Web Local Workspace (↔ sync on Save) |
Cmd+Shift+U |
| Design |
Insert (⌘K) / Blueprint / REFramework / Assist |
⌘K in designer |
| Config |
Config.json ↔ Config.xlsx |
— |
In action
- Designer — framed toolbox + properties, sequence board, macOS-style bottom dock
- Floating frames — traffic-light controls to float / dock / collapse either side panel
What’s in 0.8.15
Four new Office 365 Calendar activities — nesting inside the existing Microsoft 365 Scope, no new setup required.
Search Events / Create Event / Delete Event / Get Calendars — grounded in real Studio-exported samples (not invented), backed by a fixture round-trip test, and landing verified (not ? unverified) in the activity palette.
- Teams intentionally not included — a real "Create Teams Meeting" sample uses a fundamentally different generic Integration Service shape, not a typed activity like Calendar's; tracked separately in docs/ROADMAP.md as its own future investigation.
- Full detail: CHANGELOG.md
Previously — 0.8.14: verification pass — Home screen + designer undo/redo
A verification pass ahead of the next feature push — re-checked the Home screen (sidebar webview, editor-tab panel, "Ask Assistant" routing) and 0.8.13's designer undo/redo (stack commit/apply logic, keyboard shortcuts, dock buttons). No defects found, no behavior changed. Full detail: CHANGELOG.md
Previously — 0.8.13: Theme 8 closed — designer undo/redo (T17), sync-warnings ↔ scenario-trust (T18)
Theme 8 (Designer reliability & trust) closed — the two gaps 0.8.12's own UI/UX audit found but didn't fix. Designer undo/redo: every edit in the designer — property changes, drag/reorder, deletes, pasted Assist scaffolds — used to be permanent the instant it happened (0.8.12 only mitigated the single worst case: confirming before deleting a container's subtree); new in-webview undo stack (Ctrl/Cmd+Z / Ctrl/Cmd+Shift+Z or Ctrl/Cmd+Y, plus new Undo/Redo dock buttons). Sync warnings now travel with the next scenario run: a project that synced from Studio Web with import warnings used to be able to report a fully green Data/Test/scenarios.json run right after, with nothing connecting the two — the most recent sync's warnings are now persisted and surfaced ahead of the scenario report. Full detail: CHANGELOG.md
Previously — 0.8.12: bulk activity/REFramework testing, real fixes, accessibility pass
A bulk activity-parity test against Studio Web and a deep REFramework integrity check, followed all the way through to real fixes rather than just findings — plus an accessibility pass. XAML import silently reordered same-type activities on every Studio Web sync (fixed via a secondary order-only parse); REFramework's Config was never actually loaded, just assigned the file path string (now genuinely reads/deserializes it, MaxTransactions now enforced); imported TryCatch catch clauses were invisible to dry-run; deleting a container activity is no longer one unconfirmed, unrecoverable click; and an accessibility pass added ARIA live regions/modal semantics/menu roles across the toast, dialogs, and menus. Full detail: CHANGELOG.md
Previously — 0.8.11: REFramework exports that now compile in real UiPath Studio
A real-world bug hunt: opening a brand-new REFramework project in actual UiPath Studio surfaced a compile-breaking gap between what the designer let you build and what the exporter wrote to XAML — generated conditions used C# syntax (!= null) instead of VB.NET, so they never compiled. Fixed across both templates, plus a Break-outside-loop validation check, the Studio Web template's redundant Break removed, and New Project no longer forces your first open workspace folder. Full detail: CHANGELOG.md
Previously — 0.8.10: Package version honesty + Portable/Windows target switcher + bucket upload UI
Fixed resolveUiPathDependencies silently re-bracketing a floating catalog-default package version into a strict pin on the very next resolve (the exact "unavailable strict dependencies" failure the floating default exists to avoid). New Set UiPath Target Framework command shows the project's actual Windows-only activities and what happens to each before you switch Portable ↔ Windows. New Upload file to bucket… button in the Orchestrator Connection tab wires up the existing uploadBucketFile API to a real UI. Full detail: CHANGELOG.md
Previously — 0.8.9: UI/UX audit pass
A UI/UX audit pass across the designer — side panels, mini-map, properties, Assist, canvas drag/drop — turned up and fixed several concrete bugs, each with a regression test: Studio Web solutions no longer get trashed on re-open, canvas drag/drop reorder landed one slot off, Flowchart Link couldn't be canceled, dictionary fields didn't always persist, Assist Live "Apply all" could exceed what was shown, Assist Scaffold's "Replace" wiped the workflow with no confirmation, the mini-map could hide the current selection, and side-panel Float/Dock buttons offered no-ops. Full detail: CHANGELOG.md
Previously — 0.8.8: New REFramework projects scaffold their Local Workspace automatically
Creating a new REFramework project now writes its Studio Web Local Workspace (.uipx + exported project.json/.xaml) at the same time, reusing the Connect Local Workspace path — no separate step needed to get started. Connect Local Workspace remains available for re-syncing or linking an existing solution. Full detail: CHANGELOG.md
Previously — 0.8.7: Semantic diff for PR review
New Semantic Diff command (canvas Tools menu ⚒ / command palette) compares the open workflow against its git HEAD version or another .lcs.json file at the activity level — added/removed/changed steps (matched by stable id, so a moved step doesn't read as delete+add) and changed properties, not a raw text diff. Closes Theme 7 (CI & review tooling) entirely, alongside 0.8.5's headless CI dry-run. Also new: docs/FEATURES.md, a clean, short-description reference of every shipped feature. Full detail: CHANGELOG.md
Previously — 0.8.6: Save-time sync conflicts show a real diff, not a silent overwrite
When both LCS and Studio Web changed the same workflow, Save always correctly kept your LCS edit and moved the Studio Web copy to .lcs-sync-trash/ — but until now it never told you. Save now shows a warning naming the conflicting workflow(s) with a View diff action that opens VS Code's native diff editor comparing what was lost against what was kept. Full detail: CHANGELOG.md
Previously — 0.8.5: Headless scenario dry-run for CI
A new scripts/run-scenarios.js CLI runs a project's Data/Test/scenarios.json outside the editor — same engine as Shift+F5's "Dry Run Scenarios" — and exits non-zero on any FAIL so a PR pipeline can gate on it: npm run scenarios:ci -- path/to/project. --json and --junit=path.xml cover custom tooling and JUnit-native CI systems. Full detail: CHANGELOG.md
Previously — 0.8.4: Break, Get Transaction Item, and QueueItem export shapes fixed against a real Studio Web sample
Break now exports as ui:Break (was the bare WF4 element, which Studio Web didn't recognize); Get Transaction Item now exports QueueType, not QueueName (the same surprise already fixed for Add Queue Item, just missed on this sibling); and the QueueItem variable type introduced in 0.8.3 now correctly resolves through the already-declared ui namespace instead of a separate fabricated UiPath.Core clr-namespace prefix. Full detail: CHANGELOG.md
Previously — 0.8.3: REFramework correctness fixes
Programming.Assign no longer quotes bare numbers/booleans/expressions as string literals; the REFramework TransactionItem variable is typed QueueItem everywhere instead of the generic Object; Get Transaction Item and Break file under the REFramework activity-palette category. Full detail: CHANGELOG.md
- Properties panel General section collapses the read-only Type field and Container color picker behind a "Type & Container Color" disclosure by default; the canvas toolbar Sync button is icon-only; Home screen Recent-projects rows get a ✕ to remove stale entries, and the Current panel's project name is clickable to reopen it. Full detail: CHANGELOG.md
Previously — 0.8.1: release hardening pass
- Re-synced docs (README/ROADMAP/ACTIVITIES) with the actual shipped version, removed a stray committed
.DS_Store, added a first performance test (src/test/performance.test.ts) plus a smaller minified production bundle, fixed a dead/conflicting CSS rule and missing hover/focus states across the Designer/Home/Orchestrator webviews, tokenized repeated status colors, added responsive breakpoints for narrow panels, and centralized the brand name/logo references behind src/branding.ts (see Rebranding below). Full detail: CHANGELOG.md
Previously — 0.7.22: Save/sync stopped trashing unchanged workflows
- Save no longer trashes unchanged workflows. Saving into a Studio Web Local Workspace used to back up every workflow's
.xaml into .lcs-sync-trash/ on every sync, even ones nothing had changed — a 10-workflow project wrote 10 backup files on every Save. It now only backs up (and only overwrites) the workflows whose content actually changed since the last sync, verified by a regression test that a no-op Save leaves .lcs-sync-trash/ untouched.
- Sync/save footprint re-audited end to end. Confirmed pull-side backups already only fire on real Studio Web changes,
.lcs-sync-trash/ already prunes to the last 10 sync generations, and the files pushed into the synced Portable solution are already limited to .xaml + project.json + Data/Config.json/Data/Config.xlsx — scenarios.json, Data/Docs/, and the Orchestrator config file stay LCS-only by construction.
- Orchestrator settings surfaced on Home, live dropdown suggestions for Asset/Queue/Bucket name fields, a fixed Test-connection false-negative (folder-scoped probe swapped for a tenant-wide one), corrected Cloud base-URL guidance, and Get/Set Asset · Add Queue Item · Upload Storage File now hit the real API in dry-run when connected.
- Fixed blank Path-family exports (Delete/CreateDirectory/CopyFile/MoveFile/RenameFile/CreateFile/PathExists/KillProcess/ReadCsv/WriteCsv writing
[""] instead of an empty field) and a variable-name round-trip gap on the same fields.
- Tools menu (⚒) and dock/panel layering fixes — the canvas Tools menu and bottom dock could render behind the Properties panel or float over tooltips due to stacking-context issues; both fixed.
- Full detail on every fix: CHANGELOG.md
Previously — 0.7.21: Orchestrator connection (PAT, write scope)
- New Orchestrator: Connection Settings (PAT) panel — per-project base URL (cloud or on-prem), optional folder/
OrganizationUnitId, and a Personal Access Token, with a live Connected/Not connected/Connection failed status and a Test connection action. PAT-only auth (Authorization: Bearer), no OAuth.
- Write actions: Add queue item (with a real queue picker), Set asset (typed Text/Bool/Integer, create or update), List buckets — all real Orchestrator REST calls (
AddQueueItem, Assets, Buckets), run host-side so the token never enters the webview.
- The PAT is never written to disk. It lives only in VS Code
SecretStorage, keyed per project. Non-secret config lives in a new .lcs-orchestrator.json that's deliberately excluded from the Studio Web Local Workspace sync allow-list — see Security below.
- Canvas collapse/expand. Container activities on the Sequence canvas (If, Try/Catch/Finally, ForEach, While, Parallel, …) get a chevron toggle — reusing the 0.7.19 dock accent-bar/chevron idiom — that collapses their children subtree behind a "N steps hidden" summary chip. Pure view state, never written to
.lcs.json; keyboard-accessible; jumping to a step via Trace/Fix this step/Step Into/Find auto-expands it if it's hidden inside a collapsed container
- Generate design document from a flow. New Generate design document from workflow (Assist) command produces an SDD-style Markdown doc (arguments, variables, a nested step-by-step walkthrough, an activities-used table with the same real/simulated/unsupported confidence badges as the Trace panel, and resolved Invoke Workflow references with linked summaries) — written to
Data/Docs/…, kept out of the synced Studio Web Local Workspace tree
- Excel modern property round-trip.
WriteRange, AppendRange, ReadCell, WriteCell, and ExcelApplicationScope now export the same WorkbookPathResource IResource cast as ReadRange when the workbook path is a variable, instead of a classic WorkbookPath string the modern activities reject in Studio Web
- Parallel / Retry / Timeout verified end to end — catalog, XAML import/export, package pin, and honest dry-run warnings were already fully wired; a new round-trip test locks it in
- See docs/ROADMAP.md for the full picture
Security — Orchestrator PAT storage
The Orchestrator Personal Access Token is stored only via VS Code's SecretStorage API, scoped per project. It is never written to any file in the project (not project.json, not .lcs-orchestrator.json, not any .lcs.json workflow), and it is never synced into the Studio Web Local Workspace folder — sync only ever copies an explicit allow-list of files (.xaml, Data/Config.*), and the PAT is not on it by construction (it isn't in a file at all). Requests to Orchestrator run from the extension host, not the webview, so the token never enters webview JS or a postMessage payload.
Full history: CHANGELOG.md
Install
cd lowcode-studio
npm install
npm run compile
npm test
npm run package
In Cursor / VS Code: Extensions: Install from VSIX… → lowcode-studio-0.8.7.vsix → reload.
Easy path
Fastest start: New Robot Blueprint → pick scrape→Excel / login→email / API→table → F5.
REFramework path:
- Open folder (LCS project or Studio Web
.uipx solution — Main opens automatically) or New REFramework Project — pick Classic (Flowchart + Framework/ folder, matches official Studio REFramework) or Studio Web native (single Sequence, Portable — same shape Studio Web itself allows for a natively-created cross-platform project, no Studio Desktop needed)
- Edit
Framework/Process.lcs.json (Classic) or the Process Transaction Try/Catch inside Main.lcs.json (Studio Web native)
- Tune
Data/Config.json (or import classic Config.xlsx)
- Shift+F5 → run scenarios (or Manage Scenarios to add a quick smoke test)
- Validate Packages (optional) → Create / link Studio Web Local Workspace → open that folder in Studio Web → Save to sync
MyREFramework/
Main.lcs.json
Framework/Process.lcs.json
Data/
Config.json + Config.xlsx
Test/scenarios.json ← easiest local tests
activities.custom.json
Dry-run & scenarios (key feature)
| Piece |
Purpose |
| F5 |
Dry-run the open workflow (Run All or Step Through) |
| Step Through |
Designer button — highlight steps + variable deltas |
| Trace panel |
Left dock — every step in the run, status dot, jump-to, per-step Fix |
| Shift+F5 |
Pick scenario / All / Add quick / Manage |
| Manage Scenarios |
Add MaxTransactions smoke tests, duplicate, open file |
Data/Test/scenarios.json |
Named seeds + PASS/FAIL expects |
Last scenario is remembered for one-click re-run.
Studio Web Local Workspace (key feature)
| Step |
Action |
| 1 |
Connect / Open Studio Web Local Workspace (create or open a .uipx solution) |
| 2 |
Reveal Solution → Studio Web → Local Workspace → Open solution → Allow |
| 3 |
Save in LowCode Studio — .xaml syncs into the linked folder |
| 4 |
Publish from Studio Web → run on a Windows robot |
Git tenants: commit the *.StudioWeb folder into the repo Studio Web tracks, then pull in Studio Web. Full notes: docs/STUDIO_WEB.md.
Export includes XAML, project.json (NuGet deps), Config.json/xlsx, and scenarios.json for handoff reference.
Config.xlsx bridge
| Command |
Direction |
| Export Config.xlsx |
JSON → classic Settings / Constants / Assets |
| Import Config.xlsx |
classic Excel → JSON |
Custom activities
Register Custom Activity → This project (activities.custom.json) or All my projects (user library).
Activity catalog (summary)
| Category |
Highlights |
| Programming |
Assign, Multiple Assign, Invoke Code |
| Data |
Build/Filter/ForEach Row, Add Row/Column, CSV |
| System |
Log, Throw, Terminate Workflow |
| UI |
Use Application/Browser, Click, Type Into, Extract Table, … |
| Messaging |
HTTP, Email, Deserialize/Serialize JSON |
| Python |
Scope, Load/Run Script, Invoke Method, Get Object |
| REFramework |
Invoke Workflow, Set Transaction Status |
See docs/ACTIVITIES.md. Invoke Code / UI steps are dry-run stubs on Mac (real run in Studio/Robot).
Commands
| Command |
Shortcut |
| Dry Run |
F5 |
| Dry Run Scenarios |
Shift+F5 |
| Activity Palette |
⌘K (designer) / Cmd+Shift+A |
| Manage Scenarios |
Cmd+Shift+T |
| Connect to Studio Web |
Cmd+Shift+U |
| Generate design document from workflow |
— |
| Show Studio Web Guide |
— |
| Export for Studio Web |
— |
| Export / Import Config.xlsx |
— |
| New Robot Blueprint |
— |
| New REFramework Project |
— |
| Getting Started |
— |
Roadmap
Fully shipped themes
- Theme 2 — Designer editing depth: canvas polish (Align X/Y, Distribute H/V, clearer drop ghosts), typed property editors (DataTable columns, HTTP headers dictionary, secret-as-variable, FlowSwitch case chips), and onboarding copy (empty-canvas blueprint → scenario → Connect CTAs) — closed in 0.7.18
- Theme 4 — Run & debug in Cursor: Dry-run 2.0 (breakpoints, run-to-here, editable watch panel, Step Into Invoke Workflow, typed fixture library UI) and Traces → Assist (one-click "Fix this step", full structured trace panel) — closed in 0.7.14
Shipped recently (0.7.13 → 0.8.12)
- 0.7.13 — full structured trace panel (all steps, jump-to, per-row Fix), closing Theme 4 entirely
- 0.7.14 — Align X/Y, FlowSwitch case chip editor, typed fixture library UI, closing Theme 2's T5/T6 remainders
- 0.7.15 — six more Mail activity variants + HTTP Basic auth round-trip
- 0.7.16 — Selector Builder "Help me pick" ranked suggestions from pasted HTML
- 0.7.17 — Orchestrator/REF depth: queue item Progress/Defer/Due Date, typed asset Value Type, honest same-run queue dry-run, REFramework scaffold uses the real
GetTransactionItem activity
- 0.7.18 — onboarding copy: empty-canvas CTAs (blueprint → scenario → Connect), closing Theme 2 entirely
- 0.7.19 — Excel modern
WorkbookPathResource round-trip, verified Parallel/Retry/Timeout mapping, left-dock UX polish
- 0.7.20 — canvas collapse/expand for container activities (post-Theme-2 polish), generate SDD-style design doc from a flow (Theme 5)
- 0.7.21 — Orchestrator connection: PAT-only auth, live connection status, write scope (queue items, assets, buckets), SecretStorage-backed token, opens Theme 6
- 0.7.22 — Save/sync no longer trashes unchanged workflows on every Save; Orchestrator UX/bug fixes (Home button, live dropdown suggestions, Test-connection fix, Cloud URL guidance); Path-family blank-export fix; Tools menu/dock layering fixes
- 0.7.23 — First Integration Service catalog slice: Microsoft 365 (Scope, Send/Get Mail, Files activities)
- 0.7.24 — Toolbar glyphs replaced with monochrome SVG icons; "Ask UiPath Autopilot" surfaced when Autopilot is installed
- 0.8.1 — Release hardening pass: docs re-synced to the shipped version, repo cleanup, first performance test + minified production bundle, UI fixes (dead CSS, hover/focus states, tokenized status colors, responsive breakpoints), and brand name/logo references centralized in
src/branding.ts
- 0.8.2 — Properties panel Type/Container color collapsed by default, icon-only canvas Sync button, Home screen Recent-projects remove + click-Current-to-open
- 0.8.3 — REFramework fixes: Assign no longer quotes numbers/expressions as strings, TransactionItem typed QueueItem, Get Transaction Item/Break filed under the REFramework palette category
- 0.8.4 — Break/Get Transaction Item/QueueItem export shapes corrected against a real Studio Web sample (ui:Break, QueueType not QueueName, ui:QueueItem not a fabricated clr-namespace)
- 0.8.5 — Headless scenario dry-run CLI for CI (
scripts/run-scenarios.js), closing T15 (Theme 7)
- 0.8.6 — Save's sync-conflict warning gains a View diff action opening a real
.xaml diff instead of silently trashing the losing side
- 0.8.7 — Semantic Diff command: activity-level compare vs. git HEAD or another workflow file, closing Theme 7 entirely; new
docs/FEATURES.md feature reference
- 0.8.8 — New REFramework projects scaffold their Studio Web Local Workspace (
.uipx) automatically — no separate Connect step needed
- 0.8.9 — UI/UX audit pass: Studio Web re-open no longer trashes unchanged workflows, canvas drag/drop reorder fixed, Flowchart Link cancelable, dictionary fields persist reliably, Assist Live/Scaffold guardrails, mini-map selection visibility, side-panel Float/Dock no-ops removed
- 0.8.10 — Package version-range honesty fix (floating catalog defaults no longer silently re-strict-pin), Portable/Windows target switcher with consequences shown before you commit, bucket file upload UI — closing T14 and T13's last remainder
- 0.8.11 — REFramework exports now compile in real UiPath Studio (C#-syntax conditions like
!= null fixed to VB.NET), Break-outside-loop validation, the Studio Web REFramework template's redundant Break removed, New Project lets you choose where it's saved
- 0.8.12 — bulk activity-parity + REFramework integrity test scripts turned up and fixed a real XAML import reordering bug, a REFramework
Config that was never actually parsed, invisible imported TryCatch catch clauses in dry-run, and unrecoverable one-click container deletes; plus an accessibility pass (toast ARIA live region, modal/menu roles) and designerHtml.ts split from 8,245 to 685 lines
Open themes
- Theme 3 — Catalog & fidelity: remaining import-map slices (Integration Service/Testing packages, Excel/UI modern round-trip), Excel Application Scope + Parallel/Retry/Timeout parity, Testing pack design-time maps
- Theme 5 — Assist depth: nested/multi-line block scaffolds beyond one
=> block per call; optional constrained-LLM mode
- Theme 6 — Closer to Orchestrator: full publish/deploy pipeline exploration remains open (connection shipped 0.7.21; bucket upload UI + package/target version-range honesty shipped 0.8.10)
- Theme 7 — CI & review tooling: fully shipped as of 0.8.7 (T15 headless CI dry-run, T16 semantic XAML diff)
Full plan: docs/ROADMAP.md
Rebranding
To re-skin this extension under a different name/logo:
src/branding.ts — edit BRAND_NAME and the BRAND_ICON_PATH/BRAND_LOGO_PATH/BRAND_ACTIVITYBAR_ICON_PATH constants. These drive the Home and Designer webview titles/headers/alt text and the chat participant icon.
media/ — swap the actual asset files at the paths above (icon.png, logo.png, activitybar.svg).
package.json — separately update the marketplace-facing fields: displayName, description, icon, and the contributes.viewsContainers/views icon fields. These are read by VS Code directly and can't be sourced from a TS constant.
Do not change package.json's name or publisher fields, or the lowcodeStudio.* command/view ID namespace used throughout src/ — those are functional VS Code identifiers tied to the marketplace listing, existing installs, and user keybindings; renaming them breaks upgrades for existing users. A handful of older log messages and command titles outside the files above still contain the literal string "LowCode Studio" (not yet migrated to the constant) — search for LowCode Studio in src/ if you need full coverage.
Publishing to the VS Code Marketplace
The extension is already wired for @vscode/vsce (dev dependency, npm run package already runs vsce package --no-dependencies). To ship a new version:
- Bump the version. Edit
"version" in package.json (and keep package-lock.json's top-level version in sync — npm install will do this for you too). Add a matching ## [x.y.z] — YYYY-MM-DD section to CHANGELOG.md at the top (the format vsce/marketplace readers expect is plain Keep-a-Changelog Markdown, nothing special to configure).
- One-time: create a Marketplace publisher. Sign in to marketplace.visualstudio.com/manage with a Microsoft account, create a publisher whose id matches
package.json's "publisher" field (lowcode-studio), then create a Personal Access Token in Azure DevOps for that account: User settings → Personal access tokens → New Token, Organization = All accessible organizations, Scopes = Marketplace → Manage. Copy the token immediately — it's shown once.
- Log in once from the CLI:
npx vsce login lowcode-studio
# paste the PAT when prompted
- Package and sanity-check locally first:
npm install
npm run compile
npm test
npm run package # builds out/extension.js and lowcode-studio-x.y.z.vsix
Install the produced .vsix via Extensions: Install from VSIX… in a scratch VS Code/Cursor window and smoke-test Home, Designer, and a Studio Web Local Workspace sync before publishing.
- Publish:
npx vsce publish # bumps nothing — publishes the version already in package.json
# or, to bump + publish in one step:
npx vsce publish patch # or: minor | major | <specific version>
vsce publish reads the same publisher/name/version from package.json and uploads the packaged .vsix; it typically shows up on the Marketplace within a few minutes, subject to Microsoft's automated malware/policy scan.
- Tag the release in git (optional but recommended) so the published version has a corresponding commit/tag:
git tag vx.y.z && git push origin vx.y.z
Publishing pushes a public release to every VS Code/Cursor user who has the extension installed with auto-update on — treat vsce publish as a real, hard-to-fully-reverse action (you can unpublish a version, but users who already updated keep it locally), not a routine npm run package step.
License
MIT
| |