v0.2.1-alpha
Pre-release
Pre-release
·
17 commits
to master
since this release
oSlide2 v0.2.1 — Release Notes
Toast Notification System
js/components/toast.js— 5 notification types: SUCCESS (green), ERROR (red), WARNING (yellow), INFO (blue), LOADING (blue + spin animation)- Auto-dismiss (3s) or persistent (LOADING)
- Returns
.dismiss()for manual control - Integrated into AI chat errors, file save success/errors, export operations
main.jsIPC handlers wrapped with try/catch; error/success events sent to rendererpreload.jsexposesonFileSaved/onFileErrorlistenerscss/toast.css— slide-in-right animation, color-coded backgrounds
Performance Improvements
- Diff-based thumbnail rendering (
renderThumbs) — DOM operations only for added/removed slides; existing nodes reused.dataset.bganddataset.thumbskip innerHTML updates when unchanged - CSS caching (
renderSlide) —dataset.cssskips style.cssText writes when unchanged - Content caching (
renderSlide) —dataset.ckskips element re-render when content unchanged - Batch updates (
canvas.jsonUp) — multi-select drag calls singlerenderSlide()+renderThumbs()instead of per-elementupdEl()(N renders → 1 render) - Element handles — only added to newly created elements, skipped on updates
Documentation
docs/ARCHITECTURE.md— state flow diagram, module dependency graphs, undo/redo flow, canvas coordinate systemdocs/API.md— full IPC handler reference (with param/return types), config schema,.slidelabformat, Element Schema and Type Definitions sectionsdocs/CONTRIBUTING.md— code style rules (no semicolons, JSDoc required), load order, security rules, PR processdocs/JSDoc-STYLE.md— JSDoc3 format templates, single-line/multi-line rules, typedef examplesdocs/DEVELOPMENT.md— setup, project structure, build commands, known issues, debugging- JSDoc comments added to all 10 JS modules (
state.js,actions.js,renderer.js,canvas.js,panels.js,ai.js,ai-ui.js,fileManager.js,export.js,main.js):@param,@returns,@throws,@async,@typedef CoreState
Security Fixes
main.js—validateConfig(): type/range checks for config values, catches corrupt configsmain.js—validateThemeColor(): enforces#RRGGBBformat, rejects invalid colors, defaults to#ffffffmain.js—save-project-themesIPC handler validates colors before savinghomeTheme.js—_sanitizeColor()added, XSS prevention inrenderThemes()innerHTMLrenderMD()— href protocol whitelist only allowshttp://andhttps://- Missing
read-imageIPC handler added tomain.js(was defined in preload but handler was missing)
File System Fixes
open-file-dialogIPC handler now returns{ data, filePath, fileName }(structured object instead of raw JSON)homeProject.jsopenFileDialog—_projectNameand_projectPathpassed to editoreditor.jsloadData— defensive theme object handling (defaults to'default'if.namemissing).slidelabrect elements corrected:fill(background),borderColor,borderWidth,borderRadius— oldbg/colorfields removed.slidelabfiles added to.gitignore, removed from version control (git rm --cached)
Modularization & Maintenance
home.jssplit intohomeTheme.js,homeSettings.js,homeProject.js;home.jsreduced to 4-line orchestrator- All hardcoded hex colors migrated to CSS variables (19 variables in
:root, managed via_setCSS()) theme.js—_setCSS()sets both light and dark mode CSS variablesai.js— 4 separate system prompts consolidated into singleSYSTEM_PROMPTconstantcloneObj()replaced withstructuredClone()editor.jssplit intoai-ui.js+export.jsAGENTS.mdpreserved, newdocs/folder created- Old LICENSE links removed from README
- Version bumped 0.2.0 → 0.2.1