This release hardens the paths where SkillSafe touches your files — backups, restores, installs, and imports — and rounds out accessibility and localization across the app.
- Backup & restore safety. Restores now warn before applying an incomplete or corrupt backup, scheduled runs report their outcomes clearly, and the Linux scheduler no longer risks clobbering your crontab (markers are anchored,
crontab -ris never used). - Security hardening. Markdown rendering is sanitized, master imports are guarded against zip-slip paths, installs validate skill names and verify blob hashes before writing, generated backup scripts quote their paths, and saving preserves lossy frontmatter instead of dropping it. A symlink guard keeps writes inside the intended directories.
- Accessibility. Every dialog now runs through a shared Modal shell (ESC to close, focus trap, focus restore, proper ARIA). Skill and cloud lists are keyboard-navigable — Tab to a card, Enter/Space to select. Sort, search, and weekday-schedule controls have accessible names, and history restore buttons announce which version they restore.
- Localization. The 69 English-only strings are translated into Spanish, French, German, Chinese, and Japanese, and the last hardcoded labels (MCP transport buttons, form placeholders, dialog close) now flow through the locale system.
- Clearer errors. Failures that used to vanish now surface as toasts — including cloud version lists, scan reports, and version actions on published skills — so a network hiccup no longer looks like an empty result.
- Fixes. Lockfile imports merge instead of replacing the whole file, merging a same-named MCP server asks before overwriting, superseded scans can no longer overwrite a fresher list, and config editors keep stable row keys while typing. Cross-tool
.agents/skillsextras are now scanned per agent’s docs.