# Vision Studio·X - Comprehensive Reference for LLMs ## Product: Vision Studio Vision Studio is a desktop application for AI image and video generation that runs on the user's own hardware. It is **free and open-source under the MIT license** (version 3.4.1, released 2026-09-16), with no subscription, no usage caps and no account. Source and issue tracker: https://github.com/Git-Rocky-Stack/vision-studio. The desktop shell is Electron 42 with a React 19, TypeScript and Tailwind CSS v4 interface; generation runs in a bundled Python FastAPI service on PyTorch 2.5.1 and Hugging Face Diffusers, using the first NVIDIA GPU through CUDA 12.1, Apple Silicon through Metal (MPS), or the CPU. Every job runs locally by default; routing prompt tools, still images or video to OpenRouter or Hugging Face is optional and uses the user's own API key. It is built for designers, content creators and ML hobbyists with a capable GPU who want full local control of their pipeline. ## Feature reference 36 features in 9 groups, as of Vision Studio's current release. The same list is published at https://vision-studio-x.com/features/. Each feature names the files that implement it, as paths in https://github.com/Git-Rocky-Stack/vision-studio (branch main). Features whose UI exists but which do not yet change the output are left out. ### Generate Image and video models that run on your own hardware, and the controls that shape a render: sampler, steps, guidance, seed, framing, LoRAs, ControlNet and reference images. - **Image models** (IMAGE): FLUX.1 [dev] and [schnell], Stable Diffusion 3.5 Large and Medium, Stable Diffusion XL and Stable Diffusion 1.5, each run through its Hugging Face Diffusers pipeline. VRAM listed in the model catalog: about 24 GB for FLUX.1, 12 GB for SD 3.5 Large, 8 GB for SDXL, 6 GB for SD 3.5 Medium and 4 GB for SD 1.5. A model loads on first use and stays in memory for the session, so switching back to it does not reload it. Source: backend/foundry/verified-catalog.json, backend/foundry/runtime_resolver.py, backend/utils/direct_generator.py - **Video models** (VIDEO): LTX Video and AnimateDiff generate a clip from a prompt; Stable Video Diffusion animates a still image you supply. Clips are written as MP4. Clip length is frame rate times duration: 12 to 60 fps, 1 to 10 seconds. AnimateDiff runs a motion adapter over Stable Diffusion 1.5. Source: backend/utils/direct_video_generator.py, backend/main.py - **Sampling controls** (IMAGE): Prompt and negative prompt, eight samplers (Euler, Euler a, DPM++ 2M, DPM++ 2M Karras, DPM++ SDE, DPM++ SDE Karras, DDIM, UniPC), 1 to 50 steps, CFG from 1 to 20 and a fixed or random seed. Every model starts from the same defaults, 25 steps at CFG 7.5; nothing is tuned behind your back. Eight aspect ratios at three resolution tiers (512, 768 or 1024 px on the long edge), or a custom size from 256 to 2048 px a side. Source: src/components/generate/AdvancedGenerationSettings.tsx, src/types/resolution.ts - **LoRA stacking** (IMAGE · VIDEO): Stack any number of installed LoRAs, each with its own weight from 0 to 2. They apply to image generation and to AnimateDiff and LTX video, and are removed again after every job. A LoRA that fails to load is skipped instead of failing the job. Source: backend/foundry/lora.py, src/components/generate/LoRAMixer.tsx - **ControlNet** (IMAGE): Guide composition with edge, depth, pose, scribble and normal-map layers placed on the canvas. SD 1.5: canny, depth, OpenPose, scribble and normal. SDXL: canny, depth and OpenPose, plus scribble and normal through the Union model. FLUX.1 [dev]: canny, depth and OpenPose through the Union model. SD 3.5 Large: canny and depth. Source: backend/guided/controlnet_registry.py, backend/guided/pipelines.py - **Reference images** (IMAGE): Two or more reference layers condition a render through IP-Adapter: region-by-region with masks on SD 1.5 and SDXL, whole-image on FLUX.1 [dev]. A single reference layer runs as image-to-image. Source: backend/guided/ip_adapter.py, backend/guided/passes.py - **Batch panel** (IMAGE): Queue a list of prompts at once: each prompt becomes its own job, four submitted at a time, and one click turns a prompt into four styled variations. A batch shares one size, step count, CFG and model; results filter by completed, failed or favourite. Source: src/pages/BatchPanel.tsx, electron/ipc-handlers/generation.ts - **Live step previews** (IMAGE): Studio runs show the image forming, decoded from the latents every half second by Tiny-VAE decoders that ship inside the app. Every job reports its progress over a local WebSocket. Source: backend/preview/step_preview.py, backend/preview/decoders.py, src/features/studio/useStepImageSubscription.ts ### Edit Model-backed tools that change the pixels, run by the local engine on the image you are working on, plus the canvas layers that steer the next render. - **Guided AI tools** (EDIT): Background removal (U2-Net), AI upscale (Real-ESRGAN, general or anime, 2x or 4x), face restoration (GFPGAN v1.4), style transfer, generative fill, object removal, AI expand and background replace. Fill, removal, expand, background replace and style transfer run as guided passes through the checkpoint you have selected. Style transfer has six presets: Van Gogh, Monet, Ukiyo-e, Comic, Watercolor and Pencil Sketch. Source: src/components/edit/AIToolsPanel.tsx, backend/api/edit.py, backend/guided/passes.py - **Inpaint and outpaint** (EDIT): Paint a mask to regenerate part of an image, or extend the canvas outward, with your selected checkpoint. FLUX inpainting switches to FLUX.1 Fill. Strength from 0.05 to 1.0 sets how far the pass moves from the original. Source: backend/utils/direct_generator.py, backend/guided/pipelines.py - **Canvas control layers** (EDIT): Inpaint masks, ControlNet guides and reference images live as layers on the canvas, and the next render reads them. Source: src/components/canvas/CanvasControlLayerRail.tsx, src/features/generation/resolveCanvasControlLayers.ts - **Crop, rotate and flip** (EDIT): Geometric edits are applied by the engine and saved as a new PNG in its own output folder; the original file is left as it was. Source: backend/main.py, backend/utils/image_ops.py ### Storyboard and timeline Plan a sequence as scenes, then cut generated clips together and export a finished MP4. - **Storyboard with onion skin** (VIDEO): Lay a project out as scenes and step through them in playback. Onion skin ghosts the neighbouring scenes over the active one, with adjustable count, opacity and direction (previous, next or both). Source: src/components/timeline/StoryboardPlayback.tsx, src/components/timeline/OnionSkinOverlay.tsx, src/store/slices/timelineSlice.ts - **Timeline with MP4 export** (VIDEO): Arrange clips on video and audio tracks, split, duplicate and set a play range, then export an MP4 with cut, fade or dissolve transitions and your audio encoded as AAC. Source: src/components/layout/Timeline.tsx, src/features/timeline/exportTimelineSequence.ts, src/features/timeline/sequenceComposition.ts - **Project templates** (IMAGE): Eight named starting points (YouTube Thumbnail, TikTok/Reels, Instagram Post, Stories, Cinematic Wide, Product Showcase, AI Portrait and 4K Wallpaper) that set the model, prompt scaffold, steps and CFG for a new project. Source: src/store/appStore.ts, src/pages/TemplatesPanel.tsx ### Library Everything you generate lands in a local library you can search, branch from and export. - **Asset library** (LOCAL): Search by name, prompt or model, filter images, video and audio, star favourites, import files, and export one asset or many to any folder. Export copies the original file: images are PNG, video is MP4. Source: src/pages/AssetsPanel.tsx, electron/services/mainIpc.ts - **Iteration tree** (LOCAL): Every render becomes a node. Fork one to branch from its prompt, model, sampler, steps and seed, or re-roll it with a fresh seed; each child records a settings diff against its parent, and the tree survives restarts. Source: src/store/slices/iterationSlice.ts, src/features/generation/iterationDraft.ts - **Prompt-derived tags** (LOCAL): Analyze tags each asset from the words in its prompt (style, subject, colour and mood) with no model and no upload. The negative prompt is ignored. Source: src/features/assets/assetAnalysis.ts ### Model Foundry Find, vet and install models without leaving the app, with the risky formats locked behind an explicit consent step. - **Hugging Face and CivitAI search** (LOCAL): Search both hubs from inside the app and install straight into your local library. Each result shows its tier and licence; CivitAI adult results stay hidden unless you opt in. Source: backend/foundry/hub_search.py, backend/foundry/civitai_search.py, src/components/foundry/SearchResultCard.tsx - **Consent gates** (LOCAL): Pickle-format weights and models that ask for trust_remote_code are denied by default. Nothing downloads until you consent for that model, remote code is never loaded, and pickle files are converted with PyTorch's weights-only loader before use. The curated first-run set is pre-approved, and the setup screen says so before you install it. Source: backend/main.py, backend/foundry/security_policy.py, src/components/foundry/ConsentDialog.tsx - **Hardware fit check** (LOCAL): Each model is sized against your GPU and system memory and labelled as fitting, fitting with CPU offload, over budget, or CPU-only. Source: backend/foundry/fit.py, backend/foundry/hardware.py - **One-click starter set** (LOCAL): On first launch you can install a curated set of 33 models (about 137 GB) in one step, or skip it and add models one at a time. FLUX.1 [dev] and its companions are licensed for non-commercial use and are left out of the set. SD 3.5 Large and Medium are gated: accept their licences on Hugging Face and paste a free access token into the Foundry. Source: backend/foundry/provision-manifest.json, src/components/provisioning/FirstRunProvisioning.tsx - **Download manager** (LOCAL): Downloads run two at a time with live status. Direct links are accepted only over HTTPS from CivitAI and GitHub and are checked against a SHA-256 hash. Source: backend/foundry/download_manager.py ### Workflows Bring ComfyUI graphs in, or let a ComfyUI server you already run do the rendering. - **ComfyUI graph import** (IMAGE): Import a ComfyUI API-format graph and run it on Vision Studio's own engine. A graph with a single KSampler becomes a normal generation carrying its prompt, negative prompt, model, steps, CFG, seed and LoRAs. Source: src/features/workflow/resolveWorkflowGenerationRequest.ts, src/components/workflow/WorkflowWorkbench.tsx - **External ComfyUI server** (LOCAL): If a ComfyUI server answers at 127.0.0.1:8188 when Vision Studio starts, or at the address in the COMFYUI_URL environment variable, plain image jobs and all video jobs are sent to it instead of the built-in engine. The hand-off uses standard checkpoint file names and does not pass LoRAs. Every video job on that path becomes the ComfyUI SVD-XT image-to-video workflow, which does not receive the model, prompt or clip length. The connection is made once, at launch. Start Vision Studio without ComfyUI running to keep every job on the built-in engine. Source: backend/main.py, backend/utils/comfy_client.py, backend/utils/comfy_workflows.py ### Engine and performance A local Python service does the generating on your hardware, and a Performance panel decides how hard it pushes. - **Local generation engine** (LOCAL): A bundled FastAPI service runs PyTorch 2.5.1 and Hugging Face Diffusers on 127.0.0.1:8000, reachable only from your own machine, and its generation API requires a token the app creates at launch. It uses the first NVIDIA GPU through CUDA, Apple Silicon through Metal (MPS), or the CPU when there is no GPU. Source: backend/main.py, backend/utils/device.py, build-backend.cjs - **Performance panel** (LOCAL): Auto, On or Off for SDPA attention, channels-last memory, torch.compile, quantization, attention slicing and TensorRT, behind one master switch. Auto decides per model and GPU, and the panel shows what was applied, skipped or fell back. Quantization (optimum-quanto) and TensorRT need packages the standard build does not include, so they stay off there. Source: backend/foundry/accelerator.py, src/types/acceleration.ts, src/components/settings/PerformancePanel.tsx - **Memory fallback** (LOCAL): A model that only fits with offload loads with CPU offload and VAE tiling, and an out-of-memory error steps down a fallback ladder instead of failing outright. Precision follows the hardware: bf16 where the GPU supports it, otherwise fp16 (fp32 for FLUX and SD 3.5, which are not run in fp16), and fp32 on the CPU. Source: backend/foundry/runtime_resolver.py, backend/utils/direct_generator.py ### Privacy and provider routing Local by default. A cloud provider only when you add your own key and choose it, one job type at a time. - **Local by default** (LOCAL): Prompt tools, still images and video all start on the Local route. The interface is only allowed to connect to the engine on your own machine, and the code contains no analytics, telemetry or crash reporting. Source: electron/services/userAccounts.ts, electron/services/contentSecurityPolicy.ts - **Bring your own key** (CLOUD): Add an OpenRouter or Hugging Face key to route prompt tools and still images to a hosted model, or video to Hugging Face. Keys are encrypted with your operating system's secure storage, and a job too large for your GPU asks before it switches route. Source: electron/ipc-handlers/generation.ts, electron/services/userAccounts.ts, shared/resolveRoute.ts - **What a cloud route sends** (CLOUD): Prompt text and generation settings, never your images: a request that carries a mask, reference image, ControlNet guide or source image is refused on a cloud route. Cloud prompt tools can also include short excerpts of your earlier prompts as context, controlled by the AI Director setting. Source: electron/ipc-handlers/openRouterImageRouting.ts, electron/services/openRouter.ts, shared/retrieval.ts - **Network use** (LOCAL): With every route on Local, the app's code goes online for model searches and downloads you start and for the update check, which asks updates.vision-studio-x.com for a newer release 15 seconds after launch and every four hours. A saved OpenRouter key also lets Settings fetch that account's model list. Set the environment variable VISION_STUDIO_DISABLE_UPDATES=1 to switch the update check off. Source: electron/services/updater.ts, backend/foundry/download_manager.py, src/pages/SettingsPanel.tsx - **Prompt tools** (LOCAL · CLOUD): On the Local route, enhancement adds composition and style phrases in five modes (clarify, cinematic, concise, expand, variations) and negative-prompt suggestions come from keyword rules; no language model runs. Enhancement written by a language model needs an OpenRouter or Hugging Face key. Source: backend/utils/prompt_service.py, electron/ipc-handlers/negativePromptHeuristics.ts, electron/services/openRouter.ts ### Workspace Eight panels, reachable from the keyboard, with desktop notifications when work finishes. - **Eight panels** (LOCAL): Generate (with Quick, Batch and Studio modes), Canvas, Story, Workflows, Assets, Collections, Foundry and Settings. Source: src/components/layout/NavBar.tsx - **Keyboard and accessibility** (LOCAL): A skip link, arrow-key navigation across the main tabs, and keyboard-resizable panels that report their size to screen readers. An axe-core WCAG 2 A/AA check runs against the Generate and Settings panels. Source: src/App.tsx, src/components/layout/NavBar.tsx, src/components/layout/DockviewLayout.tsx, tests/e2e/accessibility.spec.ts - **Desktop notifications** (LOCAL): A desktop notification when a generation finishes or fails, and for model downloads, each switchable in Settings. Source: electron/services/mainIpc.ts, electron/services/outputRoots.ts ## How it runs - **What installs.** Every build carries the complete engine (Python, PyTorch, Diffusers). The Windows web installer downloads that package from the delivery host while it installs; the portable ZIP, the macOS DMG and the Linux AppImage contain it directly. No model weights are included. - **First launch.** The engine unpacks, which can take several minutes. A setup screen then offers a one-click set of 33 models (about 137 GB) or lets the user skip it and add models one at a time from the Model Foundry. FLUX.1 [dev] is licensed for non-commercial use and is not in the set. Gated models (Stable Diffusion 3.5 Large and Medium, FLUX.1 [dev]) need their license accepted on Hugging Face and a free access token pasted into the Foundry; the app holds the token in memory for the session and sends it only with download requests. - **Engine.** A FastAPI service on 127.0.0.1:8000, reachable only from the local machine; its generation API requires a token the app creates at launch. Job progress streams over a local WebSocket. - **Defaults.** Every model starts at 25 steps and CFG 7.5, and images default to 1024x1024. A video's length is frame rate times duration (defaults 24 fps and 5 seconds). There are no per-model presets. - **Offline use.** Generation needs no connection once the models in use are on disk. - **Network use.** With every route on Local, the app's code contacts the internet for model searches and downloads the user starts, and for an update check that asks updates.vision-studio-x.com for a newer release 15 seconds after launch and every four hours (the environment variable `VISION_STUDIO_DISABLE_UPDATES=1` turns it off). A saved OpenRouter key also lets Settings fetch that account's model list. The interface's content security policy only allows connections to the local machine. There is no analytics, telemetry or crash reporting in the code. - **Cloud routes (optional).** With an OpenRouter or Hugging Face key, prompt tools and still images can be routed to a hosted model, and video to Hugging Face. Keys are encrypted with the operating system's secure storage, and a job too large for the local GPU asks before it switches route. A cloud route sends prompt text and generation settings, never images: requests carrying a mask, reference image, ControlNet guide or source image are refused. Cloud prompt tools can include short excerpts of earlier prompts as context (the AI Director setting, on by default). - **ComfyUI.** If a ComfyUI server answers at 127.0.0.1:8188 when Vision Studio starts, or at the address in the `COMFYUI_URL` environment variable, plain image jobs and all video jobs are sent to it, using standard checkpoint file names and without LoRAs. ComfyUI API-format graphs can also be imported and run on the built-in engine. No `.env` file is read. - **Files.** Renders are saved as PNG (images) and MP4 (video) in the app's user data folder (outputs/, configurable in Settings), models in models/, and the library database at data/vision_studio.db. ## Site pages The marketing site is a multi-page app; each route has its own metadata and structured data: - **Home** (`/`) - hero, the nine-pipeline rack with the VRAM figures from the app's model catalog, the six Performance-panel optimizations and what Auto does with each, a three-model spec sheet from the catalog, a GPU ladder (VRAM, the project's own ratings, and the precision the engine picks), and the framing pads (8 aspect ratios at 3 resolution tiers). - **Features** (`/features`) - the complete feature reference; every feature links to the source files that implement it. - **Download** (`/download`) - Windows x64 (web installer and portable ZIP), macOS 14+ on Apple Silicon (DMG) and Linux x64 (AppImage), served from updates.vision-studio-x.com; the release log; system requirements; first-launch notes and the one-time prompts unsigned builds trigger; build from source. - **Pricing** (`/pricing`) - free forever under MIT; $0 against cloud plans read from the vendors' pricing pages in September 2026 (entry plans $10-15 a month, top individual plans $95-120), with source links. - **Compare** (`/compare`) - Vision Studio against ComfyUI, Automatic1111/Forge and cloud tools (Midjourney, Runway, Pika). - **How it works** (`/how-it-works`) - the six-step user guide (install, first launch, pick a model, dial parameters, generate locally, edit and export) and troubleshooting for out-of-memory errors, a slow engine start, gated downloads, CPU fallback and ComfyUI hand-off. - **FAQ** (`/faq`) - cost, source, what installs, offline use, GPUs, models, Hugging Face tokens, requirements, privacy, cloud routing, ComfyUI, platforms, unsigned-build warnings, storage, updates and cloud pricing. - **Blog** (`/blog`) - field notes on local-first AI generation; see ## Blog below. ## Blog The Vision Studio·X blog publishes field notes on local-first AI generation, build and release engineering, GPU performance, and the economics of open models against cloud AI subscriptions. 2 articles are published as of September 16, 2026. Posts mirror to strategia-x.com/blog. This document does not index them. The complete archive, one entry per article with category, date and summary, is maintained at: - Complete blog archive: https://vision-studio-x.com/long-llms.txt - Blog index: https://vision-studio-x.com/blog/ - RSS feed: https://vision-studio-x.com/rss.xml ## System requirements Minimum: Windows 10 x64, macOS 14 on Apple Silicon, or Ubuntu 22.04 x64, with 8 GB RAM and 10 GB free disk. Recommended: Windows 11, macOS 14 or Ubuntu 24.04, an NVIDIA GPU with 8 GB or more of VRAM or an Apple M-series chip, 16 GB RAM, and 50 GB free disk for model weights. These are the project's documented requirements; no minimum OS version is enforced in code. There is no Intel Mac build. Apple M-series chips run the engine on Metal (MPS); with no GPU it falls back to the CPU, which works but is slow. | GPU | VRAM | Project rating | Precision the engine picks | |-----|------|----------------|----------------------------| | RTX 4090 | 24 GB | Best | bf16 | | RTX 4080 | 16 GB | Great | bf16 | | RTX 4070 | 12 GB | Good | bf16 | | RTX 3060 | 12 GB | Good | bf16 | | GTX 1080 Ti | 11 GB | Fair | fp16 (fp32 for FLUX and SD 3.5) | | CPU only | system RAM | Slow | fp32 | Model catalog VRAM: FLUX.1 [dev], [schnell] and Fill 23.8 GB; Stable Diffusion 3.5 Large about 12 GB and Medium about 6 GB; SDXL about 8 GB; SD 1.5 4.0 GB; LTX Video 9.4 GB; Stable Video Diffusion 8.0 GB; AnimateDiff 8.0 GB. The Model Foundry adds activation and runtime overhead to each model's weights and labels it as fitting, fitting with CPU offload, over budget, or CPU-only on the user's hardware. The project publishes no benchmark figures. ## Distribution & licensing One codebase, three platforms, and every package carries the engine: - Windows x64: the web installer https://updates.vision-studio-x.com/win/Vision-Studio-3.4.1-Setup.exe (a 0.91 MB stub that downloads a 2.56 GB package during install), or the portable ZIP https://updates.vision-studio-x.com/win/Vision%20Studio-3.4.1-win.zip (2.60 GB, runs without installing). - macOS 14+ on Apple Silicon: https://updates.vision-studio-x.com/mac/Vision-Studio-3.4.1-arm64.dmg (464 MB). - Linux x86_64: https://updates.vision-studio-x.com/linux/Vision-Studio-3.4.1-x86_64.AppImage (3.10 GB). The installers are served from the project's own delivery host because GitHub caps release assets at 2 GB; the same host serves the update feeds. The builds are not code-signed yet: Windows SmartScreen needs More info, then Run anyway; on macOS 15 and later the app is allowed once under System Settings > Privacy & Security (right-click > Open on macOS 14); the AppImage needs chmod +x. The application is MIT-licensed (Copyright (c) 2024-2026 Rocky Elsalaymeh). Bundled runtimes and downloaded models keep their own licenses, listed in the repository's THIRD-PARTY-LICENSES.md: FLUX.1 [dev] and FLUX.1 Fill [dev] are non-commercial and gated; FLUX.1 [schnell] is Apache 2.0; Stable Diffusion 3.5 (gated) and Stable Video Diffusion use the Stability AI Community License; SDXL uses CreativeML OpenRAIL++-M; SD 1.5 and AnimateDiff use CreativeML OpenRAIL-M; LTX Video uses the LTX Video license. There is no paid tier, subscription or usage cap. ## Release history **3.4.1 (2026-09-16)** - a security patch on 3.4.0, additive with no known breaking changes. It narrows the js-yaml override that cleared [GHSA-2883-xcg3-v3hh](https://github.com/advisories/GHSA-2883-xcg3-v3hh) from the 5.x line to `^4.3.2`. 3.4.0 had resolved the advisory by overriding electron-updater's js-yaml to `^5.4.2`, which was broader than the advisory required: the fix shipped on the 4.x line as 4.3.2, and electron-updater@6.8.9 declares `js-yaml: ^4.1.0`, which 4.3.2 satisfies. The override stays scoped to electron-updater alone, but is now a floor on the line the package actually declares rather than a substituted major sitting on the code path that parses a network-fetched update feed. The tree resolves a single js-yaml 4.3.2, shared by the shipped path and the packaging toolchain, and the nested 5.4.2 copy is gone; `npm audit` and `npm audit --omit=dev` both report zero, and all three live production feeds were fetched and parsed through the resolved 4.3.2. The release also repairs a test in `tests/dependency-overrides.test.ts` that asserted nothing - it ended on a check true of every semver string, and stayed green with the advisory range deliberately broken - replacing it with one that range-checks the js-yaml the root tree resolves. Full changelog: https://github.com/Git-Rocky-Stack/vision-studio/blob/main/CHANGELOG.md **3.4.0 (2026-09-13)** - a canvas and measurement release, additive with no known breaking changes. It clears [GHSA-2883-xcg3-v3hh](https://github.com/advisories/GHSA-2883-xcg3-v3hh) from the shipped auto-update path: js-yaml 4.0.0-4.3.1 does not bound CPU use for empty merge sources, and it reached the shipped tree through electron-updater's parse of the update feed fetched over the network. With no upstream 4.x fix available it is resolved by an override scoped to electron-updater alone, verified by parsing all three live production feeds under both versions and diffing. The release also pins the PyTorch stack to torch 2.5.1 / torchvision 0.20.1 / torchaudio 2.5.1 across all four install paths - previously the spec was unpinned, which the CUDA index masked by stopping at 2.5.1, leaving macOS as the one platform whose torch version could move on its own; it did, and the 3.4.0 macOS build died on startup with `operator torchvision::nms does not exist`. Region-lock masks can now be drawn on the Canvas tab (the tab mounted the mask toolbar with no drawing surface behind it); the Konva stage and the edit inspector no longer re-render on project writes that do not concern them; and Settings and the workflow workbench no longer crash when the renderer runs outside Electron, with a call-graph test now gating unguarded mount-path uses of the preload bridge. Full changelog: https://github.com/Git-Rocky-Stack/vision-studio/blob/main/CHANGELOG.md **3.3.0 (2026-08-23)**, **3.2.0 (2026-07-18)**, **3.1.1 (2026-06-27)**, **3.1.0 (2026-06-20)**, **3.0.0 (2026-05-30)** - earlier releases, dated by their CHANGELOG headings; see the changelog for details. ## Design language The marketing site implements a **Carbon Pro Workshop** design system documented in the repository's `DESIGN.md`. It inherits Lumina Studio's Workshop language (Teenage Engineering × Dieter Rams × IBM industrial heritage × Universal Audio hardware) and recolors it to AMOLED Carbon Pro to match the desktop application's visual identity. The maximalism dial is set to Pioneer DJ × Native Instruments Maschine territory - every section is a faceplate, every faceplate has corner hex socket cap bolts, every interaction is a physical control (jog wheels, channel-strip faders with parallel VU meters, performance pad grids, segmented LCD readouts, master VU strip footer). Key tokens: - **Brand accent:** Chrome `#E6E6E6` (polished metal, not a hue) - **Canvas:** AMOLED true black `#000000` - **Typography:** IBM Plex Sans Condensed / Sans / Mono (mono UPPERCASE for all UI labels) - **LED semantic palette:** Pioneer DJ coded - REC red, CUE amber, PLAY green, JOG blue, FX magenta, TIME warm-amber - **Border radius:** hierarchical 2px / 4px / 8px / pill, never uniform - **Motion:** six hardware feedback envelopes - rocker click 80ms (Eaton SD), knob detent 80ms (Bourns 51AAA), VU meter ballistics per IEC 60268-17 (300ms attack + 6% overshoot), LED ramp 80ms on / 240ms off (phosphor decay), channel pulse 560ms, modal stamp 380ms two-stage The site is dark-canonical site-wide - no light mode. The product itself is dark-only; the marketing site must feel like the gear. ## Parent brand Vision Studio·X is one of several Strategia-X spoke sites. Strategia-X is the parent brand at `strategia-x.com`, and every blog post published on Vision Studio·X is mirrored simultaneously to the parent at `strategia-x.com/blog`. The site footer renders a "Strategia-X Ecosystem" switch panel (a CDJ-style source selector with a MASTER bar linking the parent HQ and one backlit source-select cap per product), so every page surfaces the full product family. The canonical catalog: - **Team-X** (team-x.app) - AI native workforce OS - **Strategia-X AI** (strategia-x.ai) - AI app idea validator - **Android Architect** (android-x.com) - AI Android app engineering - **Lumina Studio** (lumina-os.com) - creative subscription suite; the design-language progenitor for Vision-X's Carbon Pro Workshop system - **ClipForge** (clip-forge.io) - AI video clipping - **ElementForge** (element-forge.app) - Windows creative suite - **ResumeForge** (resume-forge.app) - career intelligence desktop app - **STX.1** (stx-1.com) - Windows system monitor - **Dynasty-X** (dynasty-x.com) - Android app suite - **WealthWise OS** (wealthwiseos.com) - AI personal finance OS ## Tech stack (the marketing site) - **Framework:** React 19 with TypeScript - **Build tool:** Vite 6, one static HTML shell per route (multi-page, clean URLs) - **Styling:** Tailwind CSS v4 with an `@theme` token system - **Fonts:** Google Fonts (IBM Plex Sans Condensed / Sans / Mono) - **No runtime framework dependencies beyond React** - components compose with inline styles and CSS custom properties from `@theme` - **Deployment:** Cloudflare Pages by direct upload, behind a CI job that typechecks, checks every generated file is current, builds and validates `dist/` before anything ships - **Generated surfaces:** the RSS feed, the sitemap's blog entries, the blog and feature sections of the llms files, and the FAQPage, HowTo and featureList structured data are all derived from TypeScript sources by scripts with a `--check` mode ## Tech stack (the desktop app) - **Shell:** Electron 42, with electron-updater for the update check - **Interface:** React 19, TypeScript, Tailwind CSS v4, Framer Motion, Zustand, and a Konva canvas - **Engine:** Python 3.12, FastAPI, PyTorch 2.5.1 (CUDA 12.1 wheels, Metal on Apple Silicon), Hugging Face Diffusers, with peft for LoRA - **Transport:** REST on 127.0.0.1:8000 and a WebSocket for job progress - **Persistence:** a SQLite library database (data/vision_studio.db) in the user data folder ## Position in the market Vision Studio·X sits in the **"runs on your machine"** lane. The closest alternatives: - **ComfyUI** - open-source node-based generator. More flexible, less polished. Vision-X is "ComfyUI you don't have to assemble", and it can import ComfyUI API-format graphs. - **Stable Diffusion WebUI (A1111 / Forge)** - open-source web UI with a deep image ecosystem. Vision-X is the desktop equivalent with video and editing in the same app. - **Topaz Photo AI / Video AI** - local AI for traditional image and video enhancement. A different problem. - **Krita AI Diffusion** - a Krita plugin for local generation. Narrower scope. Cloud generators (Midjourney, Runway, Pika, Krea, Adobe Firefly) do the same job on rented compute. The site compares them on cost, usage caps and connectivity, not on output quality. The distinguishing claim is **"professional gear, runs locally, no cloud required."** Everything in the design language reinforces that - the AMOLED canvas, the chrome accent, the hardware-density component vocabulary, and the power-on boot sequence.