Slate is a production-ready desktop app for cleaning up messy TV and anime filenames into consistent, library-friendly episode names.
It combines robust auto-parsing with manual tools, preview-first workflows, and safe bulk rename operations with undo.
- Parse real-world filename patterns across TV and anime releases
- Handle bracket-heavy anime naming styles cleanly
- Preview all rename output before applying any file operation
- Edit individual rows inline when parser output needs a quick correction
- Use Manual Mode for full control over show/season/episode sequencing
- Batch rename safely with undo support
- Supports common episode formats like:
S01E021x02Season 1 Episode 2Episode 2/Ep 2- Long episode numbers (e.g.
S01E198)
- Includes confidence tagging:
- High confidence for structured matches
- Low confidence badges for ambiguous patterns requiring review
- Toggle Manual Mode when you want deterministic numbering
- Provide:
- Show name
- Season
- Starting episode
- Reorder files with drag-and-drop, then apply sequential assignment
- Great for incomplete, messy, or non-standard source names
- Rename preview table before commit
- Inline per-row editing of show name + episode
- Edited rows are clearly marked
- “Select low confidence” helper to bulk-select uncertain rows for review
- Keyboard shortcuts for faster batch workflows
- Main-process validated rename execution
- Undo last batch via per-folder
.slate-undo.json - Folder refresh support for fast iteration
- Built with Electron + React + TypeScript
- Cross-platform packaging for Linux/macOS/Windows
- Platform-specific desktop + installer icons
- CI-backed build/test/release workflow
npm ci
npm run devThen open a folder, review previews, and rename selected files.
💡 Tip: Use npm run start to preview the built app from out/renderer.
- Ctrl+A / Cmd+A: Select all parsed rows
- Enter: Trigger rename for selected rows
- Space: Toggle focused row selection
| Script | Command | Purpose |
|---|---|---|
dev |
electron-vite dev |
Run app in development mode |
build |
electron-vite build |
Build main, preload, and renderer into out/ |
start |
electron-vite preview |
Run preview from built output |
preview |
electron-vite preview |
Alias for preview |
test |
vitest run --config vitest.config.ts |
Run unit tests |
typecheck |
tsc --noEmit -p tsconfig.json && tsc --noEmit -p tsconfig.main.json |
Type-check renderer/shared + main/preload |
package |
npm run build && electron-builder --publish never --config electron-builder.yml |
Build and package installers/artifacts |
make |
npm run package |
Packaging alias used by CI |
| Area | Value |
|---|---|
| App ID | com.mnikox.slate |
| Product name | Slate |
| Build output | dist/ |
| Build resources | build/ |
| Included app files | out/**, package.json |
| Linux targets | AppImage, zip |
| macOS targets | dmg, zip |
| Windows targets | nsis, zip |
Logo vectors/icons by Mohira (PD License), via SVG Repo.
Note: GitHub Copilot was used to assist with configuring and interpreting CodeQL results, as well as for pull request review assistance and minor comment suggestions. Other GitHub Copilot functions are strictly tested by me in a fully manual manner locally before any changes are committed.