[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-categories":3,"blogCategories":3,"articles":90},[4,25,41,57,74],{"name":5,"created_at":6,"published_at":7,"updated_at":8,"id":9,"uuid":10,"content":11,"slug":14,"full_slug":15,"sort_by_date":16,"position":17,"tag_list":18,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":21,"first_published_at":22,"release_id":16,"lang":23,"path":16,"alternates":24,"default_full_slug":16,"translated_slugs":16},"Use Cases","2025-11-24T02:11:02.718Z","2025-11-24T02:11:25.661Z","2025-11-24T02:11:25.674Z",115755674529297,"f03fcead-d712-4b28-b01d-2dbd9243504b",{"_uid":12,"name":5,"component":13},"7697fff2-b25c-48bf-9aab-f46f5497e07f","Category","use-cases","categories\u002Fuse-cases",null,-40,[],false,647394763,"378e4f00-f169-43bd-b337-f13898493581","2025-11-24T02:11:20.537Z","default",[],{"name":26,"created_at":27,"published_at":28,"updated_at":29,"id":30,"uuid":31,"content":32,"slug":34,"full_slug":35,"sort_by_date":16,"position":36,"tag_list":37,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":38,"first_published_at":39,"release_id":16,"lang":23,"path":16,"alternates":40,"default_full_slug":16,"translated_slugs":16},"Ideas","2025-08-01T01:19:33.656Z","2025-08-01T01:20:00.686Z","2025-08-01T01:20:00.696Z",75045165727359,"c1356235-d8ce-4212-ba55-28652ce511c8",{"_uid":33,"name":26,"component":13},"bc0d52c4-2fde-45f6-b9a9-e72567c4c370","ideas","categories\u002Fideas",-30,[],"d57ba80c-288d-497b-b622-de2aca3f921d","2025-08-01T01:19:56.073Z",[],{"name":42,"created_at":43,"published_at":44,"updated_at":45,"id":46,"uuid":47,"content":48,"slug":50,"full_slug":51,"sort_by_date":16,"position":52,"tag_list":53,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":54,"first_published_at":55,"release_id":16,"lang":23,"path":16,"alternates":56,"default_full_slug":16,"translated_slugs":16},"Important","2025-04-04T02:24:17.238Z","2025-04-04T02:38:54.613Z","2025-04-04T02:38:54.628Z",650426143,"499f2513-8e72-4b85-80d5-83819b912934",{"_uid":49,"name":42,"component":13},"d762e224-2551-4bec-aff7-76cfed587923","important","categories\u002Fimportant",-20,[],"395f3308-c812-4b0d-8859-a61f62e188bd","2025-04-04T02:24:25.080Z",[],{"name":58,"created_at":59,"published_at":60,"updated_at":61,"id":62,"uuid":63,"content":64,"slug":67,"full_slug":68,"sort_by_date":16,"position":69,"tag_list":70,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":71,"first_published_at":72,"release_id":16,"lang":23,"path":16,"alternates":73,"default_full_slug":16,"translated_slugs":16},"Releases","2025-03-31T11:45:35.677Z","2025-03-31T11:55:41.188Z","2025-03-31T11:55:41.208Z",647696324,"4250fa06-c01b-4099-b916-19907666f469",{"_uid":65,"name":66,"component":13},"307d2923-79a5-43dd-a88c-e466fb7176cd","Updates","releases","categories\u002Freleases",-10,[],"93ef8b00-10ff-4997-9dae-f6059775f7ee","2025-03-31T11:45:42.494Z",[],{"name":75,"created_at":76,"published_at":77,"updated_at":78,"id":79,"uuid":80,"content":81,"slug":83,"full_slug":84,"sort_by_date":16,"position":85,"tag_list":86,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":87,"first_published_at":88,"release_id":16,"lang":23,"path":16,"alternates":89,"default_full_slug":16,"translated_slugs":16},"News","2025-03-30T13:28:46.313Z","2025-03-31T11:46:20.324Z","2025-03-31T11:46:20.338Z",647406864,"98ced97c-b231-43ae-8be5-5a7e16ac6711",{"_uid":82,"name":75,"component":13},"ecc3f35c-f83f-4995-ae40-61493d784128","news","categories\u002Fnews",0,[],"fcd85c69-3c43-472b-b8f0-a8d82a8433eb","2025-03-30T13:29:40.604Z",[],[91,419,1050,1952,2468,3260],{"name":92,"created_at":93,"published_at":94,"updated_at":95,"id":96,"uuid":97,"content":98,"slug":412,"full_slug":413,"sort_by_date":16,"position":36,"tag_list":414,"is_startpage":19,"parent_id":415,"meta_data":16,"group_id":416,"first_published_at":417,"release_id":16,"lang":23,"path":16,"alternates":418,"default_full_slug":16,"translated_slugs":16}," VortiDeck 0.6.9 — Overlay Editor Upgrade and Live OBS Preview","2026-03-20T15:48:34.430Z","2026-03-20T17:36:32.788Z","2026-03-20T17:36:32.801Z",157008340749943,"3396e93f-7e74-4f60-a701-174065b58387",{"_uid":99,"image":100,"title":101,"author":102,"content":121,"category":406,"component":410,"description":411},"c2997bc7-060f-475b-b4ee-a268ac385eb6","\u002F\u002Fa.storyblok.com\u002Ff\u002F332218\u002F1935x1091\u002Fc66d76af6d\u002Fscreenshot-2026-03-20-183126.png","Overlay Editor Upgrade and Live OBS Preview",{"name":103,"created_at":104,"published_at":105,"updated_at":106,"id":107,"uuid":108,"content":109,"slug":114,"full_slug":115,"sort_by_date":16,"position":85,"tag_list":116,"is_startpage":19,"parent_id":117,"meta_data":16,"group_id":118,"first_published_at":105,"release_id":16,"lang":23,"path":16,"alternates":119,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},"Alexi Pawelec","2025-03-30T13:19:10.048Z","2025-03-30T13:19:58.452Z","2025-03-30T13:19:58.471Z",647406649,"d8e2ccb5-bb17-4d40-a2e6-59c551b75329",{"_uid":110,"name":103,"avatar":111,"component":112,"description":113},"a5903ff1-f5c2-4e68-9903-75d3cf298041","\u002F\u002Fa.storyblok.com\u002Ff\u002F332218\u002F2592x3817\u002Fdfe5001d07\u002Fimg20231120130607.jpg","author","","alexi-pawelec","authors\u002Falexi-pawelec",[],647406641,"ef465b79-c4b7-446c-b463-4715555e57c4",[],true,{"type":122,"content":123},"doc",[124,132,138,144,193,195,200,211,216,221,222,227,232,237,254,265,266,271,276,277,282,299,300,305,310,315,320,325,326,391],{"type":125,"attrs":126,"content":128},"heading",{"level":127,"textAlign":16},2,[129],{"text":130,"type":131},"Smarter Overlay Editor","text",{"type":133,"attrs":134,"content":135},"paragraph",{"textAlign":16},[136],{"text":137,"type":131},"Overlay components now know what they are. Each component comes with built-in properties — colors, fonts, sizes, gradients — that show up automatically in the Properties panel when you select it.",{"type":125,"attrs":139,"content":141},{"level":140,"textAlign":16},3,[142],{"text":143,"type":131},"What's new",{"type":145,"content":146},"bullet_list",[147,160,171,182],{"type":148,"content":149},"list_item",[150],{"type":133,"attrs":151,"content":152},{"textAlign":16},[153,158],{"text":154,"type":131,"marks":155},"Auto-generated Properties panel",[156],{"type":157},"bold",{"text":159,"type":131}," — select a component, see exactly what you can customize. No guessing which style values to change.",{"type":148,"content":161},[162],{"type":133,"attrs":163,"content":164},{"textAlign":16},[165,169],{"text":166,"type":131,"marks":167},"Gradient backgrounds",[168],{"type":157},{"text":170,"type":131}," — a visual gradient editor right in the Properties panel. Pick colors, adjust stops, choose direction. Works in the editor and in OBS.",{"type":148,"content":172},[173],{"type":133,"attrs":174,"content":175},{"textAlign":16},[176,180],{"text":177,"type":131,"marks":178},"Theme-aware components",[179],{"type":157},{"text":181,"type":131}," — components follow the active theme by default. Switch themes and everything updates.",{"type":148,"content":183},[184],{"type":133,"attrs":185,"content":186},{"textAlign":16},[187,191],{"text":188,"type":131,"marks":189},"Better icons",[190],{"type":157},{"text":192,"type":131}," — the overlay toolbar and sidebar now use clean, consistent icons instead of emoji.",{"type":194},"horizontal_rule",{"type":125,"attrs":196,"content":197},{"level":127,"textAlign":16},[198],{"text":199,"type":131},"Live OBS Preview",{"type":133,"attrs":201,"content":202},{"textAlign":16},[203,205,209],{"text":204,"type":131},"Changes you make in the overlay editor now show up in OBS ",{"text":206,"type":131,"marks":207},"instantly",[208],{"type":157},{"text":210,"type":131},". Move an element, resize it, change a color, toggle visibility — OBS updates as you do it. No more saving and refreshing to check if it looks right.",{"type":133,"attrs":212,"content":213},{"textAlign":16},[214],{"text":215,"type":131},"Previously, some changes (like editing text or adjusting styles) wouldn't reach OBS until you reloaded. That's fixed — every edit syncs immediately.",{"type":133,"attrs":217,"content":218},{"textAlign":16},[219],{"text":220,"type":131},"Opening an overlay is also smoother. Instead of briefly showing an empty screen while elements load one by one, everything appears at once.",{"type":194},{"type":125,"attrs":223,"content":224},{"level":127,"textAlign":16},[225],{"text":226,"type":131},"Privacy Controls",{"type":133,"attrs":228,"content":229},{"textAlign":16},[230],{"text":231,"type":131},"VortiDeck now asks before collecting any usage data.",{"type":133,"attrs":233,"content":234},{"textAlign":16},[235],{"text":236,"type":131},"On first launch, you'll see a small banner at the bottom:",{"type":238,"content":239},"blockquote",[240,249],{"type":133,"attrs":241,"content":242},{"textAlign":16},[243,247],{"text":244,"type":131,"marks":245},"Help improve VortiDeck?",[246],{"type":157},{"text":248,"type":131}," We collect anonymous usage analytics. No personal data. You can change this anytime in Settings → Privacy.",{"type":133,"attrs":250,"content":251},{"textAlign":16},[252],{"text":253,"type":131},"[Accept] [No thanks]",{"type":133,"attrs":255,"content":256},{"textAlign":16},[257,259,263],{"text":258,"type":131},"If you pick \"No thanks,\" zero data is sent. You can change your mind later in ",{"text":260,"type":131,"marks":261},"Settings → Privacy",[262],{"type":157},{"text":264,"type":131},". The banner only appears once — after you choose, it won't come back.",{"type":194},{"type":125,"attrs":267,"content":268},{"level":127,"textAlign":16},[269],{"text":270,"type":131},"OBS Action Fixes",{"type":133,"attrs":272,"content":273},{"textAlign":16},[274],{"text":275,"type":131},"Creating and editing OBS actions works reliably again. If you had issues saving actions or saw crashes when loading actions with missing parameters — that's been fixed. Actions also update across the app immediately after saving, without needing to navigate away.",{"type":194},{"type":125,"attrs":278,"content":279},{"level":127,"textAlign":16},[280],{"text":281,"type":131},"Simplified Pricing",{"type":133,"attrs":283,"content":284},{"textAlign":16},[285,287,291,293,297],{"text":286,"type":131},"The website now has two plans: ",{"text":288,"type":131,"marks":289},"Free",[290],{"type":157},{"text":292,"type":131}," and ",{"text":294,"type":131,"marks":295},"Pro",[296],{"type":157},{"text":298,"type":131},". The Business tier is gone — Pro includes everything: unlimited AI executions, unlimited devices, all integrations.",{"type":194},{"type":125,"attrs":301,"content":302},{"level":127,"textAlign":16},[303],{"text":304,"type":131},"Coming Next",{"type":125,"attrs":306,"content":307},{"level":140,"textAlign":16},[308],{"text":309,"type":131},"More effects",{"type":133,"attrs":311,"content":312},{"textAlign":16},[313],{"text":314,"type":131},"Event based animation effects for overlays.",{"type":125,"attrs":316,"content":317},{"level":140,"textAlign":16},[318],{"text":319,"type":131},"Engine Integration",{"type":133,"attrs":321,"content":322},{"textAlign":16},[323],{"text":324,"type":131},"Integration of the streaming module and events like chat messages into engine. Overlay will work together with engine so you will be able to display chats and trigger actions\u002Foverlay actions on the overlay in real time.",{"type":194},{"type":238,"content":327},[328,333],{"type":133,"attrs":329,"content":330},{"textAlign":16},[331],{"text":332,"type":131},"[release_summary title=\"Summary\"]",{"type":145,"content":334},[335,342,349,356,363,370,377,384],{"type":148,"content":336},[337],{"type":133,"attrs":338,"content":339},{"textAlign":16},[340],{"text":341,"type":131},"Smart Properties Panel | New",{"type":148,"content":343},[344],{"type":133,"attrs":345,"content":346},{"textAlign":16},[347],{"text":348,"type":131},"Gradient Background Editor | New",{"type":148,"content":350},[351],{"type":133,"attrs":352,"content":353},{"textAlign":16},[354],{"text":355,"type":131},"Live OBS Preview | New",{"type":148,"content":357},[358],{"type":133,"attrs":359,"content":360},{"textAlign":16},[361],{"text":362,"type":131},"Privacy Consent Controls | New",{"type":148,"content":364},[365],{"type":133,"attrs":366,"content":367},{"textAlign":16},[368],{"text":369,"type":131},"OBS Action Reliability | Fixed",{"type":148,"content":371},[372],{"type":133,"attrs":373,"content":374},{"textAlign":16},[375],{"text":376,"type":131},"Simplified Pricing (Free\u002FPro) | Changed",{"type":148,"content":378},[379],{"type":133,"attrs":380,"content":381},{"textAlign":16},[382],{"text":383,"type":131},"More effects | Coming next",{"type":148,"content":385},[386],{"type":133,"attrs":387,"content":388},{"textAlign":16},[389],{"text":390,"type":131},"Engine Integration | Coming next",{"type":133,"attrs":392,"content":393},{"textAlign":16},[394,396,404],{"text":395,"type":131},"Update to 0.6.9 from the VortiDeck app or download from ",{"text":397,"type":131,"marks":398},"vortideck.com",[399],{"type":400,"attrs":401},"link",{"href":402,"uuid":16,"anchor":16,"target":16,"linktype":403},"https:\u002F\u002Fvortideck.com","url",{"text":405,"type":131},".",{"name":58,"created_at":59,"published_at":60,"updated_at":61,"id":62,"uuid":63,"content":407,"slug":67,"full_slug":68,"sort_by_date":16,"position":69,"tag_list":408,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":71,"first_published_at":72,"release_id":16,"lang":23,"path":16,"alternates":409,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":65,"name":66,"component":13},[],[],"article","\n0.6.9 makes the overlay editor smarter, OBS updates instant, and puts you in control of your data.","vortideck-0-6-9-overlay-editor-and-upgrade-live-obs-preview","blog\u002Farticle\u002Fvortideck-0-6-9-overlay-editor-and-upgrade-live-obs-preview",[],656130780,"e475d87d-de61-461f-8aea-3bb8d2166a06","2026-03-20T15:49:18.501Z",[],{"name":420,"created_at":421,"published_at":422,"updated_at":423,"id":424,"uuid":425,"content":426,"slug":1044,"full_slug":1045,"sort_by_date":16,"position":52,"tag_list":1046,"is_startpage":19,"parent_id":415,"meta_data":16,"group_id":1047,"first_published_at":1048,"release_id":16,"lang":23,"path":16,"alternates":1049,"default_full_slug":16,"translated_slugs":16},"VortiDeck 0.6.8 — Context Menus, Flow Overhaul & More","2026-03-01T03:09:33.438Z","2026-03-10T02:57:38.401Z","2026-03-10T02:57:38.418Z",150097811238151,"4be9d9fe-851c-453a-b60d-9c0797ac0571",{"_uid":427,"image":428,"title":429,"author":430,"content":434,"category":1039,"component":410,"description":1043},"8ef8abeb-3ea0-4fd3-8cae-a99da34bf7b0","\u002F\u002Fa.storyblok.com\u002Ff\u002F332218\u002F2752x1536\u002Fd22a4fada5\u002Ffix_some_text_artifacts_and_replace_vortideck_lkog_delpmaspu.png","VortiDeck 0.6.8 is here",{"name":103,"created_at":104,"published_at":105,"updated_at":106,"id":107,"uuid":108,"content":431,"slug":114,"full_slug":115,"sort_by_date":16,"position":85,"tag_list":432,"is_startpage":19,"parent_id":117,"meta_data":16,"group_id":118,"first_published_at":105,"release_id":16,"lang":23,"path":16,"alternates":433,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":110,"name":103,"avatar":111,"component":112,"description":113},[],[],{"type":122,"content":435},[436,442,447,448,453,458,463,468,473,615,620,636,643,644,649,654,659,670,714,719,724,754,759,770,777,782,793,798,809,810,815,820,825,826,831,836,837,842,853,858,859,863,868,889,910,915,920,944,945,1037],{"type":125,"attrs":437,"content":439},{"level":438,"textAlign":16},1,[440],{"text":441,"type":131},"VortiDeck 0.6.8 — Right-Click Menu, Flow Editor Rework, and a Bunch of Other Stuff",{"type":133,"attrs":443,"content":444},{"textAlign":16},[445],{"text":446,"type":131},"0.6.8 has a lot in it. Context menu integration for Windows Explorer, a reworked Flow Editor, faster plugin loading, and a new website. Here's what changed and why.",{"type":194},{"type":125,"attrs":449,"content":450},{"level":127,"textAlign":16},[451],{"text":452,"type":131},"Windows Explorer Context Menu",{"type":133,"attrs":454,"content":455},{"textAlign":16},[456],{"text":457,"type":131},"You can now right-click files, folders, or the desktop in Windows Explorer and see your VortiDeck actions right there.",{"type":133,"attrs":459,"content":460},{"textAlign":16},[461],{"text":462,"type":131},"Instead of switching to VortiDeck, finding the right flow, and dragging files into it — you right-click, pick the action, and it runs. The selected file paths get passed straight into your flow or action.",{"type":125,"attrs":464,"content":465},{"level":140,"textAlign":16},[466],{"text":467,"type":131},"What you can configure",{"type":133,"attrs":469,"content":470},{"textAlign":16},[471],{"text":472,"type":131},"Each menu item has:",{"type":145,"content":474},[475,486,521,543,554,593,604],{"type":148,"content":476},[477],{"type":133,"attrs":478,"content":479},{"textAlign":16},[480,484],{"text":481,"type":131,"marks":482},"A title",[483],{"type":157},{"text":485,"type":131}," — what shows up in the menu",{"type":148,"content":487},[488],{"type":133,"attrs":489,"content":490},{"textAlign":16},[491,495,497,502,504,508,509,513,515,519],{"text":492,"type":131,"marks":493},"File type filters",[494],{"type":157},{"text":496,"type":131}," — only show for ",{"text":498,"type":131,"marks":499},".mp3",[500],{"type":501},"code",{"text":503,"type":131},", ",{"text":505,"type":131,"marks":506},".png",[507],{"type":501},{"text":503,"type":131},{"text":510,"type":131,"marks":511},".py",[512],{"type":501},{"text":514,"type":131},", whatever. ",{"text":516,"type":131,"marks":517},"*",[518],{"type":501},{"text":520,"type":131}," for everything",{"type":148,"content":522},[523],{"type":133,"attrs":524,"content":525},{"textAlign":16},[526,530,532,536,537,541],{"text":527,"type":131,"marks":528},"File name patterns",[529],{"type":157},{"text":531,"type":131}," — match ",{"text":533,"type":131,"marks":534},"Makefile",[535],{"type":501},{"text":503,"type":131},{"text":538,"type":131,"marks":539},"readme*",[540],{"type":501},{"text":542,"type":131},", etc.",{"type":148,"content":544},[545],{"type":133,"attrs":546,"content":547},{"textAlign":16},[548,552],{"text":549,"type":131,"marks":550},"Where it appears",[551],{"type":157},{"text":553,"type":131}," — files, folders, directory backgrounds, desktop, drive roots",{"type":148,"content":555},[556,563],{"type":133,"attrs":557,"content":558},{"textAlign":16},[559],{"text":560,"type":131,"marks":561},"What it does:",[562],{"type":157},{"type":145,"content":564},[565,572,579,586],{"type":148,"content":566},[567],{"type":133,"attrs":568,"content":569},{"textAlign":16},[570],{"text":571,"type":131},"Opens a VortiDeck page",{"type":148,"content":573},[574],{"type":133,"attrs":575,"content":576},{"textAlign":16},[577],{"text":578,"type":131},"Runs a Flow (with the file paths as input)",{"type":148,"content":580},[581],{"type":133,"attrs":582,"content":583},{"textAlign":16},[584],{"text":585,"type":131},"Launches a program",{"type":148,"content":587},[588],{"type":133,"attrs":589,"content":590},{"textAlign":16},[591],{"text":592,"type":131},"Triggers a deep link",{"type":148,"content":594},[595],{"type":133,"attrs":596,"content":597},{"textAlign":16},[598,602],{"text":599,"type":131,"marks":600},"Icons",[601],{"type":157},{"text":603,"type":131}," — separate light\u002Fdark mode variants",{"type":148,"content":605},[606],{"type":133,"attrs":607,"content":608},{"textAlign":16},[609,613],{"text":610,"type":131,"marks":611},"Grouping",[612],{"type":157},{"text":614,"type":131}," — same group name = grouped with a visual separator",{"type":125,"attrs":616,"content":617},{"level":140,"textAlign":16},[618],{"text":619,"type":131},"How it's built",{"type":133,"attrs":621,"content":622},{"textAlign":16},[623,625,629,631,635],{"text":624,"type":131},"It's a COM-based Windows Shell Extension — a native DLL registered through an MSIX sparse package. No ",{"text":626,"type":131,"marks":627},"regsvr32",[628],{"type":501},{"text":630,"type":131},", no admin registry edits. The DLL reads your config, filters items based on what you clicked, and sends deep links back to VortiDeck. Runs in ",{"text":632,"type":131,"marks":633},"dllhost.exe",[634],{"type":501},{"text":405,"type":131},{"type":238,"content":637},[638],{"type":133,"attrs":639,"content":640},{"textAlign":16},[641],{"text":642,"type":131},"[callout variant=\"tip\" title=\"No admin required\"] The extension uses MSIX sparse packaging — it registers itself without administrator privileges or manual registry editing. Install VortiDeck and it works.",{"type":194},{"type":125,"attrs":645,"content":646},{"level":127,"textAlign":16},[647],{"text":648,"type":131},"Flow Editor Rework",{"type":133,"attrs":650,"content":651},{"textAlign":16},[652],{"text":653,"type":131},"The Flow Editor got a significant rework. Here's what's different.",{"type":125,"attrs":655,"content":656},{"level":140,"textAlign":16},[657],{"text":658,"type":131},"Node Inspector Panel",{"type":133,"attrs":660,"content":661},{"textAlign":16},[662,664,668],{"text":663,"type":131},"Clicking a node now opens a ",{"text":665,"type":131,"marks":666},"Node Inspector",[667],{"type":157},{"text":669,"type":131}," — a side panel with all the node's configuration in one place:",{"type":145,"content":671},[672,679,686,693,700,707],{"type":148,"content":673},[674],{"type":133,"attrs":675,"content":676},{"textAlign":16},[677],{"text":678,"type":131},"Node type and assignment link",{"type":148,"content":680},[681],{"type":133,"attrs":682,"content":683},{"textAlign":16},[684],{"text":685,"type":131},"All inputs with type-colored borders, required\u002Foptional labels, connection indicators",{"type":148,"content":687},[688],{"type":133,"attrs":689,"content":690},{"textAlign":16},[691],{"text":692,"type":131},"Input-appropriate widgets — sliders for numbers, file pickers for paths, color pickers for colors, toggles for booleans, multi-select for arrays",{"type":148,"content":694},[695],{"type":133,"attrs":696,"content":697},{"textAlign":16},[698],{"text":699,"type":131},"Inline JSON editing with validation for object\u002Farray inputs",{"type":148,"content":701},[702],{"type":133,"attrs":703,"content":704},{"textAlign":16},[705],{"text":706,"type":131},"Live preview of values flowing in from connected nodes",{"type":148,"content":708},[709],{"type":133,"attrs":710,"content":711},{"textAlign":16},[712],{"text":713,"type":131},"Conditional fields — inputs that depend on other inputs only show when relevant",{"type":133,"attrs":715,"content":716},{"textAlign":16},[717],{"text":718,"type":131},"Previously, node config was spread across hover tooltips and inline widgets. The Inspector puts it all in one panel.",{"type":125,"attrs":720,"content":721},{"level":140,"textAlign":16},[722],{"text":723,"type":131},"Visual improvements",{"type":145,"content":725},[726,733,740,747],{"type":148,"content":727},[728],{"type":133,"attrs":729,"content":730},{"textAlign":16},[731],{"text":732,"type":131},"Ports render with type-colored dots and glow effects — green for strings, blue for numbers, orange for booleans, purple for arrays",{"type":148,"content":734},[735],{"type":133,"attrs":736,"content":737},{"textAlign":16},[738],{"text":739,"type":131},"Connected ports fill with color; disconnected ports show a ring",{"type":148,"content":741},[742],{"type":133,"attrs":743,"content":744},{"textAlign":16},[745],{"text":746,"type":131},"Node cards got layout improvements, compact assignment mode, execution status indicators, and progress bars",{"type":148,"content":748},[749],{"type":133,"attrs":750,"content":751},{"textAlign":16},[752],{"text":753,"type":131},"Canvas rendering is faster",{"type":125,"attrs":755,"content":756},{"level":140,"textAlign":16},[757],{"text":758,"type":131},"Node minimizing",{"type":133,"attrs":760,"content":761},{"textAlign":16},[762,764,768],{"text":763,"type":131},"Nodes can collapse to a header-only view — just the title and a badge like ",{"text":765,"type":131,"marks":766},"\"3 in · 2 out\"",[767],{"type":157},{"text":769,"type":131},". Connections still work; they route to anchors on the collapsed header. The minimized state saves to the database and restores when you reopen the flow.",{"type":238,"content":771},[772],{"type":133,"attrs":773,"content":774},{"textAlign":16},[775],{"text":776,"type":131},"[callout variant=\"info\" title=\"When to minimize\"] Minimize nodes you're not actively configuring. Keeps large flows readable without scrolling past walls of inputs.",{"type":125,"attrs":778,"content":779},{"level":140,"textAlign":16},[780],{"text":781,"type":131},"Deck assignments as flow nodes",{"type":133,"attrs":783,"content":784},{"textAlign":16},[785,787,791],{"text":786,"type":131},"Drag an action from your Assignments Deck onto the flow canvas. It becomes an ",{"text":788,"type":131,"marks":789},"assignment node",[790],{"type":157},{"text":792,"type":131}," — a compact card representing that deck action as a step in your automation. Wires into the flow like any other node.",{"type":125,"attrs":794,"content":795},{"level":140,"textAlign":16},[796],{"text":797,"type":131},"Schema input inference",{"type":133,"attrs":799,"content":800},{"textAlign":16},[801,803,807],{"text":802,"type":131},"A new utility (",{"text":804,"type":131,"marks":805},"schemaInputs.ts",[806],{"type":501},{"text":808,"type":131},") handles converting JSON Schema into flow node inputs. Type, default value, widget type, required status, conditional display — all inferred from the schema. One source of truth for all nodes.",{"type":194},{"type":125,"attrs":811,"content":812},{"level":127,"textAlign":16},[813],{"text":814,"type":131},"Faster Plugin Loading",{"type":133,"attrs":816,"content":817},{"textAlign":16},[818],{"text":819,"type":131},"Plugins now load in parallel instead of one-by-one. If you have multiple plugins, the app gets to a usable state faster.",{"type":133,"attrs":821,"content":822},{"textAlign":16},[823],{"text":824,"type":131},"There's also a dedup guard that prevents the loader from running twice on rapid HMR re-mounts during development.",{"type":194},{"type":125,"attrs":827,"content":828},{"level":127,"textAlign":16},[829],{"text":830,"type":131},"Desktop UI Polish",{"type":133,"attrs":832,"content":833},{"textAlign":16},[834],{"text":835,"type":131},"Settings, deck pages, store, modals, sidebar — various layout and styling fixes throughout.",{"type":194},{"type":125,"attrs":838,"content":839},{"level":127,"textAlign":16},[840],{"text":841,"type":131},"Website Redesign",{"type":133,"attrs":843,"content":844},{"textAlign":16},[845,847,851],{"text":846,"type":131},"The landing page got a full redesign. The visual theme is ",{"text":848,"type":131,"marks":849},"animated connection paths",[850],{"type":157},{"text":852,"type":131}," — SVG bezier curves flowing between sections. Backgrounds use animated orbs, particle systems, and dot grids instead of flat gradients.",{"type":133,"attrs":854,"content":855},{"textAlign":16},[856],{"text":857,"type":131},"New sections: AI Agents, Ecosystem, Use Cases, Product Showcase. The headline now leads with \"Desktop Control Center for AI & Workflows.\"",{"type":194},{"type":125,"attrs":860,"content":861},{"level":127,"textAlign":16},[862],{"text":304,"type":131},{"type":125,"attrs":864,"content":865},{"level":140,"textAlign":16},[866],{"text":867,"type":131},"Flow Type System",{"type":133,"attrs":869,"content":870},{"textAlign":16},[871,873,877,878,882,883,887],{"text":872,"type":131},"Right now, flow ports use plain labels — ",{"text":874,"type":131,"marks":875},"\"string\"",[876],{"type":501},{"text":503,"type":131},{"text":879,"type":131,"marks":880},"\"number\"",[881],{"type":501},{"text":503,"type":131},{"text":884,"type":131,"marks":885},"\"any\"",[886],{"type":501},{"text":888,"type":131},". The connection validator does basic compatibility checks and ports are color-coded, but a string port doesn't know if it's a file path, a URL, or an AI prompt.",{"type":133,"attrs":890,"content":891},{"textAlign":16},[892,894,898,899,903,904,908],{"text":893,"type":131},"We're building a type system where ports declare rich types: ",{"text":895,"type":131,"marks":896},"File { accepted_types: [\".mp3\", \".wav\"] }",[897],{"type":501},{"text":503,"type":131},{"text":900,"type":131,"marks":901},"Embedding { dimensions: 1536 }",[902],{"type":501},{"text":503,"type":131},{"text":905,"type":131,"marks":906},"Union { String | Number }",[907],{"type":501},{"text":909,"type":131},". The executor will validate data between nodes. The canvas will highlight compatible ports as you drag a connection.",{"type":133,"attrs":911,"content":912},{"textAlign":16},[913],{"text":914,"type":131},"Result: fewer silent failures from bad data flowing between nodes, and the editor tells you what can connect to what before you try it.",{"type":125,"attrs":916,"content":917},{"level":140,"textAlign":16},[918],{"text":919,"type":131},"Error Handling Nodes",{"type":133,"attrs":921,"content":922},{"textAlign":16},[923,927,928,932,933,937,938,942],{"text":924,"type":131,"marks":925},"TryCatch",[926],{"type":501},{"text":503,"type":131},{"text":929,"type":131,"marks":930},"Retry",[931],{"type":501},{"text":503,"type":131},{"text":934,"type":131,"marks":935},"Fallback",[936],{"type":501},{"text":503,"type":131},{"text":939,"type":131,"marks":940},"Timeout",[941],{"type":501},{"text":943,"type":131}," — these are already defined in the engine. Next release they'll be fully functional. Wrap parts of a flow to catch failures, retry, or fall back to an alternative path.",{"type":194},{"type":238,"content":946},[947,951],{"type":133,"attrs":948,"content":949},{"textAlign":16},[950],{"text":332,"type":131},{"type":145,"content":952},[953,960,967,974,981,988,995,1002,1009,1016,1023,1030],{"type":148,"content":954},[955],{"type":133,"attrs":956,"content":957},{"textAlign":16},[958],{"text":959,"type":131},"Windows Explorer Context Menu | New",{"type":148,"content":961},[962],{"type":133,"attrs":963,"content":964},{"textAlign":16},[965],{"text":966,"type":131},"Node Inspector Panel | New",{"type":148,"content":968},[969],{"type":133,"attrs":970,"content":971},{"textAlign":16},[972],{"text":973,"type":131},"Node minimizing (collapse to header) | New",{"type":148,"content":975},[976],{"type":133,"attrs":977,"content":978},{"textAlign":16},[979],{"text":980,"type":131},"Deck assignments as flow nodes | New",{"type":148,"content":982},[983],{"type":133,"attrs":984,"content":985},{"textAlign":16},[986],{"text":987,"type":131},"Error Handling Nodes (TryCatch, Retry, Fallback, Timeout) | Coming next",{"type":148,"content":989},[990],{"type":133,"attrs":991,"content":992},{"textAlign":16},[993],{"text":994,"type":131},"Concurrent Plugin Loading | Improved",{"type":148,"content":996},[997],{"type":133,"attrs":998,"content":999},{"textAlign":16},[1000],{"text":1001,"type":131},"BaseModal unified component | New",{"type":148,"content":1003},[1004],{"type":133,"attrs":1005,"content":1006},{"textAlign":16},[1007],{"text":1008,"type":131},"TopbarActions component | New",{"type":148,"content":1010},[1011],{"type":133,"attrs":1012,"content":1013},{"textAlign":16},[1014],{"text":1015,"type":131},"Flow canvas & port rendering | Improved",{"type":148,"content":1017},[1018],{"type":133,"attrs":1019,"content":1020},{"textAlign":16},[1021],{"text":1022,"type":131},"Schema input inference utility | New",{"type":148,"content":1024},[1025],{"type":133,"attrs":1026,"content":1027},{"textAlign":16},[1028],{"text":1029,"type":131},"Website redesign | New",{"type":148,"content":1031},[1032],{"type":133,"attrs":1033,"content":1034},{"textAlign":16},[1035],{"text":1036,"type":131},"Flow Type System | Coming next",{"type":133,"attrs":1038},{"textAlign":16},{"name":58,"created_at":59,"published_at":60,"updated_at":61,"id":62,"uuid":63,"content":1040,"slug":67,"full_slug":68,"sort_by_date":16,"position":69,"tag_list":1041,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":71,"first_published_at":72,"release_id":16,"lang":23,"path":16,"alternates":1042,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":65,"name":66,"component":13},[],[],"VortiDeck 0.6.8 is here — This release brings Windows Explorer context menu integration, a completely overhauled Flow Editor, new error-handling nodes, faster plugin loading, and a fresh new look for the VortiDeck website.","vortideck-0-6-8-context-menus-flow-overhaul-more","blog\u002Farticle\u002Fvortideck-0-6-8-context-menus-flow-overhaul-more",[],"4567fcc1-8ac0-466b-b813-59b0b85982e1","2026-03-01T03:11:53.060Z",[],{"name":1051,"created_at":1052,"published_at":1053,"updated_at":1054,"id":1055,"uuid":1056,"content":1057,"slug":1946,"full_slug":1947,"sort_by_date":16,"position":69,"tag_list":1948,"is_startpage":19,"parent_id":415,"meta_data":16,"group_id":1949,"first_published_at":1950,"release_id":16,"lang":23,"path":16,"alternates":1951,"default_full_slug":16,"translated_slugs":16},"Release 0.6.5","2025-11-24T02:19:42.023Z","2026-03-02T03:02:14.176Z","2026-03-02T03:02:14.199Z",115757801606829,"1a30c7a8-41ef-451b-9532-d5f3bb9d2330",{"_uid":1058,"image":1059,"title":1060,"author":1061,"content":1065,"category":1941,"component":410,"description":1945},"709b34c0-21b0-4fc1-a799-243992f4d0d3","\u002F\u002Fa.storyblok.com\u002Ff\u002F332218\u002F5376x3072\u002Fe8eedc8da0\u002Fupdate-desktop-0-5-6.png","Desktop Release 0.6.5",{"name":103,"created_at":104,"published_at":105,"updated_at":106,"id":107,"uuid":108,"content":1062,"slug":114,"full_slug":115,"sort_by_date":16,"position":85,"tag_list":1063,"is_startpage":19,"parent_id":117,"meta_data":16,"group_id":118,"first_published_at":105,"release_id":16,"lang":23,"path":16,"alternates":1064,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":110,"name":103,"avatar":111,"component":112,"description":113},[],[],{"type":122,"content":1066},[1067,1072,1077,1082,1083,1088,1093,1098,1103,1114,1119,1154,1159,1164,1210,1215,1222,1223,1228,1233,1238,1243,1273,1278,1279,1284,1289,1294,1295,1300,1311,1316,1321,1326,1363,1368,1429,1434,1447,1452,1457,1458,1463,1468,1473,1490,1495,1506,1536,1541,1546,1563,1568,1573,1608,1615,1616,1621,1632,1655,1660,1661,1666,1671,1706,1707,1712,1717,1718,1723,1728,1765,1770,1771,1870,1871,1876,1881,1925,1926,1931],{"type":125,"attrs":1068,"content":1069},{"level":438,"textAlign":16},[1070],{"text":1071,"type":131},"VortiDeck 0.6.5 — Streaming Control, Webhooks & Mobile Overhaul",{"type":133,"attrs":1073,"content":1074},{"textAlign":16},[1075],{"text":1076,"type":131},"This one took a while — and it turned into something much bigger than planned. VortiDeck 0.6.5 brings a full Streaming Control Center, webhook automation, focus window switching, a rebuilt mobile app with E2E encryption, and a long list of things that just work better now.",{"type":133,"attrs":1078,"content":1079},{"textAlign":16},[1080],{"text":1081,"type":131},"If you stream, automate, or just want tighter control over your desktop — this is the update where VortiDeck starts to really click.",{"type":194},{"type":125,"attrs":1084,"content":1085},{"level":127,"textAlign":16},[1086],{"text":1087,"type":131},"Streaming Control Center",{"type":133,"attrs":1089,"content":1090},{"textAlign":16},[1091],{"text":1092,"type":131},"The biggest addition in 0.6.5: a dedicated hub for managing your streams.",{"type":133,"attrs":1094,"content":1095},{"textAlign":16},[1096],{"text":1097,"type":131},"If you broadcast to multiple platforms, or you just like having everything dialed in before going live, the Streaming Control Center replaces the chaos of scattered configs with a single organized workflow.",{"type":125,"attrs":1099,"content":1100},{"level":140,"textAlign":16},[1101],{"text":1102,"type":131},"Sessions",{"type":133,"attrs":1104,"content":1105},{"textAlign":16},[1106,1108,1112],{"text":1107,"type":131},"You can now create ",{"text":1109,"type":131,"marks":1110},"streaming sessions",[1111],{"type":157},{"text":1113,"type":131}," — saved configurations that bundle your chat commands, deck actions, and stream settings into one loadable preset. Set up your \"Chill Stream\" session differently from your \"Tournament Mode\" session, and switch between them before going live.",{"type":133,"attrs":1115,"content":1116},{"textAlign":16},[1117],{"text":1118,"type":131},"Sessions have three states:",{"type":145,"content":1120},[1121,1132,1143],{"type":148,"content":1122},[1123],{"type":133,"attrs":1124,"content":1125},{"textAlign":16},[1126,1130],{"text":1127,"type":131,"marks":1128},"Draft",[1129],{"type":157},{"text":1131,"type":131}," — still setting things up",{"type":148,"content":1133},[1134],{"type":133,"attrs":1135,"content":1136},{"textAlign":16},[1137,1141],{"text":1138,"type":131,"marks":1139},"Active",[1140],{"type":157},{"text":1142,"type":131}," — you're live",{"type":148,"content":1144},[1145],{"type":133,"attrs":1146,"content":1147},{"textAlign":16},[1148,1152],{"text":1149,"type":131,"marks":1150},"Inactive",[1151],{"type":157},{"text":1153,"type":131}," — saved for later",{"type":125,"attrs":1155,"content":1156},{"level":140,"textAlign":16},[1157],{"text":1158,"type":131},"Chat commands",{"type":133,"attrs":1160,"content":1161},{"textAlign":16},[1162],{"text":1163,"type":131},"Chat commands got a serious upgrade. You can now link any deck action to a chat command:",{"type":145,"content":1165},[1166,1177,1188,1199],{"type":148,"content":1167},[1168],{"type":133,"attrs":1169,"content":1170},{"textAlign":16},[1171,1175],{"text":1172,"type":131,"marks":1173},"!lights",[1174],{"type":501},{"text":1176,"type":131}," — change your Hue lights",{"type":148,"content":1178},[1179],{"type":133,"attrs":1180,"content":1181},{"textAlign":16},[1182,1186],{"text":1183,"type":131,"marks":1184},"!alert",[1185],{"type":501},{"text":1187,"type":131}," — trigger an OBS scene",{"type":148,"content":1189},[1190],{"type":133,"attrs":1191,"content":1192},{"textAlign":16},[1193,1197],{"text":1194,"type":131,"marks":1195},"!socials",[1196],{"type":501},{"text":1198,"type":131}," — send links to chat",{"type":148,"content":1200},[1201],{"type":133,"attrs":1202,"content":1203},{"textAlign":16},[1204,1208],{"text":1205,"type":131,"marks":1206},"!obs",[1207],{"type":501},{"text":1209,"type":131}," — focus the OBS window (mods only)",{"type":133,"attrs":1211,"content":1212},{"textAlign":16},[1213],{"text":1214,"type":131},"Assigning commands is drag-and-drop — pick an action from your deck, drop it into the session config, type the command name, done. There's also a proper search field now, so even if you have 80+ actions, you'll find what you need instantly.",{"type":238,"content":1216},[1217],{"type":133,"attrs":1218,"content":1219},{"textAlign":16},[1220],{"text":1221,"type":131},"[callout variant=\"tip\" title=\"Viewer permissions\"] Viewer permission controls are in active development. Soon you'll be able to restrict commands to mods, VIPs, subscribers, or specific users — all configurable per session.",{"type":194},{"type":125,"attrs":1224,"content":1225},{"level":127,"textAlign":16},[1226],{"text":1227,"type":131},"Focus Window Actions",{"type":133,"attrs":1229,"content":1230},{"textAlign":16},[1231],{"text":1232,"type":131},"This feature came from a real pain point: switching windows during a stream without fumbling around.",{"type":133,"attrs":1234,"content":1235},{"textAlign":16},[1236],{"text":1237,"type":131},"You can now pick any open window, save it with a custom name, and drop it onto a deck button. One tap switches focus instantly — no alt-tabbing, no hunting through taskbars.",{"type":133,"attrs":1239,"content":1240},{"textAlign":16},[1241],{"text":1242,"type":131},"Works great for:",{"type":145,"content":1244},[1245,1252,1259,1266],{"type":148,"content":1246},[1247],{"type":133,"attrs":1248,"content":1249},{"textAlign":16},[1250],{"text":1251,"type":131},"Swapping between OBS and your game",{"type":148,"content":1253},[1254],{"type":133,"attrs":1255,"content":1256},{"textAlign":16},[1257],{"text":1258,"type":131},"Checking Discord mid-stream",{"type":148,"content":1260},[1261],{"type":133,"attrs":1262,"content":1263},{"textAlign":16},[1264],{"text":1265,"type":131},"Jumping into editing software",{"type":148,"content":1267},[1268],{"type":133,"attrs":1269,"content":1270},{"textAlign":16},[1271],{"text":1272,"type":131},"Focusing your browser for on-stream browsing",{"type":133,"attrs":1274,"content":1275},{"textAlign":16},[1276],{"text":1277,"type":131},"And yes — focus window actions can be connected to chat commands too. Your mods can trigger window switches on your behalf.",{"type":194},{"type":125,"attrs":1280,"content":1281},{"level":127,"textAlign":16},[1282],{"text":1283,"type":131},"HTTP Request Templates",{"type":133,"attrs":1285,"content":1286},{"textAlign":16},[1287],{"text":1288,"type":131},"If you automate through APIs — smart home, Discord bots, webhooks, custom services — this update adds proper HTTP request management.",{"type":133,"attrs":1290,"content":1291},{"textAlign":16},[1292],{"text":1293,"type":131},"You can create, edit, and test HTTP request templates directly inside VortiDeck. Each template can be dropped onto a deck button or used inside a streaming session. It's a simple interface, but it opens up a lot of power if you want to extend your setup beyond what's built in.",{"type":194},{"type":125,"attrs":1296,"content":1297},{"level":127,"textAlign":16},[1298],{"text":1299,"type":131},"Webhooks",{"type":133,"attrs":1301,"content":1302},{"textAlign":16},[1303,1305,1309],{"text":1304,"type":131},"One of the quieter but most powerful additions in 0.6.5. VortiDeck can now ",{"text":1306,"type":131,"marks":1307},"receive webhooks",[1308],{"type":157},{"text":1310,"type":131}," from external services — turning it into an automation endpoint that other tools can trigger.",{"type":125,"attrs":1312,"content":1313},{"level":140,"textAlign":16},[1314],{"text":1315,"type":131},"How it works",{"type":133,"attrs":1317,"content":1318},{"textAlign":16},[1319],{"text":1320,"type":131},"When you create a webhook, VortiDeck generates a unique URL. You give that URL to whatever service you want to connect. When that service sends data to the URL, VortiDeck receives it and executes whatever action you've configured.",{"type":133,"attrs":1322,"content":1323},{"textAlign":16},[1324],{"text":1325,"type":131},"For example:",{"type":145,"content":1327},[1328,1339,1350],{"type":148,"content":1329},[1330],{"type":133,"attrs":1331,"content":1332},{"textAlign":16},[1333,1337],{"text":1334,"type":131,"marks":1335},"Streamlabs",[1336],{"type":157},{"text":1338,"type":131}," sends a donation — VortiDeck triggers an alert scene in OBS",{"type":148,"content":1340},[1341],{"type":133,"attrs":1342,"content":1343},{"textAlign":16},[1344,1348],{"text":1345,"type":131,"marks":1346},"GitHub",[1347],{"type":157},{"text":1349,"type":131}," sends a push notification — VortiDeck runs a build script",{"type":148,"content":1351},[1352],{"type":133,"attrs":1353,"content":1354},{"textAlign":16},[1355,1357,1361],{"text":1356,"type":131},"A ",{"text":1358,"type":131,"marks":1359},"custom app",[1360],{"type":157},{"text":1362,"type":131}," fires an event — VortiDeck switches focus windows",{"type":125,"attrs":1364,"content":1365},{"level":140,"textAlign":16},[1366],{"text":1367,"type":131},"Setting it up",{"type":1369,"attrs":1370,"content":1371},"ordered_list",{"order":438},[1372,1383,1394,1401,1408,1415,1422],{"type":148,"content":1373},[1374],{"type":133,"attrs":1375,"content":1376},{"textAlign":16},[1377,1379],{"text":1378,"type":131},"Go to ",{"text":1380,"type":131,"marks":1381},"Settings → API Management",[1382],{"type":157},{"type":148,"content":1384},[1385],{"type":133,"attrs":1386,"content":1387},{"textAlign":16},[1388,1390],{"text":1389,"type":131},"Click ",{"text":1391,"type":131,"marks":1392},"Create Webhook",[1393],{"type":157},{"type":148,"content":1395},[1396],{"type":133,"attrs":1397,"content":1398},{"textAlign":16},[1399],{"text":1400,"type":131},"Give it a name (e.g., \"Streamlabs Alerts\")",{"type":148,"content":1402},[1403],{"type":133,"attrs":1404,"content":1405},{"textAlign":16},[1406],{"text":1407,"type":131},"Copy the webhook URL — paste it into the external service",{"type":148,"content":1409},[1410],{"type":133,"attrs":1411,"content":1412},{"textAlign":16},[1413],{"text":1414,"type":131},"Configure the action — drag any deck action onto the webhook config",{"type":148,"content":1416},[1417],{"type":133,"attrs":1418,"content":1419},{"textAlign":16},[1420],{"text":1421,"type":131},"Test it with the built-in test button",{"type":148,"content":1423},[1424],{"type":133,"attrs":1425,"content":1426},{"textAlign":16},[1427],{"text":1428,"type":131},"Save — your webhook is now live",{"type":133,"attrs":1430,"content":1431},{"textAlign":16},[1432],{"text":1433,"type":131},"You can create as many webhooks as you need. Each one is isolated and triggers different actions.",{"type":238,"content":1435},[1436],{"type":133,"attrs":1437,"content":1438},{"textAlign":16},[1439,1441,1445],{"text":1440,"type":131},"[callout variant=\"warning\" title=\"Server address\"] The API server runs locally. Your webhook endpoint is typically ",{"text":1442,"type":131,"marks":1443},"http:\u002F\u002F127.0.0.1:9001",[1444],{"type":501},{"text":1446,"type":131}," or your machine's network IP on port 9001. This will be shown more clearly in a future update.",{"type":125,"attrs":1448,"content":1449},{"level":140,"textAlign":16},[1450],{"text":1451,"type":131},"Security",{"type":133,"attrs":1453,"content":1454},{"textAlign":16},[1455],{"text":1456,"type":131},"All webhook URLs use secure tokens and can be regenerated at any time. You can also set IP whitelists and require specific headers for extra protection.",{"type":194},{"type":125,"attrs":1459,"content":1460},{"level":127,"textAlign":16},[1461],{"text":1462,"type":131},"Mobile App — v0.4.0",{"type":133,"attrs":1464,"content":1465},{"textAlign":16},[1466],{"text":1467,"type":131},"The mobile app got a ground-up rebuild. Almost everything here was rewritten.",{"type":125,"attrs":1469,"content":1470},{"level":140,"textAlign":16},[1471],{"text":1472,"type":131},"OAuth login",{"type":133,"attrs":1474,"content":1475},{"textAlign":16},[1476,1478,1482,1484,1488],{"text":1477,"type":131},"You can now log in through ",{"text":1479,"type":131,"marks":1480},"Google",[1481],{"type":157},{"text":1483,"type":131}," or ",{"text":1485,"type":131,"marks":1486},"Discord",[1487],{"type":157},{"text":1489,"type":131},". The login flow opens your phone's browser and deep-links back into the app — no more typing passwords on a tiny keyboard.",{"type":125,"attrs":1491,"content":1492},{"level":140,"textAlign":16},[1493],{"text":1494,"type":131},"Multi-desktop pairing",{"type":133,"attrs":1496,"content":1497},{"textAlign":16},[1498,1500,1504],{"text":1499,"type":131},"The mobile app now supports pairing with ",{"text":1501,"type":131,"marks":1502},"multiple desktops",[1503],{"type":157},{"text":1505,"type":131},":",{"type":145,"content":1507},[1508,1515,1522,1529],{"type":148,"content":1509},[1510],{"type":133,"attrs":1511,"content":1512},{"textAlign":16},[1513],{"text":1514,"type":131},"Streaming PC",{"type":148,"content":1516},[1517],{"type":133,"attrs":1518,"content":1519},{"textAlign":16},[1520],{"text":1521,"type":131},"Editing PC",{"type":148,"content":1523},[1524],{"type":133,"attrs":1525,"content":1526},{"textAlign":16},[1527],{"text":1528,"type":131},"Gaming PC",{"type":148,"content":1530},[1531],{"type":133,"attrs":1532,"content":1533},{"textAlign":16},[1534],{"text":1535,"type":131},"Work laptop",{"type":133,"attrs":1537,"content":1538},{"textAlign":16},[1539],{"text":1540,"type":131},"Switch between them with one tap. Everything is isolated — credentials, sessions, and connections don't overlap.",{"type":125,"attrs":1542,"content":1543},{"level":140,"textAlign":16},[1544],{"text":1545,"type":131},"Direct & Relay connections",{"type":133,"attrs":1547,"content":1548},{"textAlign":16},[1549,1551,1555,1557,1561],{"text":1550,"type":131},"VortiDeck mobile now supports both ",{"text":1552,"type":131,"marks":1553},"direct local network connections",[1554],{"type":157},{"text":1556,"type":131}," (fastest) and ",{"text":1558,"type":131,"marks":1559},"relay mode over the internet",[1560],{"type":157},{"text":1562,"type":131}," (for when you're not on the same network). The app picks the best mode automatically.",{"type":125,"attrs":1564,"content":1565},{"level":140,"textAlign":16},[1566],{"text":1567,"type":131},"End-to-end encryption",{"type":133,"attrs":1569,"content":1570},{"textAlign":16},[1571],{"text":1572,"type":131},"All communication between mobile and desktop uses:",{"type":145,"content":1574},[1575,1586,1597],{"type":148,"content":1576},[1577],{"type":133,"attrs":1578,"content":1579},{"textAlign":16},[1580,1584],{"text":1581,"type":131,"marks":1582},"X25519",[1583],{"type":157},{"text":1585,"type":131}," key exchange",{"type":148,"content":1587},[1588],{"type":133,"attrs":1589,"content":1590},{"textAlign":16},[1591,1595],{"text":1592,"type":131,"marks":1593},"ChaCha20-Poly1305",[1594],{"type":157},{"text":1596,"type":131}," symmetric encryption",{"type":148,"content":1598},[1599],{"type":133,"attrs":1600,"content":1601},{"textAlign":16},[1602,1604],{"text":1603,"type":131},"Token storage protected by ",{"text":1605,"type":131,"marks":1606},"biometrics",[1607],{"type":157},{"type":238,"content":1609},[1610],{"type":133,"attrs":1611,"content":1612},{"textAlign":16},[1613],{"text":1614,"type":131},"[callout variant=\"info\" title=\"Locked down by default\"] Every message between your phone and desktop is encrypted end-to-end. Even relay servers can't read your data. Biometric protection means your tokens are safe even if someone picks up your phone.",{"type":194},{"type":125,"attrs":1617,"content":1618},{"level":127,"textAlign":16},[1619],{"text":1620,"type":131},"Deck Editor Improvements",{"type":133,"attrs":1622,"content":1623},{"textAlign":16},[1624,1626,1630],{"text":1625,"type":131},"The editor now supports ",{"text":1627,"type":131,"marks":1628},"right-click context menus",[1629],{"type":157},{"text":1631,"type":131}," on any action:",{"type":145,"content":1633},[1634,1641,1648],{"type":148,"content":1635},[1636],{"type":133,"attrs":1637,"content":1638},{"textAlign":16},[1639],{"text":1640,"type":131},"Edit",{"type":148,"content":1642},[1643],{"type":133,"attrs":1644,"content":1645},{"textAlign":16},[1646],{"text":1647,"type":131},"Copy \u002F Duplicate",{"type":148,"content":1649},[1650],{"type":133,"attrs":1651,"content":1652},{"textAlign":16},[1653],{"text":1654,"type":131},"Delete",{"type":133,"attrs":1656,"content":1657},{"textAlign":16},[1658],{"text":1659,"type":131},"This works for everything — programs, macros, flows, OBS actions, focus windows, HTTP requests. Duplicating similar actions now takes seconds instead of minutes.",{"type":194},{"type":125,"attrs":1662,"content":1663},{"level":127,"textAlign":16},[1664],{"text":1665,"type":131},"Performance",{"type":133,"attrs":1667,"content":1668},{"textAlign":16},[1669],{"text":1670,"type":131},"Some changes under the hood that make the whole app feel snappier:",{"type":145,"content":1672},[1673,1684,1695],{"type":148,"content":1674},[1675],{"type":133,"attrs":1676,"content":1677},{"textAlign":16},[1678,1682],{"text":1679,"type":131,"marks":1680},"No more flicker on mobile connect",[1681],{"type":157},{"text":1683,"type":131}," — all feature limits arrive in a single WebSocket message",{"type":148,"content":1685},[1686],{"type":133,"attrs":1687,"content":1688},{"textAlign":16},[1689,1693],{"text":1690,"type":131,"marks":1691},"Better concurrency",[1692],{"type":157},{"text":1694,"type":131}," — set the parallel execution limit to 0 for unlimited, or keep it restricted",{"type":148,"content":1696},[1697],{"type":133,"attrs":1698,"content":1699},{"textAlign":16},[1700,1704],{"text":1701,"type":131,"marks":1702},"Real-time relay sync",[1703],{"type":157},{"text":1705,"type":131}," — desktop changes broadcast instantly to all paired phones",{"type":194},{"type":125,"attrs":1708,"content":1709},{"level":127,"textAlign":16},[1710],{"text":1711,"type":131},"Settings Cleanup",{"type":133,"attrs":1713,"content":1714},{"textAlign":16},[1715],{"text":1716,"type":131},"There's now a single unified page for all app-level settings. No restarts needed — everything updates live.",{"type":194},{"type":125,"attrs":1719,"content":1720},{"level":127,"textAlign":16},[1721],{"text":1722,"type":131},"Security & Reliability Fixes",{"type":133,"attrs":1724,"content":1725},{"textAlign":16},[1726],{"text":1727,"type":131},"Several important stability fixes went into this release:",{"type":145,"content":1729},[1730,1737,1744,1751,1758],{"type":148,"content":1731},[1732],{"type":133,"attrs":1733,"content":1734},{"textAlign":16},[1735],{"text":1736,"type":131},"E2EE re-pairing bugs resolved",{"type":148,"content":1738},[1739],{"type":133,"attrs":1740,"content":1741},{"textAlign":16},[1742],{"text":1743,"type":131},"Stale token refresh loops eliminated",{"type":148,"content":1745},[1746],{"type":133,"attrs":1747,"content":1748},{"textAlign":16},[1749],{"text":1750,"type":131},"Relay connection edge cases fixed",{"type":148,"content":1752},[1753],{"type":133,"attrs":1754,"content":1755},{"textAlign":16},[1756],{"text":1757,"type":131},"Desktop offline detection improved",{"type":148,"content":1759},[1760],{"type":133,"attrs":1761,"content":1762},{"textAlign":16},[1763],{"text":1764,"type":131},"WebSocket race conditions patched",{"type":133,"attrs":1766,"content":1767},{"textAlign":16},[1768],{"text":1769,"type":131},"Mobile-to-desktop connections should be significantly more stable across the board.",{"type":194},{"type":238,"content":1772},[1773,1777],{"type":133,"attrs":1774,"content":1775},{"textAlign":16},[1776],{"text":332,"type":131},{"type":145,"content":1778},[1779,1786,1793,1800,1807,1814,1821,1828,1835,1842,1849,1856,1863],{"type":148,"content":1780},[1781],{"type":133,"attrs":1782,"content":1783},{"textAlign":16},[1784],{"text":1785,"type":131},"Streaming Control Center | New",{"type":148,"content":1787},[1788],{"type":133,"attrs":1789,"content":1790},{"textAlign":16},[1791],{"text":1792,"type":131},"Chat Command System | New",{"type":148,"content":1794},[1795],{"type":133,"attrs":1796,"content":1797},{"textAlign":16},[1798],{"text":1799,"type":131},"Focus Window Actions | New",{"type":148,"content":1801},[1802],{"type":133,"attrs":1803,"content":1804},{"textAlign":16},[1805],{"text":1806,"type":131},"HTTP Request Templates | New",{"type":148,"content":1808},[1809],{"type":133,"attrs":1810,"content":1811},{"textAlign":16},[1812],{"text":1813,"type":131},"Webhook Automation (API Management) | New",{"type":148,"content":1815},[1816],{"type":133,"attrs":1817,"content":1818},{"textAlign":16},[1819],{"text":1820,"type":131},"OAuth Login (Google, Discord) | New",{"type":148,"content":1822},[1823],{"type":133,"attrs":1824,"content":1825},{"textAlign":16},[1826],{"text":1827,"type":131},"Multi-Desktop Pairing | New",{"type":148,"content":1829},[1830],{"type":133,"attrs":1831,"content":1832},{"textAlign":16},[1833],{"text":1834,"type":131},"End-to-End Encryption | New",{"type":148,"content":1836},[1837],{"type":133,"attrs":1838,"content":1839},{"textAlign":16},[1840],{"text":1841,"type":131},"Direct + Relay Connections | New",{"type":148,"content":1843},[1844],{"type":133,"attrs":1845,"content":1846},{"textAlign":16},[1847],{"text":1848,"type":131},"Deck Editor Context Menus | New",{"type":148,"content":1850},[1851],{"type":133,"attrs":1852,"content":1853},{"textAlign":16},[1854],{"text":1855,"type":131},"Unified Settings Page | New",{"type":148,"content":1857},[1858],{"type":133,"attrs":1859,"content":1860},{"textAlign":16},[1861],{"text":1862,"type":131},"Performance Improvements | Improved",{"type":148,"content":1864},[1865],{"type":133,"attrs":1866,"content":1867},{"textAlign":16},[1868],{"text":1869,"type":131},"Security & Reliability Fixes | Fixed",{"type":194},{"type":125,"attrs":1872,"content":1873},{"level":127,"textAlign":16},[1874],{"text":1875,"type":131},"What's Next",{"type":133,"attrs":1877,"content":1878},{"textAlign":16},[1879],{"text":1880,"type":131},"Already in progress:",{"type":145,"content":1882},[1883,1890,1897,1904,1911,1918],{"type":148,"content":1884},[1885],{"type":133,"attrs":1886,"content":1887},{"textAlign":16},[1888],{"text":1889,"type":131},"Virtual OBS (cloud-based)",{"type":148,"content":1891},[1892],{"type":133,"attrs":1893,"content":1894},{"textAlign":16},[1895],{"text":1896,"type":131},"Kick OAuth",{"type":148,"content":1898},[1899],{"type":133,"attrs":1900,"content":1901},{"textAlign":16},[1902],{"text":1903,"type":131},"TikTok integration",{"type":148,"content":1905},[1906],{"type":133,"attrs":1907,"content":1908},{"textAlign":16},[1909],{"text":1910,"type":131},"Moderation tools",{"type":148,"content":1912},[1913],{"type":133,"attrs":1914,"content":1915},{"textAlign":16},[1916],{"text":1917,"type":131},"Unified overlay editor",{"type":148,"content":1919},[1920],{"type":133,"attrs":1921,"content":1922},{"textAlign":16},[1923],{"text":1924,"type":131},"Chat analytics",{"type":194},{"type":133,"attrs":1927,"content":1928},{"textAlign":16},[1929],{"text":1930,"type":131},"Thanks to everyone who tested builds, reported bugs, and pushed for improvements. Your feedback shaped almost everything in this release.",{"type":133,"attrs":1932,"content":1933},{"textAlign":16},[1934,1936,1940],{"text":1935,"type":131},"Update to 0.6.5 from the VortiDeck app or download from ",{"text":397,"type":131,"marks":1937},[1938],{"type":400,"attrs":1939},{"href":402,"uuid":16,"anchor":16,"target":16,"linktype":403},{"text":405,"type":131},{"name":58,"created_at":59,"published_at":60,"updated_at":61,"id":62,"uuid":63,"content":1942,"slug":67,"full_slug":68,"sort_by_date":16,"position":69,"tag_list":1943,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":71,"first_published_at":72,"release_id":16,"lang":23,"path":16,"alternates":1944,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":65,"name":66,"component":13},[],[],"After months of development and countless hours of work, we're thrilled to announce VortiDeck 0.6.5 — our biggest update ever. ","release-0-6-5","blog\u002Farticle\u002Frelease-0-6-5",[],"aea98f3f-c805-4256-abaa-f897834d19e4","2025-11-24T02:22:45.314Z",[],{"name":1953,"created_at":1954,"published_at":1955,"updated_at":1956,"id":1957,"uuid":1958,"content":1959,"slug":2462,"full_slug":2463,"sort_by_date":16,"position":85,"tag_list":2464,"is_startpage":19,"parent_id":415,"meta_data":16,"group_id":2465,"first_published_at":2466,"release_id":16,"lang":23,"path":16,"alternates":2467,"default_full_slug":16,"translated_slugs":16},"Short Status Update","2025-06-15T01:16:04.609Z","2026-03-04T00:06:03.574Z","2026-03-04T00:06:03.589Z",687880102,"daaee183-c780-4b9e-b137-2a3da051dc55",{"_uid":1960,"image":1961,"title":1962,"author":1963,"content":1967,"category":2457,"component":410,"description":2461},"e73a439a-d829-4af1-910a-db7f05be18d2","\u002F\u002Fa.storyblok.com\u002Ff\u002F332218\u002F1376x768\u002F24f0627d0b\u002Fvortideck_status_update_rebuilding_ce0578150e.jpeg","Short Status Update ",{"name":103,"created_at":104,"published_at":105,"updated_at":106,"id":107,"uuid":108,"content":1964,"slug":114,"full_slug":115,"sort_by_date":16,"position":85,"tag_list":1965,"is_startpage":19,"parent_id":117,"meta_data":16,"group_id":118,"first_published_at":105,"release_id":16,"lang":23,"path":16,"alternates":1966,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":110,"name":103,"avatar":111,"component":112,"description":113},[],[],{"type":122,"content":1968},[1969,1974,1979,1984,1989,1990,1995,2000,2005,2010,2011,2016,2021,2030,2039,2044,2101,2108,2109,2114,2121,2126,2172,2179,2180,2185,2190,2213,2214,2219,2224,2270,2277,2278,2283,2288,2325,2326,2363,2364,2369,2374,2379,2384,2385],{"type":125,"attrs":1970,"content":1971},{"level":438,"textAlign":16},[1972],{"text":1973,"type":131},"VortiDeck Status Update — We're Alive, and Building Something Big",{"type":133,"attrs":1975,"content":1976},{"textAlign":16},[1977],{"text":1978,"type":131},"We've been quiet. Too quiet. And you deserve to know why.",{"type":133,"attrs":1980,"content":1981},{"textAlign":16},[1982],{"text":1983,"type":131},"First — we're sorry. You've been waiting for updates, bug fixes, and features, and we went radio silent. That's not who we want to be, and we're committed to better communication from here on out.",{"type":133,"attrs":1985,"content":1986},{"textAlign":16},[1987],{"text":1988,"type":131},"So let's talk about what's been happening behind the scenes.",{"type":194},{"type":125,"attrs":1991,"content":1992},{"level":127,"textAlign":16},[1993],{"text":1994,"type":131},"What Happened",{"type":133,"attrs":1996,"content":1997},{"textAlign":16},[1998],{"text":1999,"type":131},"We didn't just go dark. We went deep.",{"type":133,"attrs":2001,"content":2002},{"textAlign":16},[2003],{"text":2004,"type":131},"For the past several months, we've been rebuilding VortiDeck from the ground up — not patching things, not adding features on top of an aging foundation, but reimagining the entire architecture as a true automation platform.",{"type":133,"attrs":2006,"content":2007},{"textAlign":16},[2008],{"text":2009,"type":131},"This wasn't a decision we took lightly. But the old codebase had hit its ceiling. To build what we actually want VortiDeck to become, we needed a new foundation.",{"type":194},{"type":125,"attrs":2012,"content":2013},{"level":127,"textAlign":16},[2014],{"text":2015,"type":131},"From App to Platform",{"type":133,"attrs":2017,"content":2018},{"textAlign":16},[2019],{"text":2020,"type":131},"The short version:",{"type":133,"attrs":2022,"content":2023},{"textAlign":16},[2024,2028],{"text":2025,"type":131,"marks":2026},"VortiDeck 1.0",[2027],{"type":157},{"text":2029,"type":131}," was a desktop app. A good one — but still just an app.",{"type":133,"attrs":2031,"content":2032},{"textAlign":16},[2033,2037],{"text":2034,"type":131,"marks":2035},"VortiDeck 2.0",[2036],{"type":157},{"text":2038,"type":131}," is an extensible automation platform. It's designed to grow with you, not around you.",{"type":133,"attrs":2040,"content":2041},{"textAlign":16},[2042],{"text":2043,"type":131},"Here's what that means in practice:",{"type":145,"content":2045},[2046,2057,2068,2079,2090],{"type":148,"content":2047},[2048],{"type":133,"attrs":2049,"content":2050},{"textAlign":16},[2051,2055],{"text":2052,"type":131,"marks":2053},"Headless architecture",[2054],{"type":157},{"text":2056,"type":131}," — Run VortiDeck anywhere, not just on a desktop with a screen. Servers, background services, headless environments — it all works.",{"type":148,"content":2058},[2059],{"type":133,"attrs":2060,"content":2061},{"textAlign":16},[2062,2066],{"text":2063,"type":131,"marks":2064},"Plugin ecosystem",[2065],{"type":157},{"text":2067,"type":131}," — Build your own extensions. The plugin system gives you full customization power with a proper SDK, permissions model, and isolation.",{"type":148,"content":2069},[2070],{"type":133,"attrs":2071,"content":2072},{"textAlign":16},[2073,2077],{"text":2074,"type":131,"marks":2075},"Performance rewrite",[2076],{"type":157},{"text":2078,"type":131}," — Everything is faster. Startup, execution, connections, UI rendering — across the board.",{"type":148,"content":2080},[2081],{"type":133,"attrs":2082,"content":2083},{"textAlign":16},[2084,2088],{"text":2085,"type":131,"marks":2086},"Enterprise-grade security",[2087],{"type":157},{"text":2089,"type":131}," — Proper permissions, roles, and plugin sandboxing. Built for teams, not just solo users.",{"type":148,"content":2091},[2092],{"type":133,"attrs":2093,"content":2094},{"textAlign":16},[2095,2099],{"text":2096,"type":131,"marks":2097},"Flow system",[2098],{"type":157},{"text":2100,"type":131}," — A powerful visual automation builder with AI-powered nodes. Connect triggers, actions, conditions, and data transformations in a drag-and-drop canvas.",{"type":238,"content":2102},[2103],{"type":133,"attrs":2104,"content":2105},{"textAlign":16},[2106],{"text":2107,"type":131},"[callout variant=\"info\" title=\"Think bigger\"] This isn't just a version bump. Think of it like Shopify turning from a store template into a commerce platform, or WordPress evolving from a blogging tool into a content platform. VortiDeck is becoming the platform for streaming and desktop automation — where what matters isn't what we built, but what you can create with it.",{"type":194},{"type":125,"attrs":2110,"content":2111},{"level":127,"textAlign":16},[2112],{"text":2113,"type":131},"When Can You Try It",{"type":133,"attrs":2115,"content":2116},{"textAlign":16},[2117],{"text":2118,"type":131,"marks":2119},"Target release: Late June - July 2025.",[2120],{"type":157},{"type":133,"attrs":2122,"content":2123},{"textAlign":16},[2124],{"text":2125,"type":131},"We know that sounds far away. Here's why we're taking our time:",{"type":145,"content":2127},[2128,2139,2150,2161],{"type":148,"content":2129},[2130],{"type":133,"attrs":2131,"content":2132},{"textAlign":16},[2133,2137],{"text":2134,"type":131,"marks":2135},"No breaking changes",[2136],{"type":157},{"text":2138,"type":131}," — your existing setup will just work",{"type":148,"content":2140},[2141],{"type":133,"attrs":2142,"content":2143},{"textAlign":16},[2144,2148],{"text":2145,"type":131,"marks":2146},"Automatic migration",[2147],{"type":157},{"text":2149,"type":131}," — zero manual steps, zero friction",{"type":148,"content":2151},[2152],{"type":133,"attrs":2153,"content":2154},{"textAlign":16},[2155,2159],{"text":2156,"type":131,"marks":2157},"Full documentation",[2158],{"type":157},{"text":2160,"type":131}," — tutorials, SDK docs, and migration guides ship with the release",{"type":148,"content":2162},[2163],{"type":133,"attrs":2164,"content":2165},{"textAlign":16},[2166,2170],{"text":2167,"type":131,"marks":2168},"Dev SDK",[2169],{"type":157},{"text":2171,"type":131}," — for plugins, automation, and custom workflows",{"type":238,"content":2173},[2174],{"type":133,"attrs":2175,"content":2176},{"textAlign":16},[2177],{"text":2178,"type":131},"[callout variant=\"tip\" title=\"Still in beta\"] VortiDeck 2.0 launches as beta — but it's beta done right. We're not shipping half-finished features. Every piece that ships will be stable, documented, and ready to use.",{"type":194},{"type":125,"attrs":2181,"content":2182},{"level":127,"textAlign":16},[2183],{"text":2184,"type":131},"What It Means for Current Users",{"type":133,"attrs":2186,"content":2187},{"textAlign":16},[2188],{"text":2189,"type":131},"If you're already using VortiDeck, nothing breaks. Your existing setup stays intact:",{"type":145,"content":2191},[2192,2199,2206],{"type":148,"content":2193},[2194],{"type":133,"attrs":2195,"content":2196},{"textAlign":16},[2197],{"text":2198,"type":131},"Migration is fully automatic",{"type":148,"content":2200},[2201],{"type":133,"attrs":2202,"content":2203},{"textAlign":16},[2204],{"text":2205,"type":131},"OBS, Discord, and other integrations remain compatible",{"type":148,"content":2207},[2208],{"type":133,"attrs":2209,"content":2210},{"textAlign":16},[2211],{"text":2212,"type":131},"Performance is drastically better — you'll notice immediately",{"type":194},{"type":125,"attrs":2215,"content":2216},{"level":127,"textAlign":16},[2217],{"text":2218,"type":131},"What It Means for Developers",{"type":133,"attrs":2220,"content":2221},{"textAlign":16},[2222],{"text":2223,"type":131},"If you want to build on top of VortiDeck, 2.0 is where things get interesting:",{"type":145,"content":2225},[2226,2237,2248,2259],{"type":148,"content":2227},[2228],{"type":133,"attrs":2229,"content":2230},{"textAlign":16},[2231,2235],{"text":2232,"type":131,"marks":2233},"Plugin system",[2234],{"type":157},{"text":2236,"type":131}," with full SDK, permissions, and isolation",{"type":148,"content":2238},[2239],{"type":133,"attrs":2240,"content":2241},{"textAlign":16},[2242,2246],{"text":2243,"type":131,"marks":2244},"Headless mode",[2245],{"type":157},{"text":2247,"type":131}," for server and automation environments",{"type":148,"content":2249},[2250],{"type":133,"attrs":2251,"content":2252},{"textAlign":16},[2253,2257],{"text":2254,"type":131,"marks":2255},"API access",[2256],{"type":157},{"text":2258,"type":131}," for tight integration with your own tools",{"type":148,"content":2260},[2261],{"type":133,"attrs":2262,"content":2263},{"textAlign":16},[2264,2268],{"text":2265,"type":131,"marks":2266},"Enterprise features",[2267],{"type":157},{"text":2269,"type":131}," ready for professional workflows",{"type":238,"content":2271},[2272],{"type":133,"attrs":2273,"content":2274},{"textAlign":16},[2275],{"text":2276,"type":131},"[callout variant=\"warning\" title=\"Early access\"] If you're a developer who wants early access to the plugin SDK, reach out. We're quietly onboarding beta builders ahead of the public release.",{"type":194},{"type":125,"attrs":2279,"content":2280},{"level":127,"textAlign":16},[2281],{"text":2282,"type":131},"Full Technical Blog Coming at Launch",{"type":133,"attrs":2284,"content":2285},{"textAlign":16},[2286],{"text":2287,"type":131},"When 2.0 ships, we'll publish a full technical breakdown covering:",{"type":145,"content":2289},[2290,2297,2304,2311,2318],{"type":148,"content":2291},[2292],{"type":133,"attrs":2293,"content":2294},{"textAlign":16},[2295],{"text":2296,"type":131},"Feature deep-dives",{"type":148,"content":2298},[2299],{"type":133,"attrs":2300,"content":2301},{"textAlign":16},[2302],{"text":2303,"type":131},"Migration guide",{"type":148,"content":2305},[2306],{"type":133,"attrs":2307,"content":2308},{"textAlign":16},[2309],{"text":2310,"type":131},"Plugin SDK documentation",{"type":148,"content":2312},[2313],{"type":133,"attrs":2314,"content":2315},{"textAlign":16},[2316],{"text":2317,"type":131},"Performance benchmarks",{"type":148,"content":2319},[2320],{"type":133,"attrs":2321,"content":2322},{"textAlign":16},[2323],{"text":2324,"type":131},"The full roadmap for what comes after",{"type":194},{"type":238,"content":2327},[2328,2333],{"type":133,"attrs":2329,"content":2330},{"textAlign":16},[2331],{"text":2332,"type":131},"[contact_card title=\"We're Still Here\"]",{"type":145,"content":2334},[2335,2342,2349,2356],{"type":148,"content":2336},[2337],{"type":133,"attrs":2338,"content":2339},{"textAlign":16},[2340],{"text":2341,"type":131},"Email | alexi.pawelec@gmail.com",{"type":148,"content":2343},[2344],{"type":133,"attrs":2345,"content":2346},{"textAlign":16},[2347],{"text":2348,"type":131},"Discord | Join our server for active dev chats",{"type":148,"content":2350},[2351],{"type":133,"attrs":2352,"content":2353},{"textAlign":16},[2354],{"text":2355,"type":131},"Bug reports | Keep them coming — we're logging everything",{"type":148,"content":2357},[2358],{"type":133,"attrs":2359,"content":2360},{"textAlign":16},[2361],{"text":2362,"type":131},"Feature requests | Still tracking every suggestion",{"type":194},{"type":125,"attrs":2365,"content":2366},{"level":127,"textAlign":16},[2367],{"text":2368,"type":131},"The Bottom Line",{"type":133,"attrs":2370,"content":2371},{"textAlign":16},[2372],{"text":2373,"type":131},"We could've patched things. We chose to rebuild them right.",{"type":133,"attrs":2375,"content":2376},{"textAlign":16},[2377],{"text":2378,"type":131},"Because you deserve a platform that grows with you — not one that holds you back. This isn't just VortiDeck 2.0. This is the beginning of something much bigger.",{"type":133,"attrs":2380,"content":2381},{"textAlign":16},[2382],{"text":2383,"type":131},"Thank you for sticking with us.",{"type":194},{"type":238,"content":2386},[2387,2392],{"type":133,"attrs":2388,"content":2389},{"textAlign":16},[2390],{"text":2391,"type":131},"[release_summary title=\"What's Coming\"]",{"type":145,"content":2393},[2394,2401,2408,2415,2422,2429,2436,2443,2450],{"type":148,"content":2395},[2396],{"type":133,"attrs":2397,"content":2398},{"textAlign":16},[2399],{"text":2400,"type":131},"Headless Architecture | New",{"type":148,"content":2402},[2403],{"type":133,"attrs":2404,"content":2405},{"textAlign":16},[2406],{"text":2407,"type":131},"Plugin Ecosystem & SDK | New",{"type":148,"content":2409},[2410],{"type":133,"attrs":2411,"content":2412},{"textAlign":16},[2413],{"text":2414,"type":131},"Flow System (Visual Automation) | New",{"type":148,"content":2416},[2417],{"type":133,"attrs":2418,"content":2419},{"textAlign":16},[2420],{"text":2421,"type":131},"Performance Rewrite | Improved",{"type":148,"content":2423},[2424],{"type":133,"attrs":2425,"content":2426},{"textAlign":16},[2427],{"text":2428,"type":131},"Enterprise Security & Roles | New",{"type":148,"content":2430},[2431],{"type":133,"attrs":2432,"content":2433},{"textAlign":16},[2434],{"text":2435,"type":131},"Automatic Migration | New",{"type":148,"content":2437},[2438],{"type":133,"attrs":2439,"content":2440},{"textAlign":16},[2441],{"text":2442,"type":131},"Full Documentation & Tutorials | New",{"type":148,"content":2444},[2445],{"type":133,"attrs":2446,"content":2447},{"textAlign":16},[2448],{"text":2449,"type":131},"API Access | New",{"type":148,"content":2451},[2452],{"type":133,"attrs":2453,"content":2454},{"textAlign":16},[2455],{"text":2456,"type":131},"Target Release: June-July 2025 | Coming next",{"name":75,"created_at":76,"published_at":77,"updated_at":78,"id":79,"uuid":80,"content":2458,"slug":83,"full_slug":84,"sort_by_date":16,"position":85,"tag_list":2459,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":87,"first_published_at":88,"release_id":16,"lang":23,"path":16,"alternates":2460,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":82,"name":75,"component":13},[],[],"Yes, we’ve been quiet.\nToo quiet.\nAnd you deserve to know why.","short-status-update","blog\u002Farticle\u002Fshort-status-update",[],"932f7a1a-56e9-4d44-b096-9cc34c619a55","2025-06-15T01:24:58.718Z",[],{"name":2469,"created_at":2470,"published_at":2471,"updated_at":2472,"id":2473,"uuid":2474,"content":2475,"slug":3253,"full_slug":3254,"sort_by_date":16,"position":3255,"tag_list":3256,"is_startpage":19,"parent_id":415,"meta_data":16,"group_id":3257,"first_published_at":3258,"release_id":16,"lang":23,"path":16,"alternates":3259,"default_full_slug":16,"translated_slugs":16},"Introducing Flow Builder: Visual Automation for Everyone","2025-04-15T19:18:29.747Z","2026-03-02T03:15:03.420Z","2026-03-02T03:15:03.440Z",656128839,"01deebfe-b3a2-4541-b1c5-03203b582014",{"_uid":2476,"image":2477,"title":2478,"author":2479,"content":2483,"category":3248,"component":410,"description":3252},"b06681c8-2528-42bf-acf1-2bfad56d4179","\u002F\u002Fa.storyblok.com\u002Ff\u002F332218\u002F2493x1276\u002F5b7abd9168\u002Fzrzut-ekranu-2025-05-26-022234.png","✨ Introducing Flow Builder: Visual Automation for Everyone",{"name":103,"created_at":104,"published_at":105,"updated_at":106,"id":107,"uuid":108,"content":2480,"slug":114,"full_slug":115,"sort_by_date":16,"position":85,"tag_list":2481,"is_startpage":19,"parent_id":117,"meta_data":16,"group_id":118,"first_published_at":105,"release_id":16,"lang":23,"path":16,"alternates":2482,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":110,"name":103,"avatar":111,"component":112,"description":113},[],[],{"type":122,"content":2484},[2485,2490,2495,2500,2501,2506,2511,2557,2562,2563,2568,2573,2578,2613,2618,2623,2628,2665,2672,2677,2682,2683,2688,2693,2698,2755,2760,2765,2811,2816,2821,2830,2839,2844,2849,2895,2896,2901,2906,2912,2917,2918,2923,2928,2933,2938,2943,2948,2953,2958,2963,2968,2975,2976,2981,2986,3036,3041,3085,3164,3165,3170,3227,3228,3233,3238,3243],{"type":125,"attrs":2486,"content":2487},{"level":438,"textAlign":16},[2488],{"text":2489,"type":131},"VortiDeck Flow Builder — Visual, AI-Powered Automation",{"type":133,"attrs":2491,"content":2492},{"textAlign":16},[2493],{"text":2494,"type":131},"Flow Builder is VortiDeck's visual workflow designer. It turns complex automation into a drag-and-drop canvas where you connect nodes — triggers, AI decisions, tool executions, and control logic — into workflows that actually do things.",{"type":133,"attrs":2496,"content":2497},{"textAlign":16},[2498],{"text":2499,"type":131},"Think of it as building with intelligent LEGO blocks. You wire together what should happen, when it should happen, and let AI handle the parts that need to think.",{"type":194},{"type":125,"attrs":2502,"content":2503},{"level":127,"textAlign":16},[2504],{"text":2505,"type":131},"What Flow Builder Does",{"type":133,"attrs":2507,"content":2508},{"textAlign":16},[2509],{"text":2510,"type":131},"At its core, Flow Builder lets you:",{"type":145,"content":2512},[2513,2524,2535,2546],{"type":148,"content":2514},[2515],{"type":133,"attrs":2516,"content":2517},{"textAlign":16},[2518,2522],{"text":2519,"type":131,"marks":2520},"Trigger",[2521],{"type":157},{"text":2523,"type":131}," workflows from button presses, webhooks, file changes, timers, or MQTT events",{"type":148,"content":2525},[2526],{"type":133,"attrs":2527,"content":2528},{"textAlign":16},[2529,2533],{"text":2530,"type":131,"marks":2531},"Think",[2532],{"type":157},{"text":2534,"type":131}," using AI nodes that reason through decisions and adapt to context",{"type":148,"content":2536},[2537],{"type":133,"attrs":2538,"content":2539},{"textAlign":16},[2540,2544],{"text":2541,"type":131,"marks":2542},"Execute",[2543],{"type":157},{"text":2545,"type":131}," tools — OBS controls, system scripts, API calls, cloud integrations, and more",{"type":148,"content":2547},[2548],{"type":133,"attrs":2549,"content":2550},{"textAlign":16},[2551,2555],{"text":2552,"type":131,"marks":2553},"Chain",[2554],{"type":157},{"text":2556,"type":131}," everything together visually on a canvas with typed connections",{"type":133,"attrs":2558,"content":2559},{"textAlign":16},[2560],{"text":2561,"type":131},"Unlike traditional automation that follows rigid if\u002Fthen rules, Flow Builder lets you combine the reliability of direct tool execution with the intelligence of AI decision-making — in the same workflow.",{"type":194},{"type":125,"attrs":2564,"content":2565},{"level":127,"textAlign":16},[2566],{"text":2567,"type":131},"What Makes It Different",{"type":125,"attrs":2569,"content":2570},{"level":140,"textAlign":16},[2571],{"text":2572,"type":131},"Dual execution architecture",{"type":133,"attrs":2574,"content":2575},{"textAlign":16},[2576],{"text":2577,"type":131},"Most automation tools give you one mode: either scripted steps or AI agents. VortiDeck gives you both, and lets you mix them:",{"type":145,"content":2579},[2580,2591,2602],{"type":148,"content":2581},[2582],{"type":133,"attrs":2583,"content":2584},{"textAlign":16},[2585,2589],{"text":2586,"type":131,"marks":2587},"Direct tool execution",[2588],{"type":157},{"text":2590,"type":131}," — fast, predictable, zero latency. The node runs the tool exactly as configured.",{"type":148,"content":2592},[2593],{"type":133,"attrs":2594,"content":2595},{"textAlign":16},[2596,2600],{"text":2597,"type":131,"marks":2598},"AI-coordinated execution",[2599],{"type":157},{"text":2601,"type":131}," — the node calls an AI model that decides which tools to use and in what order.",{"type":148,"content":2603},[2604],{"type":133,"attrs":2605,"content":2606},{"textAlign":16},[2607,2611],{"text":2608,"type":131,"marks":2609},"Hybrid workflows",[2610],{"type":157},{"text":2612,"type":131}," — use direct execution for the critical path, AI for the decision points. Same flow, same canvas.",{"type":125,"attrs":2614,"content":2615},{"level":140,"textAlign":16},[2616],{"text":2617,"type":131},"Per-node AI model selection",{"type":133,"attrs":2619,"content":2620},{"textAlign":16},[2621],{"text":2622,"type":131},"Every AI node in your flow can use a different model. Put GPT-3.5 on the quick classification step. Put GPT-4 on the complex reasoning step. Optimize each node independently for cost, speed, and intelligence.",{"type":133,"attrs":2624,"content":2625},{"textAlign":16},[2626],{"text":2627,"type":131},"Supported models:",{"type":145,"content":2629},[2630,2637,2644,2651,2658],{"type":148,"content":2631},[2632],{"type":133,"attrs":2633,"content":2634},{"textAlign":16},[2635],{"text":2636,"type":131},"GPT-3.5 Turbo — fast and affordable",{"type":148,"content":2638},[2639],{"type":133,"attrs":2640,"content":2641},{"textAlign":16},[2642],{"text":2643,"type":131},"GPT-4 \u002F GPT-4 Turbo — for complex reasoning",{"type":148,"content":2645},[2646],{"type":133,"attrs":2647,"content":2648},{"textAlign":16},[2649],{"text":2650,"type":131},"Any OpenAI-compatible API",{"type":148,"content":2652},[2653],{"type":133,"attrs":2654,"content":2655},{"textAlign":16},[2656],{"text":2657,"type":131},"Self-hosted models via Ollama and LocalAI (coming soon)",{"type":148,"content":2659},[2660],{"type":133,"attrs":2661,"content":2662},{"textAlign":16},[2663],{"text":2664,"type":131},"Anthropic Claude, Google Gemini (planned)",{"type":238,"content":2666},[2667],{"type":133,"attrs":2668,"content":2669},{"textAlign":16},[2670],{"text":2671,"type":131},"[callout variant=\"tip\" title=\"Cost optimization\"] Most workflows don't need GPT-4 on every step. By mixing models per node, you can cut API costs dramatically while keeping intelligence where it matters.",{"type":125,"attrs":2673,"content":2674},{"level":140,"textAlign":16},[2675],{"text":2676,"type":131},"AI augments, doesn't replace",{"type":133,"attrs":2678,"content":2679},{"textAlign":16},[2680],{"text":2681,"type":131},"Flow Builder follows a simple philosophy: you design the structure, AI handles the dynamic decisions, tools execute the critical actions, and you stay in control. AI is a tool in your workflow, not the workflow itself.",{"type":194},{"type":125,"attrs":2684,"content":2685},{"level":127,"textAlign":16},[2686],{"text":2687,"type":131},"The Building Blocks",{"type":125,"attrs":2689,"content":2690},{"level":140,"textAlign":16},[2691],{"text":2692,"type":131},"Trigger nodes",{"type":133,"attrs":2694,"content":2695},{"textAlign":16},[2696],{"text":2697,"type":131},"Every flow starts with a trigger — the event that kicks things off:",{"type":145,"content":2699},[2700,2711,2722,2733,2744],{"type":148,"content":2701},[2702],{"type":133,"attrs":2703,"content":2704},{"textAlign":16},[2705,2709],{"text":2706,"type":131,"marks":2707},"Webhook",[2708],{"type":157},{"text":2710,"type":131}," — receive data from external services",{"type":148,"content":2712},[2713],{"type":133,"attrs":2714,"content":2715},{"textAlign":16},[2716,2720],{"text":2717,"type":131,"marks":2718},"Button",[2719],{"type":157},{"text":2721,"type":131}," — press a deck button to start the flow",{"type":148,"content":2723},[2724],{"type":133,"attrs":2725,"content":2726},{"textAlign":16},[2727,2731],{"text":2728,"type":131,"marks":2729},"Timer",[2730],{"type":157},{"text":2732,"type":131}," — run on a schedule (cron or interval)",{"type":148,"content":2734},[2735],{"type":133,"attrs":2736,"content":2737},{"textAlign":16},[2738,2742],{"text":2739,"type":131,"marks":2740},"File System",[2741],{"type":157},{"text":2743,"type":131}," — react to file changes, creations, or deletions",{"type":148,"content":2745},[2746],{"type":133,"attrs":2747,"content":2748},{"textAlign":16},[2749,2753],{"text":2750,"type":131,"marks":2751},"MQTT",[2752],{"type":157},{"text":2754,"type":131}," — subscribe to IoT message topics",{"type":125,"attrs":2756,"content":2757},{"level":140,"textAlign":16},[2758],{"text":2759,"type":131},"AI nodes",{"type":133,"attrs":2761,"content":2762},{"textAlign":16},[2763],{"text":2764,"type":131},"These are where intelligence lives in your flow:",{"type":145,"content":2766},[2767,2778,2789,2800],{"type":148,"content":2768},[2769],{"type":133,"attrs":2770,"content":2771},{"textAlign":16},[2772,2776],{"text":2773,"type":131,"marks":2774},"AI Agent",[2775],{"type":157},{"text":2777,"type":131}," — fully autonomous; give it a goal and tools, it figures out the rest",{"type":148,"content":2779},[2780],{"type":133,"attrs":2781,"content":2782},{"textAlign":16},[2783,2787],{"text":2784,"type":131,"marks":2785},"AI Orchestrator",[2786],{"type":157},{"text":2788,"type":131}," — coordinates multiple tools in sequence based on context",{"type":148,"content":2790},[2791],{"type":133,"attrs":2792,"content":2793},{"textAlign":16},[2794,2798],{"text":2795,"type":131,"marks":2796},"AI Text Generator",[2797],{"type":157},{"text":2799,"type":131}," — pure text generation for content, summaries, responses",{"type":148,"content":2801},[2802],{"type":133,"attrs":2803,"content":2804},{"textAlign":16},[2805,2809],{"text":2806,"type":131,"marks":2807},"AI Strict Executor",[2808],{"type":157},{"text":2810,"type":131}," (coming soon) — constrained execution that follows exact tool schemas",{"type":125,"attrs":2812,"content":2813},{"level":140,"textAlign":16},[2814],{"text":2815,"type":131},"Tool nodes",{"type":133,"attrs":2817,"content":2818},{"textAlign":16},[2819],{"text":2820,"type":131},"The things that actually get done:",{"type":133,"attrs":2822,"content":2823},{"textAlign":16},[2824,2828],{"text":2825,"type":131,"marks":2826},"System tools",[2827],{"type":157},{"text":2829,"type":131}," — audio control, file operations, HTTP requests, system commands, data processing",{"type":133,"attrs":2831,"content":2832},{"textAlign":16},[2833,2837],{"text":2834,"type":131,"marks":2835},"MCP tools",[2836],{"type":157},{"text":2838,"type":131}," (extensible via Model Context Protocol) — OBS Studio, Discord, Twitch, Microsoft To Do, cloud services (AWS, Azure, GCP), databases, and custom integrations",{"type":125,"attrs":2840,"content":2841},{"level":140,"textAlign":16},[2842],{"text":2843,"type":131},"Control flow nodes",{"type":133,"attrs":2845,"content":2846},{"textAlign":16},[2847],{"text":2848,"type":131},"Logic that shapes how your workflow runs:",{"type":145,"content":2850},[2851,2862,2873,2884],{"type":148,"content":2852},[2853],{"type":133,"attrs":2854,"content":2855},{"textAlign":16},[2856,2860],{"text":2857,"type":131,"marks":2858},"Delay",[2859],{"type":157},{"text":2861,"type":131}," — wait before continuing",{"type":148,"content":2863},[2864],{"type":133,"attrs":2865,"content":2866},{"textAlign":16},[2867,2871],{"text":2868,"type":131,"marks":2869},"Branch",[2870],{"type":157},{"text":2872,"type":131}," — conditional paths based on data",{"type":148,"content":2874},[2875],{"type":133,"attrs":2876,"content":2877},{"textAlign":16},[2878,2882],{"text":2879,"type":131,"marks":2880},"Variables",[2881],{"type":157},{"text":2883,"type":131}," — store and pass data between nodes",{"type":148,"content":2885},[2886],{"type":133,"attrs":2887,"content":2888},{"textAlign":16},[2889,2893],{"text":2890,"type":131,"marks":2891},"Loops",[2892],{"type":157},{"text":2894,"type":131}," — repeat operations over collections",{"type":194},{"type":125,"attrs":2897,"content":2898},{"level":127,"textAlign":16},[2899],{"text":2900,"type":131},"How It Works Under the Hood",{"type":133,"attrs":2902,"content":2903},{"textAlign":16},[2904],{"text":2905,"type":131},"The execution pipeline runs through three layers:",{"type":2907,"attrs":2908,"content":2909},"code_block",{"class":16},[2910],{"text":2911,"type":131},"graph TD\n    A[Frontend - Vue.js] --> B[Tauri Commands]\n    B --> C[Flow Executor - Rust]\n    C --> D[Direct Tool Execution]\n    C --> E[AI-Coordinated Execution]\n    D --> F[Unified Tool Executor]\n    E --> F\n    F --> G[System Tools]\n    F --> H[MCP Tools]\n    F --> I[Custom Integrations]",{"type":133,"attrs":2913,"content":2914},{"textAlign":16},[2915],{"text":2916,"type":131},"The Rust-based executor handles scheduling, parallel execution, error recovery, and real-time status updates. Both execution modes feed into the same unified tool system — so an AI node and a direct node can call the exact same tools.",{"type":194},{"type":125,"attrs":2919,"content":2920},{"level":127,"textAlign":16},[2921],{"text":2922,"type":131},"Real-World Examples",{"type":125,"attrs":2924,"content":2925},{"level":140,"textAlign":16},[2926],{"text":2927,"type":131},"Streamer go-live automation",{"type":133,"attrs":2929,"content":2930},{"textAlign":16},[2931],{"text":2932,"type":131},"Press \"Go Live\" → AI Orchestrator checks your setup → switches OBS to starting scene → posts in Discord → waits 30 seconds → transitions to main scene → starts intro music.",{"type":133,"attrs":2934,"content":2935},{"textAlign":16},[2936],{"text":2937,"type":131},"One button. Everything happens.",{"type":125,"attrs":2939,"content":2940},{"level":140,"textAlign":16},[2941],{"text":2942,"type":131},"Smart content pipeline",{"type":133,"attrs":2944,"content":2945},{"textAlign":16},[2946],{"text":2947,"type":131},"A new file appears in your uploads folder → AI Agent analyzes the content → Text Generator writes a description → API node uploads to your platform → Discord notification goes out to your team.",{"type":125,"attrs":2949,"content":2950},{"level":140,"textAlign":16},[2951],{"text":2952,"type":131},"System monitoring",{"type":133,"attrs":2954,"content":2955},{"textAlign":16},[2956],{"text":2957,"type":131},"Timer fires every 5 minutes → AI Orchestrator runs system diagnostics → Branch node checks if anything's wrong → if yes: cleanup script + email alert → if no: log entry and move on.",{"type":125,"attrs":2959,"content":2960},{"level":140,"textAlign":16},[2961],{"text":2962,"type":131},"Business process",{"type":133,"attrs":2964,"content":2965},{"textAlign":16},[2966],{"text":2967,"type":131},"Webhook receives a customer request → AI classifies the type → Branch routes to the right handler → task gets created in your project tool → confirmation email sent → team gets notified.",{"type":238,"content":2969},[2970],{"type":133,"attrs":2971,"content":2972},{"textAlign":16},[2973],{"text":2974,"type":131},"[callout variant=\"info\" title=\"Start simple, add AI later\"] You don't need AI in every flow. Start with direct tool execution — triggers, actions, branches. Add AI nodes only where you need dynamic decision-making. The best workflows use AI surgically, not everywhere.",{"type":194},{"type":125,"attrs":2977,"content":2978},{"level":127,"textAlign":16},[2979],{"text":2980,"type":131},"Current Status",{"type":125,"attrs":2982,"content":2983},{"level":140,"textAlign":16},[2984],{"text":2985,"type":131},"Shipped",{"type":145,"content":2987},[2988,2995,3002,3008,3015,3022,3029],{"type":148,"content":2989},[2990],{"type":133,"attrs":2991,"content":2992},{"textAlign":16},[2993],{"text":2994,"type":131},"Visual flow editor with drag-and-drop canvas",{"type":148,"content":2996},[2997],{"type":133,"attrs":2998,"content":2999},{"textAlign":16},[3000],{"text":3001,"type":131},"Dual execution system (direct + AI-coordinated)",{"type":148,"content":3003},[3004],{"type":133,"attrs":3005,"content":3006},{"textAlign":16},[3007],{"text":2617,"type":131},{"type":148,"content":3009},[3010],{"type":133,"attrs":3011,"content":3012},{"textAlign":16},[3013],{"text":3014,"type":131},"Unified tool system with MCP integration",{"type":148,"content":3016},[3017],{"type":133,"attrs":3018,"content":3019},{"textAlign":16},[3020],{"text":3021,"type":131},"Real-time execution monitoring",{"type":148,"content":3023},[3024],{"type":133,"attrs":3025,"content":3026},{"textAlign":16},[3027],{"text":3028,"type":131},"Type-safe port connections",{"type":148,"content":3030},[3031],{"type":133,"attrs":3032,"content":3033},{"textAlign":16},[3034],{"text":3035,"type":131},"Multi-node selection and bulk operations",{"type":125,"attrs":3037,"content":3038},{"level":140,"textAlign":16},[3039],{"text":3040,"type":131},"In development",{"type":145,"content":3042},[3043,3050,3057,3064,3071,3078],{"type":148,"content":3044},[3045],{"type":133,"attrs":3046,"content":3047},{"textAlign":16},[3048],{"text":3049,"type":131},"Right-click context menus and snap-to-grid",{"type":148,"content":3051},[3052],{"type":133,"attrs":3053,"content":3054},{"textAlign":16},[3055],{"text":3056,"type":131},"Visual debugger and execution replay",{"type":148,"content":3058},[3059],{"type":133,"attrs":3060,"content":3061},{"textAlign":16},[3062],{"text":3063,"type":131},"Minimap and canvas navigation",{"type":148,"content":3065},[3066],{"type":133,"attrs":3067,"content":3068},{"textAlign":16},[3069],{"text":3070,"type":131},"Node grouping and sub-flows",{"type":148,"content":3072},[3073],{"type":133,"attrs":3074,"content":3075},{"textAlign":16},[3076],{"text":3077,"type":131},"Flow templates and import\u002Fexport",{"type":148,"content":3079},[3080],{"type":133,"attrs":3081,"content":3082},{"textAlign":16},[3083],{"text":3084,"type":131},"Parallel execution logic",{"type":238,"content":3086},[3087,3092],{"type":133,"attrs":3088,"content":3089},{"textAlign":16},[3090],{"text":3091,"type":131},"[release_summary title=\"Roadmap\"]",{"type":145,"content":3093},[3094,3101,3108,3115,3122,3129,3136,3143,3150,3157],{"type":148,"content":3095},[3096],{"type":133,"attrs":3097,"content":3098},{"textAlign":16},[3099],{"text":3100,"type":131},"Cloud hosting & public webhooks | Coming next",{"type":148,"content":3102},[3103],{"type":133,"attrs":3104,"content":3105},{"textAlign":16},[3106],{"text":3107,"type":131},"Self-hosted AI (Ollama, LocalAI) | Coming next",{"type":148,"content":3109},[3110],{"type":133,"attrs":3111,"content":3112},{"textAlign":16},[3113],{"text":3114,"type":131},"Flow versioning & visual diffs | Coming next",{"type":148,"content":3116},[3117],{"type":133,"attrs":3118,"content":3119},{"textAlign":16},[3120],{"text":3121,"type":131},"Custom Node SDK | Coming next",{"type":148,"content":3123},[3124],{"type":133,"attrs":3125,"content":3126},{"textAlign":16},[3127],{"text":3128,"type":131},"Multi-instance sync | Coming next",{"type":148,"content":3130},[3131],{"type":133,"attrs":3132,"content":3133},{"textAlign":16},[3134],{"text":3135,"type":131},"Enterprise SSO & RBAC | Coming next",{"type":148,"content":3137},[3138],{"type":133,"attrs":3139,"content":3140},{"textAlign":16},[3141],{"text":3142,"type":131},"Flow marketplace | Coming next",{"type":148,"content":3144},[3145],{"type":133,"attrs":3146,"content":3147},{"textAlign":16},[3148],{"text":3149,"type":131},"IoT & voice triggers | Coming next",{"type":148,"content":3151},[3152],{"type":133,"attrs":3153,"content":3154},{"textAlign":16},[3155],{"text":3156,"type":131},"A2A protocol support | Coming next",{"type":148,"content":3158},[3159],{"type":133,"attrs":3160,"content":3161},{"textAlign":16},[3162],{"text":3163,"type":131},"CI\u002FCD integration | Coming next",{"type":194},{"type":125,"attrs":3166,"content":3167},{"level":127,"textAlign":16},[3168],{"text":3169,"type":131},"Who Is This For",{"type":145,"content":3171},[3172,3183,3194,3205,3216],{"type":148,"content":3173},[3174],{"type":133,"attrs":3175,"content":3176},{"textAlign":16},[3177,3181],{"text":3178,"type":131,"marks":3179},"Streamers and creators",[3180],{"type":157},{"text":3182,"type":131}," — automate your entire broadcast workflow",{"type":148,"content":3184},[3185],{"type":133,"attrs":3186,"content":3187},{"textAlign":16},[3188,3192],{"text":3189,"type":131,"marks":3190},"Developers",[3191],{"type":157},{"text":3193,"type":131}," — build complex integrations without writing glue code",{"type":148,"content":3195},[3196],{"type":133,"attrs":3197,"content":3198},{"textAlign":16},[3199,3203],{"text":3200,"type":131,"marks":3201},"Business teams",[3202],{"type":157},{"text":3204,"type":131}," — connect your tools with intelligent routing",{"type":148,"content":3206},[3207],{"type":133,"attrs":3208,"content":3209},{"textAlign":16},[3210,3214],{"text":3211,"type":131,"marks":3212},"Smart home users",[3213],{"type":157},{"text":3215,"type":131}," — orchestrate devices with context-aware logic",{"type":148,"content":3217},[3218],{"type":133,"attrs":3219,"content":3220},{"textAlign":16},[3221,3225],{"text":3222,"type":131,"marks":3223},"Anyone who automates",[3224],{"type":157},{"text":3226,"type":131}," — if you've outgrown simple if\u002Fthen tools, this is the next step",{"type":194},{"type":125,"attrs":3229,"content":3230},{"level":127,"textAlign":16},[3231],{"text":3232,"type":131},"Getting Started",{"type":133,"attrs":3234,"content":3235},{"textAlign":16},[3236],{"text":3237,"type":131},"Start with a trigger and an action. Connect them. Run the flow. Then add complexity as you need it — a branch here, an AI node there, a loop for batch processing. The canvas grows with your ideas.",{"type":133,"attrs":3239,"content":3240},{"textAlign":16},[3241],{"text":3242,"type":131},"The future of automation isn't choosing between smart and reliable. It's both, on the same canvas, in the same workflow.",{"type":133,"attrs":3244,"content":3245},{"textAlign":16},[3246],{"text":3247,"type":131},"That's Flow Builder.",{"name":75,"created_at":76,"published_at":77,"updated_at":78,"id":79,"uuid":80,"content":3249,"slug":83,"full_slug":84,"sort_by_date":16,"position":85,"tag_list":3250,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":87,"first_published_at":88,"release_id":16,"lang":23,"path":16,"alternates":3251,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":82,"name":75,"component":13},[],[],"We're excited to share what we are building behind the scenes — a powerful, visual flow chart system that brings automation, AI, and tool integration together like never before.\n\nWhether you're a streamer, gamer, content creator, or just a curious power user — this is a tool that will change the way you work and interact with your PC.","introducing-flow-builder-visual-automation-for-everyone","blog\u002Farticle\u002Fintroducing-flow-builder-visual-automation-for-everyone",10,[],"ea9e4d0c-b410-4e24-8a80-6089e7374166","2025-04-15T19:21:02.610Z",[],{"name":3261,"created_at":3262,"published_at":3263,"updated_at":3264,"id":3265,"uuid":3266,"content":3267,"slug":3627,"full_slug":3628,"sort_by_date":16,"position":3629,"tag_list":3630,"is_startpage":19,"parent_id":415,"meta_data":16,"group_id":3631,"first_published_at":3632,"release_id":16,"lang":23,"path":16,"alternates":3633,"default_full_slug":16,"translated_slugs":16},"Important! Desktop app 0.4.7","2025-04-04T02:17:51.334Z","2025-04-04T02:54:45.318Z","2025-04-15T20:37:14.178Z",650425445,"14f25b0e-32dc-45fe-9d03-0679abf22ed1",{"_uid":3268,"image":3269,"title":3270,"author":3271,"content":3275,"category":3622,"component":410,"description":3626},"e94ded74-bae1-4817-a681-296f1efb097e","\u002F\u002Fa.storyblok.com\u002Ff\u002F332218\u002F1024x1024\u002Fca1cb4aa85\u002Fchatgpt-image-apr-4-2025-04_54_23-am.png","🚨 Important Update Notice: Version 0.4.7 Update Issue",{"name":103,"created_at":104,"published_at":105,"updated_at":106,"id":107,"uuid":108,"content":3272,"slug":114,"full_slug":115,"sort_by_date":16,"position":85,"tag_list":3273,"is_startpage":19,"parent_id":117,"meta_data":16,"group_id":118,"first_published_at":105,"release_id":16,"lang":23,"path":16,"alternates":3274,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":110,"name":103,"avatar":111,"component":112,"description":113},[],[],{"type":122,"content":3276},[3277,3288,3310,3320,3342,3352,3356,3402,3412,3422,3472,3482,3504,3514,3524,3560,3581,3591,3600],{"type":125,"attrs":3278,"content":3279},{"level":127},[3280,3286],{"type":3281,"attrs":3282},"emoji",{"name":3283,"emoji":3284,"fallbackImage":3285},"rocket","🚀","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f680.png",{"text":3287,"type":131}," Important Update Notice: Version 0.4.7 Update Issue",{"type":133,"content":3289},[3290,3292,3296,3298,3302,3304,3308],{"text":3291,"type":131},"We've identified a ",{"text":3293,"type":131,"marks":3294},"critical issue",[3295],{"type":157},{"text":3297,"type":131}," affecting VortiDeck users running version ",{"text":3299,"type":131,"marks":3300},"0.4.7",[3301],{"type":157},{"text":3303,"type":131}," of the desktop application. This issue prevents the automatic update system from functioning correctly due to a ",{"text":3305,"type":131,"marks":3306},"synchronization problem",[3307],{"type":157},{"text":3309,"type":131}," between windows and the main application.",{"type":125,"attrs":3311,"content":3312},{"level":140},[3313,3318],{"type":3281,"attrs":3314},{"name":3315,"emoji":3316,"fallbackImage":3317},"exclamation","❗","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F2757.png",{"text":3319,"type":131}," What's the Issue?",{"type":133,"content":3321},[3322,3324,3328,3330,3334,3336,3340],{"text":3323,"type":131},"A technical problem was discovered where the ",{"text":3325,"type":131,"marks":3326},"Pinia store",[3327],{"type":157},{"text":3329,"type":131}," (our state management system) wasn't properly synchronizing between windows, causing ",{"text":3331,"type":131,"marks":3332},"update notifications to fail",[3333],{"type":157},{"text":3335,"type":131},". As a result, users running ",{"text":3337,"type":131,"marks":3338},"version 0.4.7",[3339],{"type":157},{"text":3341,"type":131}," cannot receive automatic updates through the application.",{"type":125,"attrs":3343,"content":3344},{"level":140},[3345,3350],{"type":3281,"attrs":3346},{"name":3347,"emoji":3348,"fallbackImage":3349},"mag","🔍","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f50d.png",{"text":3351,"type":131}," Who Is Affected?",{"type":133,"content":3353},[3354],{"text":3355,"type":131},"This issue specifically affects:",{"type":145,"content":3357},[3358,3373,3387],{"type":148,"content":3359},[3360],{"type":133,"content":3361},[3362,3367,3369],{"type":3281,"attrs":3363},{"name":3364,"emoji":3365,"fallbackImage":3366},"computer","💻","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f4bb.png",{"text":3368,"type":131}," Users running ",{"text":3370,"type":131,"marks":3371},"VortiDeck desktop version 0.4.7",[3372],{"type":157},{"type":148,"content":3374},[3375],{"type":133,"content":3376},[3377,3379,3381,3385],{"type":3281,"attrs":3378},{"name":3364,"emoji":3365,"fallbackImage":3366},{"text":3380,"type":131}," Both ",{"text":3382,"type":131,"marks":3383},"Windows and macOS",[3384],{"type":157},{"text":3386,"type":131}," versions of the application",{"type":148,"content":3388},[3389],{"type":133,"content":3390},[3391,3396,3398],{"type":3281,"attrs":3392},{"name":3393,"emoji":3394,"fallbackImage":3395},"arrows_counterclockwise","🔄","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f504.png",{"text":3397,"type":131}," Users who rely on the ",{"text":3399,"type":131,"marks":3400},"automatic update system",[3401],{"type":157},{"type":125,"attrs":3403,"content":3404},{"level":140},[3405,3410],{"type":3281,"attrs":3406},{"name":3407,"emoji":3408,"fallbackImage":3409},"white_check_mark","✅","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F2705.png",{"text":3411,"type":131}," How to Resolve",{"type":133,"content":3413},[3414,3416,3420],{"text":3415,"type":131},"To ensure your ",{"text":3417,"type":131,"marks":3418},"VortiDeck application",[3419],{"type":157},{"text":3421,"type":131}," continues to function correctly and receives future updates, please follow these steps:",{"type":1369,"attrs":3423,"content":3424},{"order":438},[3425,3446,3459],{"type":148,"content":3426},[3427],{"type":133,"content":3428},[3429,3434,3438],{"type":3281,"attrs":3430},{"name":3431,"emoji":3432,"fallbackImage":3433},"inbox_tray","📥","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f4e5.png",{"text":3435,"type":131,"marks":3436}," Download the latest version directly from our store: ",[3437],{"type":157},{"text":3439,"type":131,"marks":3440},"download",[3441,3445],{"type":400,"attrs":3442},{"href":3443,"uuid":16,"anchor":16,"target":3444,"linktype":403},"https:\u002F\u002Fvortideck.com\u002Fdownload","_self",{"type":157},{"type":148,"content":3447},[3448],{"type":133,"content":3449},[3450,3455],{"type":3281,"attrs":3451},{"name":3452,"emoji":3453,"fallbackImage":3454},"wastebasket","🗑","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f5d1-fe0f.png",{"text":3456,"type":131,"marks":3457}," Uninstall your current version of VortiDeck (version 0.4.7).",[3458],{"type":157},{"type":148,"content":3460},[3461],{"type":133,"content":3462},[3463,3468],{"type":3281,"attrs":3464},{"name":3465,"emoji":3466,"fallbackImage":3467},"pushpin","📌","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f4cc.png",{"text":3469,"type":131,"marks":3470}," Install the newly downloaded version.",[3471],{"type":157},{"type":125,"attrs":3473,"content":3474},{"level":140},[3475,3480],{"type":3281,"attrs":3476},{"name":3477,"emoji":3478,"fallbackImage":3479},"hammer_and_wrench","🛠","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f6e0-fe0f.png",{"text":3481,"type":131}," Why Manual Update Is Necessary",{"type":133,"content":3483},[3484,3486,3490,3492,3496,3498,3502],{"text":3485,"type":131},"Due to the nature of the ",{"text":3487,"type":131,"marks":3488},"synchronization issue",[3489],{"type":157},{"text":3491,"type":131},", the normal update process ",{"text":3493,"type":131,"marks":3494},"cannot be used",[3495],{"type":157},{"text":3497,"type":131}," in this case. A ",{"text":3499,"type":131,"marks":3500},"fresh installation",[3501],{"type":157},{"text":3503,"type":131}," of the latest version ensures that all components are properly synchronized and future updates will work correctly.",{"type":125,"attrs":3505,"content":3506},{"level":140},[3507,3512],{"type":3281,"attrs":3508},{"name":3509,"emoji":3510,"fallbackImage":3511},"question","❓","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F2753.png",{"text":3513,"type":131}," Need Help?",{"type":133,"content":3515},[3516,3518,3522],{"text":3517,"type":131},"If you encounter any issues during the ",{"text":3519,"type":131,"marks":3520},"manual update process",[3521],{"type":157},{"text":3523,"type":131},", please don't hesitate to:",{"type":145,"content":3525},[3526,3537],{"type":148,"content":3527},[3528],{"type":133,"content":3529},[3530,3535],{"type":3281,"attrs":3531},{"name":3532,"emoji":3533,"fallbackImage":3534},"e-mail","📧","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f4e7.png",{"text":3536,"type":131}," Contact our support team at support@vortideck.com",{"type":148,"content":3538},[3539],{"type":133,"content":3540},[3541,3546,3548,3554,3556],{"type":3281,"attrs":3542},{"name":3543,"emoji":3544,"fallbackImage":3545},"speech_balloon","💬","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f4ac.png",{"text":3547,"type":131}," Join our ",{"text":3549,"type":131,"marks":3550},"Discord community",[3551],{"type":400,"attrs":3552},{"href":3553,"uuid":16,"anchor":16,"target":3444,"linktype":403},"https:\u002F\u002Fdiscord.gg\u002F9YDTJP63FV",{"text":3555,"type":131}," for ",{"text":3557,"type":131,"marks":3558},"immediate assistance",[3559],{"type":157},{"type":133,"content":3561},[3562,3564,3568,3570,3574,3576],{"text":3563,"type":131},"We ",{"text":3565,"type":131,"marks":3566},"apologize",[3567],{"type":157},{"text":3569,"type":131}," for any inconvenience this may cause and appreciate your understanding as we work to provide the ",{"text":3571,"type":131,"marks":3572},"best possible experience",[3573],{"type":157},{"text":3575,"type":131}," for our users. ",{"type":3281,"attrs":3577},{"name":3578,"emoji":3579,"fallbackImage":3580},"raised_hands","🙌","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f64c.png",{"type":125,"attrs":3582,"content":3583},{"level":140},[3584,3589],{"type":3281,"attrs":3585},{"name":3586,"emoji":3587,"fallbackImage":3588},"bell","🔔","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f514.png",{"text":3590,"type":131}," Stay Updated",{"type":133,"content":3592},[3593,3595,3599],{"text":3594,"type":131},"Follow our social media channels for the ",{"text":3596,"type":131,"marks":3597},"latest updates and news",[3598],{"type":157},{"text":1505,"type":131},{"type":145,"content":3601},[3602],{"type":148,"content":3603},[3604],{"type":133,"content":3605},[3606,3608,3610,3615,3617],{"type":3281,"attrs":3607},{"name":3364,"emoji":3365,"fallbackImage":3366},{"text":3609,"type":131}," Discord: ",{"text":3611,"type":131,"marks":3612},"VortiDeck Community",[3613],{"type":400,"attrs":3614},{"href":3553,"uuid":16,"anchor":16,"target":3444,"linktype":403},{"text":3616,"type":131}," ",{"type":3281,"attrs":3618},{"name":3619,"emoji":3620,"fallbackImage":3621},"video_game","🎮","https:\u002F\u002Fcdn.jsdelivr.net\u002Fnpm\u002Femoji-datasource-apple\u002Fimg\u002Fapple\u002F64\u002F1f3ae.png",{"name":42,"created_at":43,"published_at":44,"updated_at":45,"id":46,"uuid":47,"content":3623,"slug":50,"full_slug":51,"sort_by_date":16,"position":52,"tag_list":3624,"is_startpage":19,"parent_id":20,"meta_data":16,"group_id":54,"first_published_at":55,"release_id":16,"lang":23,"path":16,"alternates":3625,"default_full_slug":16,"translated_slugs":16,"_stopResolving":120},{"_uid":49,"name":42,"component":13},[],[],"⚠️ Users on VortiDeck version 0.4.7 must manually update due to a synchronization issue. Download the latest version now!","important-desktop-app-0-4-7","blog\u002Farticle\u002Fimportant-desktop-app-0-4-7",20,[],"f5d6e733-c02c-4fcf-9496-706d64dcff45","2025-04-04T02:24:59.852Z",[]]