All notable changes to Vangard Studio are documented here.
- NEW: Editor tabs can now be popped out into detached windows — drag a tab off the tab bar, or use the pop-out affordance; all 16 tab types (editors, canvases, composers, panels) are poppable, each remembering its own window size/position
- NEW: Popout windows respond to native menu commands (Cmd+W, Save All, etc.) the same as the main window
- NEW: WASD/QE keyboard pan-zoom for the Project/Flow/Choices canvases, scoped to hover/focus so it doesn't fight typing elsewhere
- FIXED: WASD/QE canvas shortcuts no longer swallow those letters when typing in the Monaco editor
- FIXED: Popout edits are now flushed before the main-window close cascade, and several correctness/race/accessibility bugs found in review of the popout-tabs feature were addressed
- FIXED: Autocomplete no longer dumps the full keyword/character/label/variable suggestion list while typing inside a quoted string (dialogue text, filenames, etc.) — trigger characters like space were bypassing Monaco's string-suppression setting
- FIXED: Drag-a-tab-off-the-strip pop-out no longer depends on
dataTransfer.dropEffect's incidental default; a recognized drop target now sets an explicit flag so future drop targets can't silently break or misfire the pop-out (#219)
- Deduplicated the window-state persistence read/write idiom shared by the main-window and popout-window state files in
electron.js(#219)
- NEW: Detect used-but-undefined variables (interpolation and if/elif/while conditions) with editor squiggle, Diagnostics warning, and Statistics count
- NEW: Vangard Studio is now fully rebranded from Ren'IDE — UI, installer, project templates, LICENSE, and documentation all reflect the new name and branding
- NEW: Full documentation website (VitePress, published to GitHub Pages) replacing the old PDF-based user guide — a complete Guide, Reference, and Architecture section, plus a redesigned Welcome page
- NEW: Script Statistics: unreachable-label detection via canvas BFS, surfaced directly in the Stats panel
- NEW: Code Snippets: JSON schema validation, snippet pack import/export, and grid UX improvements
- NEW: Keyboard Shortcuts help panel is now fully implemented and discoverable from the toolbar
- FIXED:
N,G, andDeletecanvas keyboard shortcuts now actually work (were documented but not implemented) - FIXED: Search panel's "Replace All" now performs the replacement (was previously a no-op)
- FIXED: Running the game with no Ren'Py SDK path configured now opens the Configure Ren'Py modal instead of failing silently
- FIXED: Completed milestones are now correctly restored when reopening a project
- FIXED:
aria-labels added to all remaining icon-only toolbar and color-picker buttons - FIXED: Modal focus/ARIA wiring corrected and choice-pill colors adjusted to meet WCAG AA contrast
- Removed the first-launch "Import settings from Ren'IDE?" migration prompt added during the rebrand — 1.0.0 starts fresh rather than importing settings from the pre-1.0 beta
- Removed the Screen Layout Composer's UI entry points (introduced in 0.7.0) — the underlying types and a read-only screen preview remain in the codebase but are not reachable from the app in this release; the Screens tab now shows a plain read-only list of
screendefinitions with jump-to-source only
- E2E smoke suite expanded from 5 to 97 tests covering all major features; installer smoke tests now run on Windows, macOS, and Linux in CI
- Thousands of new unit tests added across components, hooks, and libraries, closing prior coverage gaps
App.tsx(previously ~5,300 lines) modularized into focused hooks and a dual-pane context — project I/O, canvas layout, tab lifecycle, asset management, drafting artifacts, and more, each independently testable- All TypeScript strict-mode errors (144) and lint warnings (12) resolved
- NEW: E2E smoke test suite (Playwright + Electron) — 5 automated smoke tests run in CI before every release build
- NEW: Coverage gate in CI — per-file statement thresholds enforced on key modules (
storyCanvasLayout,useRenpyAnalysis,MarkdownPreviewView,ipcSecurity) - NEW: Synthwave editor theme
- NEW: Keyboard Shortcuts button in toolbar — the shortcuts reference is now discoverable without knowing Ctrl+/
- NEW:
RELEASE_CHECKLIST.md— go/no-go gate for production releases - NEW:
SUPPORT.md— post-release support runbook with log paths, known first-launch issues, and rollback guidance
- FIXED: Project-root path guard added to all
fs:*IPC handlers — prevents path traversal outside the open project directory
- FIXED:
role="dialog"andaria-modalnow applied to the correct (inner content) element across all 8 modal dialogs — screen readers no longer announce the backdrop overlay as the dialog
- Stale planning and implementation summary files removed from repository
- NEW: Centralized logging system using electron-log - Logs persist to disk for bug reports and debugging (#137)
- NEW: Help → Show Logs menu item - Opens log directory for easy access to diagnostic logs
- FIXED: XSS vulnerability in Markdown preview - Added DOMPurify sanitization to prevent potential script injection through user-controlled Markdown files (#134)
- FIXED: Memory leak in CanvasNodeContextMenu - Event listeners no longer re-register on every prop change, preventing memory leaks during canvas interactions (#138)
- IMPROVED: Console logging replaced with structured file-based logging system for better debugging and support
- IMPROVED: GoToLabelModal now uses useModalAccessibility hook for proper focus management and ESC handling (#140)
- IMPROVED: TranslationDashboard generate modal now uses useModalAccessibility hook for better keyboard accessibility (#140)
- Three canvases for story structure, route flow, and player choice flow
- Monaco editor with split panes, Ren'Py syntax highlighting, autocomplete, and snippets
- Story Elements tools for characters, variables, screens, assets, composers, snippets, menu templates, and colors
- Diagnostics, stats, and translation dashboard tabs
- Project Explorer actions for create, rename, delete, refresh, and clipboard workflows
- Project search and replace with regex and whole-word support
- Markdown preview for
.mdfiles - Run Project and Warp to Label launch support
- Drafting Mode for placeholder assets during development
- First-run tutorial, bundled user guide, keyboard shortcuts help, and auto-updater support
- External file change detection so outside edits are noticed automatically
- Go-to-label navigation is available from the canvases and the global
Ctrl+Gpalette Ctrl+Wcloses the active tab instead of quitting the app- The Stats tab includes live project performance metrics
- The File menu exposes explorer actions for keyboard-first workflows
- Translation generation is available through the configured Ren'Py SDK
- AI story generation and its related settings
- Introduced the ImageMap Composer
- Introduced the Screen Layout Composer
- Added the diagnostics panel and the stats dashboard
- Added user snippets and markdown preview
- Expanded accessibility, performance, and project tooling
- Two-pane split editor
- Image viewer zoom and pan
- Script statistics dashboard
- Configurable canvas and mouse preferences
- Error boundary and auto-updater support
Older release history remains in git history and can be restored if needed.