Releases: PATILYASHH/VPC
Release list
v13.0.0 — Notify Push Service & Three-Track Versioning
Version tracks
VPC now ships three independent version numbers instead of one — see VERSIONING.md.
| Track | Version | Covers |
|---|---|---|
| VPC (platform) | 13.0.0 |
This release — installer, backend, cross-cutting features |
| VPC OS (desktop shell) | 3.5.0 |
Window manager, taskbar, launcher, desktop icon grid |
| VPCUI (design system) | 1.0.0 |
Shared UI/component layer — new track, first release |
All three are visible live in Settings → System.
Highlights
🔔 Notify — self-hosted push notifications
A new app for running your own push notification service, scoped per project:
- Projects with configurable device limits, per-device queue caps, and default message TTL
- Client + server API keys (AES-256-GCM encrypted at rest, SHA-256 hash lookup)
- Device registration, heartbeat, and topic subscriptions
- Send to a single device, a topic, or broadcast — with per-message delivery tracking (
queued→sent→delivered/failed/expired) - New
notifypermission in VPC Auth for role-based access
Known limitation: this release ships the schema, REST API, and admin UI (M1). The WebSocket delivery gateway that actually pushes queued messages to connected devices (M2) isn't built yet — messages currently stay queued. Live delivery is the top item for the next release.
🗂️ Desktop icon grid
Desktop icons now arrange in a proper grid on the desktop surface itself, not just the launcher.
🏷️ Three-track versioning + System tab
Split the single version number into VPC / VPC OS / VPCUI (see table above), backed by one source of truth (frontend/src/lib/version.js). Added a dedicated System tab in Settings to show all three plus Node.js and platform info — previously buried inside the Server tab.
✏️ Rebrand: Virtual Private Computer
VPC's expansion changes from "Virtual PC Control" to Virtual Private Computer — updated across the README, package metadata, login screen, terminal welcome banner, and both logo assets (including the tagline baked into the SVGs).
Files added
backend/services/notifyService.js,backend/routes/notify.js,backend/routes/notifyApi.js,backend/middleware/notifyApiAuth.jsbackend/migrations/049_notify_projects.sql…054_notify_deliveries.sqlfrontend/src/components/apps/Notify.jsx+frontend/src/components/notify/*(Overview, ProjectList, ProjectDashboard, Devices, ApiKeys, Compose, Settings)frontend/src/components/desktop/DesktopIconGrid.jsxfrontend/src/lib/version.jsVERSIONING.md
Upgrade path
Existing instances: VPC Store → Update, then Restart VPC when prompted. The upgrader pulls the new commit, runs npm install, rebuilds the frontend, and runs migrations 049–054 (creates the notify_* tables). After upgrading, grant the new Notify permission to any admin roles that need it via VPC Auth.
🤖 Generated with Claude Code
v12.0.0 — Real PTY terminal & AI Agent
Highlights
🖥️ Real PTY terminal
The in-app Terminal is now backed by node-pty with xterm.js over a WebSocket. Interactive tools (claude, node, python, vim, ssh, top) work the same as in a native terminal — color, ANSI, cursor movement, Ctrl+C, the works.
- Augmented PATH per command picks up newly installed binaries (npm globals, WinGet, pip user dirs) without a backend restart.
- Windows curl auto-fix:
--ssl-no-revokeinjected on the fly + persistent_curlrcsoCRYPT_E_NO_REVOCATION_CHECKstops blocking installs.
🤖 AI Agent
- Chat tab is reachable again — was orphaned in the AI Agent module.
- Claude CLI status detection fixed — was using stale PATH and timing out; now PATH-scans the binary directly.
- VPC Bot auto-creates default user so chat is immediately usable on first launch.
- Todo update returns proper 404 (was returning 200 with
{error}).
🌿 Prod → Beta forks
Forks now clone schema + data by default. The opt-in checkbox flipped to opt-out for schema-only forks.
♻️ Robust restart
The Restart button now actually restarts VPC under nodemon, PM2, or plain node — used to silently no-op outside PM2.
📊 Real upgrade progress
The upgrade bar shows real % from the backend across 6 named steps (git pull, backend deps, frontend deps, build, migrations, finalize). No more fake 60%.
Files added
backend/services/ptyService.jsbackend/scripts/respawn.jsbackend/utils/shellEnv.js
Upgrade path
Existing instances: open VPC Store → Update, then Restart VPC when prompted. The upgrader pulls the new commit, runs npm install in both packages (picks up node-pty, ws, xterm), rebuilds the frontend, runs migrations, and surfaces the restart banner.
🤖 Generated with Claude Code
v11.0.0 — OAuth, Staged Deploys & PR Previews
Highlights
🔐 DB Auth — Google & GitHub OAuth
Supabase-style social sign-in, configured per project. Each project DB now has an auth_providers table; client_secret is AES-GCM encrypted. End users hit /api/db/auth/v1/<slug>/authorize/<provider> and come back with a JWT identical to the existing email login. Auto-link by email, avatar + provider badges in the user list, collapsed-by-default provider cards.
🚀 Web Hosting — Staged Deploys + Instant Rollback
Every deploy now builds into <slug>__staging, healthchecks (HTTP probe for node apps, HTML check for static), then atomically swaps with the live folder. Previous build is archived to <slug>__versions/v_<ts>_<sha>/. Last 3 versions kept for one-click rollback — new "Version History" card in the Overview tab. The live version stays online if a deploy fails.
🤖 AI Fix — now safe and reliable
The old AI Fix mutated the live build and could take the site down. Now it operates on the preserved staging dir (kept on disk after a failed deploy), applies AI patches, runs the full staged pipeline, and only swaps to live if the new build healthchecks green.
📊 Integrations — usage stats & fixed UI
GET /admin/integrations now returns per-integration usage data (total uses, unique apps, last used, per-app breakdown). New summary tiles (Connected · Total Uses · Apps Using · Last Activity) and click-to-expand per-app usage on each card. The "Connect a Service" picker is now scrollable, searchable, and grouped by category.
🔀 PR Previews — Netlify/Vercel-style
Open a PR → automatic preview deploy at /<slug>-pr-<n>/ on its own PM2 port. Sticky GitHub PR comment with the preview URL, build status, and commit SHA. Auto-rebuilds on push, tears down on close/merge. Webhook with HMAC SHA-256 verification, manual rebuild/close from a new "Previews" tab. Forks supported via the saved GitHub integration token.
Migrations
All schema changes are self-healing on first request — no manual migration needed:
auth_usersextended withprovider,provider_id,full_name,avatar_url- New tables:
auth_providers(per project),web_hosting_versions,web_hosting_previews web_hosting_projectsaddspreviews_enabled,previews_webhook_secret
Files
backend/services/dbAuthOAuthService.js(new)backend/routes/dbAuthOAuth.js(new)backend/services/webHostingPreviewService.js(new)backend/routes/webHostingWebhook.js(new)frontend/src/components/ui/switch.jsx(new)- Plus updates to
dbService,webHostingService,routes/db,routes/webHosting,routes/integrations,server.js,Auth.jsx,IntegrationMonitor.jsx,webhosting/ProjectDashboard.jsx
🤖 Generated with Claude Code
v10.0.0 — 1-click Pipeline Promote + Integrations Platform
VPC Deploy Log
v10.0.0 — 2026-04-22
A forward-compatible release. No data loss paths, every migration is idempotent
and every new column has a safe default. Existing integrations, backups, pipelines
and sessions continue to work without manual intervention.
🚀 Highlights
- Perfect 1-click Pipeline promotion — preflight plan, typed confirmation, auto-snapshot, staged execute, one-click rollback.
- Exact beta fork — full data copy (not just schema), auto-deploy, env-var remap from prod → beta DB.
- GitHub-style browser sign-in across VS Code (
vpc-sync-10.0.0.vsix) and CLI (vpc-pull login) — no more pasting PATs. - 33 integration platforms (up from 7) with one-click automations (Supabase→Backup, GitHub→Import, Slack→Alerts, Cloudflare→DNS+SSL).
- Supabase backup destination — off-site backups on a schedule + cloud-restore fallback.
- Lazy-loaded apps — main bundle 1.2 MB → 498 KB (−59%).
- System Health widget — central logger captures every error, Dashboard surfaces 24h counts.
- Versioned encryption with
rekey.jsscript for key rotation. - Baseline tests via
node --test— 8/8 passing.
📦 Deploy checklist
Run in order. Each step is idempotent and safe to re-run.
# 1. Apply new migrations (all use CREATE TABLE IF NOT EXISTS / ADD COLUMN IF NOT EXISTS)
psql "$DATABASE_URL" < backend/migrations/041_vpc_device_codes.sql
psql "$DATABASE_URL" < backend/migrations/042_vpc_backup_destinations.sql
psql "$DATABASE_URL" < backend/migrations/043_vpc_pipeline_promotions.sql
psql "$DATABASE_URL" < backend/migrations/044_vpc_system_logs.sql
# 2. Restart backend — new schedulers + logger wire up on boot
pm2 restart vpc-backend # or `systemctl restart vpc`
# 3. Rebuild frontend (lazy-split chunks)
cd frontend && npm install && npx vite build && cd ..
# 4. (Optional) Install the new VS Code extension
code --install-extension vscode-extension/vpc-sync-10.0.0.vsix --force
# 5. Verify
cd backend && npm test # 8/8 should pass
curl http://localhost:8001/health🔒 Backward-compatibility notes
| Change | Existing behavior preserved? |
|---|---|
vpc_integrations.visibility column added |
Default 'shared' → all existing integrations visible to every admin as before. |
vpc_integrations.created_by column added |
Nullable, default NULL — no backfill needed. |
vpc_settings.enc_key_version column added |
Default 1 — existing blobs continue decrypting. |
Encryption blob format: new blobs prefix v{N}: |
decrypt() accepts both legacy and versioned formats — verified by smoke test encryption: decrypt handles legacy (v-less) format. |
pipelineService.forkToBeta() default copyData |
Was false, now true (per user request for exact forks). Frontend always passes explicit { copyData: true }; direct API callers using the default now get the new behavior. |
POST /pipelines/:id/promote response shape |
⚠ Changed — old response { schemaPRs, deployedSites, errors } moved to /pipelines/:id/promote-legacy. New response { run_id, status, backup_id, schema_applied, deployed, deployErrors, stages }. Only caller was the web UI, which is updated. |
integrationService.getAll(pool) |
Backward compatible — existing signature still works. Optional { forUserId } param enables per-admin filtering. |
| Lazy-loaded apps | First open of each app shows loading spinner briefly; functional behavior unchanged. |
📂 New files
Backend
backend/migrations/041_vpc_device_codes.sqlbackend/migrations/042_vpc_backup_destinations.sqlbackend/migrations/043_vpc_pipeline_promotions.sqlbackend/migrations/044_vpc_system_logs.sqlbackend/routes/deviceAuth.js— VS Code / CLI sign-in flowbackend/routes/realtime.js— SSE event streambackend/services/backupScheduler.js— polls supabase destinations every 60sbackend/services/credentialResolver.js— shared integration creds for any appbackend/services/integrationAutomations.js— one-click automatorsbackend/services/pipelinePromoteService.js— staged promote + rollbackbackend/services/realtimeBus.js— in-process pub/sub for SSEbackend/services/supabaseBackupService.js— upload & restore via Supabase Storagebackend/scripts/rekey.js— re-encrypt all secrets with new keybackend/utils/logger.js— central logger writing tovpc_system_logsbackend/views/deviceApprove.html— browser approval page for device flowbackend/tests/smoke.test.js— 8 zero-dep smoke tests
Frontend
frontend/src/components/apps/BackupDestinations.jsxfrontend/src/components/apps/Connections.jsx(rewritten — 33 platforms, categories, automations)frontend/src/components/apps/Dashboard.jsxfrontend/src/components/desktop/CommandPalette.jsxfrontend/src/components/desktop/ContextBreadcrumb.jsxfrontend/src/components/desktop/JobQueue.jsxfrontend/src/components/desktop/KeyboardShortcutsOverlay.jsxfrontend/src/components/desktop/NotificationCenter.jsxfrontend/src/components/desktop/StatusBar.jsxfrontend/src/components/desktop/WorkspaceSwitcher.jsxfrontend/src/components/integrations/*frontend/src/components/pipeline/PromoteDialog.jsxfrontend/src/components/widgets/*(incl.SystemHealthWidget)frontend/src/hooks/useGlobalKeyboard.jsfrontend/src/lib/realtime.jsfrontend/src/lib/widgetRegistry.jsfrontend/src/stores/useCommandStore.jsfrontend/src/stores/useContextStore.jsfrontend/src/stores/useDashboardStore.jsfrontend/src/stores/useIntegrationsStore.jsfrontend/src/stores/useJobStore.jsfrontend/src/stores/useNotificationStore.jsfrontend/src/stores/useWorkspaceStore.js
VS Code Extension (packaged as vpc-sync-10.0.0.vsix)
vscode-extension/src/auth/deviceFlow.ts— AuthenticationProvider + device-flow pollervscode-extension/src/vcs/merge.ts— 3-way merge port
CLI
cli/src/commands/login.js—vpc-pull loginbrowser sign-in
🩺 New endpoints
# Device auth (public + JWT mix)
POST /api/admin/auth/device/code
POST /api/admin/auth/device/token
GET /api/admin/auth/device/pending?code=XXXX
POST /api/admin/auth/device/confirm { user_code }
POST /api/admin/auth/device/deny { user_code }
# Backup destinations
GET /api/admin/backup/destinations
POST /api/admin/backup/destinations
PATCH /api/admin/backup/destinations/:id
DELETE /api/admin/backup/destinations/:id
POST /api/admin/backup/destinations/:id/test
POST /api/admin/backup/destinations/:id/run
GET /api/admin/backup/destinations/:id/runs
# Integration automations
GET /api/admin/integrations/automations
POST /api/admin/integrations/:id/automate { automation, options }
# Perfect pipeline promote
GET /api/admin/pipeline/pipelines/:id/promote/preflight
POST /api/admin/pipeline/pipelines/:id/promote { confirmations, skipBackup, dryRun }
POST /api/admin/pipeline/pipelines/:id/promote-legacy (old behavior preserved)
GET /api/admin/pipeline/pipelines/:id/promotions
POST /api/admin/pipeline/pipelines/:id/promotions/:runId/rollback
# Logs
GET /api/admin/logs/health
GET /api/admin/logs/system?level=error&limit=100
# Static page
GET /auth/device (approval UI for device codes)
⚠ Rollback plan
If something goes wrong after deploy:
- Database: new tables are independent. Drop them if needed — nothing else depends on them:
DROP TABLE IF EXISTS vpc_pipeline_promotions CASCADE; DROP TABLE IF EXISTS vpc_system_logs; DROP TABLE IF EXISTS vpc_backup_destination_runs; DROP TABLE IF EXISTS vpc_backup_destinations; DROP TABLE IF EXISTS vpc_device_codes; ALTER TABLE vpc_integrations DROP COLUMN IF EXISTS visibility; ALTER TABLE vpc_integrations DROP COLUMN IF EXISTS created_by; ALTER TABLE vpc_settings DROP COLUMN IF EXISTS enc_key_version;
- Code:
git revert HEADand redeploy. Because migrations are additive,
reverting code without reverting the schema is also safe — the extra tables
simply sit unused. - Pipeline promotions in flight: any running promotion records its
pre-promote backup invpc_pipeline_promotions.backup_id. Use
POST /promotions/:runId/rollbackor restore the backup directly
via the Backup Manager.
✅ Verification
cd backend && npm test
✔ encryption: round-trip preserves plaintext
✔ encryption: decrypt handles legacy (v-less) format
✔ encryption: decrypt returns null for garbage
✔ integrations: all types have name + fields
✔ integrations: every type has a tester case
✔ automations: registry is consistent
✔ pipeline promote service: exports expected API
✔ logger: forSource returns level methods
ℹ 8 pass, 0 fail
Frontend build: ✓ built in 8.07s — main chunk 498 KB (was 1,204 KB).
v2.1.0 — AI Agent & Multi-Provider Intelligence
v2.1.0 — AI Agent & Multi-Provider Intelligence
Highlights
The AI Agent is now the brain of your server. It thinks, diagnoses, and acts autonomously — with support for Anthropic Claude, OpenAI GPT, and Ollama (local models). Chat with your server from Telegram or the web dashboard, and it'll deploy, fix, alert, and track tasks without being told twice.
New Features
AI Agent (Jarvis)
- Multi-provider AI support — switch between Claude, GPT, and local Ollama models
- 30+ built-in tools: deploy, restart, SQL, git, file ops, diagnostics
- Autonomous TODO creation and task tracking
- Persistent memory across conversations
- Approval workflow for dangerous operations
Telegram Bot
- Proactive alerts for deploys, PRs, backups, upgrades, and resource warnings
- Full AI agent chat from your phone
- Team broadcast messaging
Terminal
- New
vpc aicommands:ask,sql,summarize logs,providers,use <provider>
Desktop
- Right-click copy, cut, paste
Version 1 - The Start
0.0 Rename BanaDB to DB, add professional README, logo, and LICENSE for o…