better readme

This commit is contained in:
2026-03-14 20:21:07 +02:00
parent d688b0cfd2
commit 7d89bc377a

189
README.md
View File

@@ -1,103 +1,96 @@
<div align="center">
<br>
# Nomina
**Rename your files, not yourself.**
**Bulk file renaming for the rest of us.**
A bulk file renaming tool for people who have better things to do than click through files one by one.
Modern, fast, and public domain. Built with Rust and Tauri v2.<br>
Looks like it was made this decade because it was.
Built with Rust and Tauri. Runs on Windows. Yours to keep, no strings attached.
<br>
[![License: CC0](https://img.shields.io/badge/license-CC0_1.0-blue.svg)](https://creativecommons.org/publicdomain/zero/1.0/)
[![Built with Tauri](https://img.shields.io/badge/built_with-Tauri_v2-24C8D8.svg)](https://tauri.app)
[![Rust](https://img.shields.io/badge/rust-stable-orange.svg)](https://www.rust-lang.org)
[![React](https://img.shields.io/badge/react-19-61DAFB.svg)](https://react.dev)
[![Platform: Windows](https://img.shields.io/badge/platform-Windows-0078D6.svg)](#)
[![No Telemetry](https://img.shields.io/badge/telemetry-none-green.svg)](#-portable-and-self-contained)
[![No Account Required](https://img.shields.io/badge/account_required-no-green.svg)](#)
[![License: CC0](https://img.shields.io/badge/license-CC0_1.0-blue?style=flat-square)](https://creativecommons.org/publicdomain/zero/1.0/)
[![Built with Tauri](https://img.shields.io/badge/Tauri_v2-24C8D8?style=flat-square&logo=tauri&logoColor=white)](https://tauri.app)
[![Rust](https://img.shields.io/badge/Rust-F74C00?style=flat-square&logo=rust&logoColor=white)](https://www.rust-lang.org)
[![React](https://img.shields.io/badge/React_19-61DAFB?style=flat-square&logo=react&logoColor=black)](https://react.dev)
[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org)
[![Platform](https://img.shields.io/badge/Windows-0078D6?style=flat-square&logo=windows&logoColor=white)](#)
<br>
*Nobody should have to rename 400 files by hand. Nobody should have to pay for the privilege of not doing that.*
<br>
</div>
---
## 🌱 Why another renaming tool?
## 🪴 What is this?
Most bulk rename tools out there work fine. They also look like they were built in 2004 and never touched again. Some of them are great software by great people, and they got the job done for years. But the interfaces feel like operating heavy machinery.
Nomina is a desktop app that renames files in bulk. You point it at a folder, build a chain of renaming rules, see a live preview of every change, and hit rename when you're ready. That's the whole idea.
Nomina is an attempt at something different - a renaming tool that feels like a normal, modern app. Dark mode that actually looks good. Animations that aren't janky. A UI that doesn't fight you. And the whole thing is CC0 public domain, which means it belongs to everyone equally and nobody can take that away.
No subscriptions. No cloud. No accounts. No data harvested. It sits on your computer, it does what you tell it, it belongs to you. The code is public domain - you can copy it, change it, share it, sell it, print it out and wallpaper your bathroom with it. Nobody owns it.
## 🌿 What it does
You pick a folder. You stack renaming rules into a pipeline. You see a live preview of every single change before anything touches the filesystem. When it looks right, you hit rename. If it doesn't look right, you undo.
Nomina has **18 rule types** that chain together in any order:
| | Rule | What it does |
|---|---|---|
| 🔤 | **Replace** | Find and replace text, with regex and case sensitivity options |
| 🔣 | **Regex** | Pattern matching with capture group support |
| ✂️ | **Remove** | Strip characters, words, digits, symbols, accents, or regex matches |
| | **Add** | Insert text anywhere - supports variables like `{name}`, `{date}`, `{index}`, `{folder}` |
| 🔠 | **Case** | 13 modes including smart title case, camelCase, snake_case, kebab-case |
| 🔢 | **Numbering** | Sequential numbers in decimal, hex, roman, alphabetic. Per-folder counters, custom formats |
| 📅 | **Date** | Insert file dates (created, modified, EXIF) in various formats |
| ↔️ | **Move parts** | Extract text by position, word, or regex and reposition it |
| 📎 | **Extension** | Change, remove, normalize, or force file extensions |
| #⃣ | **Hash** | MD5, SHA1, or SHA256 content hashes |
| 📁 | **Folder name** | Pull in parent or grandparent folder names |
| 🌐 | **Transliterate** | Unicode to ASCII ("cafe" from "cafe", that kind of thing) |
| 0⃣ | **Padding** | Leading zeros for proper alphabetical sorting |
| 📏 | **Truncate** | Enforce a maximum filename length |
| 🎲 | **Randomize** | Random hex, alpha, alphanumeric, or UUID strings |
| 🔀 | **Swap** | Flip parts around a delimiter ("Last, First" becomes "First Last") |
| 🧹 | **Sanitize** | Strip illegal chars, normalize unicode, collapse whitespace |
| ✏️ | **Text editor** | Just type whatever you want for each file |
Rules are draggable cards. Reorder them, toggle them on and off, duplicate them, right-click for more options. The preview updates as you go.
## 🍄 Not just renaming
- **Live preview** of every change before anything happens
- **Conflict detection** when two files would collide
- **Full undo** with persistent history across sessions
- **Presets** you can save, load, export as files, and share with anyone
- **Filters** by name pattern, regex, file size, type, and depth
- **Explorer integration** - "Edit in Nomina" in your right-click menu, auto-repairs if you move the exe
- **Accessibility** - screen reader support, keyboard navigation, high contrast, color blind modes, reduced motion (auto-detected from your OS), font scaling
## 🪨 Portable
Single exe. No installer. Put it anywhere. All its data (settings, presets, undo log) lives in a `data` folder next to the binary. Delete the folder, it's gone. Put it on a USB stick, it works. Move it, it works. The optional Explorer context menu is the one thing that touches the registry, and there's a button to cleanly remove it.
## 🍵 Configurable
Dark, light, or match-your-system theme. Adjustable accent color. Zoom from 70% to 150%. Compact mode. Zebra striping. Configurable preview delay, sort order, conflict handling, backup strategy with scheduled cleanup, undo depth, notification preferences. About 80 settings in total, all stored locally next to the exe.
## 🌻 Public domain
Nomina is released under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/). No rights reserved. No contributor license agreements. No corporate ownership. No "open core" bait-and-switch where the good parts cost money.
The code is a common resource. Fork it, modify it, redistribute it, learn from it, build something better. You don't need to ask, and there's nothing to sign. Software that people need should be free to use, free to study, free to share, and free to improve. That's not a business model - it's just how things should work.
---
## 🌿 What can it do?
<details>
<summary><strong>🔧 Building from source</strong></summary>
Nomina has 18 different rule types that you can stack together in any order, like building blocks. Each rule transforms the filename in some way, and the changes cascade through the pipeline.
### Renaming rules
| Rule | What it does |
|---|---|
| **Replace** | Find and replace text, with optional regex and case sensitivity |
| **Regex** | Pattern matching with capture group support |
| **Remove** | Strip characters, words, digits, symbols, accents, or regex matches |
| **Add** | Insert text at any position - prefix, suffix, or somewhere in the middle. Supports template variables like `{name}`, `{date}`, `{index}` |
| **Case** | 13 modes - upper, lower, title, sentence, camelCase, snake_case, kebab-case, and more. Smart title case knows about common exception words |
| **Numbering** | Add sequential numbers in decimal, hex, octal, binary, alphabetic, or roman numerals. Per-folder counters, reverse ordering, custom formatting |
| **Date** | Insert file dates (created, modified, accessed, EXIF) in various formats |
| **Move parts** | Extract text by position, word count, or regex and move it somewhere else |
| **Extension** | Change, remove, or normalize file extensions |
| **Hash** | Add content-based MD5, SHA1, or SHA256 hashes |
| **Folder name** | Pull in the parent folder name (or grandparent, etc.) |
| **Transliterate** | Convert unicode to ASCII - turns "cafe" into "cafe", that sort of thing |
| **Padding** | Pad numbers with leading zeros for proper sorting |
| **Truncate** | Cut filenames down to a maximum length |
| **Randomize** | Generate random hex, alphabetic, alphanumeric strings, or UUIDs |
| **Swap** | Swap parts of a filename around a delimiter ("Last, First" becomes "First, Last") |
| **Sanitize** | Strip illegal characters, normalize unicode, collapse whitespace, replace spaces |
| **Text editor** | When all else fails, just type the new names yourself |
### Everything else
- **Live preview** - see exactly what every file will be renamed to before anything happens
- **Conflict detection** - warns you when two files would end up with the same name
- **Undo** - every rename operation is reversible, with persistent history
- **Presets** - save your rule pipelines, export them as files, share them with others
- **Filters** - narrow down which files get renamed by name pattern, size, type
- **Drag and drop** - reorder rules by dragging them around
- **Context menus** - right-click files, rules, and sidebar items for quick actions
- **Explorer integration** - adds "Edit in Nomina" to your Windows right-click menu, auto-fixes itself if you move the exe
- **Keyboard shortcuts** - select all, deselect, the usual stuff
---
## 🌱 Portable and self-contained
Nomina doesn't install anything. There's no installer. It's a single exe file that you put wherever you want.
All data the app creates - settings, presets, undo history, webview cache - lives in a `data` folder right next to the exe. Nothing goes into your registry, AppData, or anywhere else on your system. The only exception is the optional Explorer context menu, which does write to the registry (because that's how Windows works), but there's a button to remove it and then the app has left zero trace.
You can put it on a USB stick, move it between computers, delete it by deleting the folder. Your computer before and after is the same computer.
---
## 🍄 Settings
Nomina is pretty configurable. Some things you can change:
**Look and feel** - dark/light/system theme, accent color, zoom level, compact mode, zebra striping on the file list
**Behavior** - auto-select files, confirm before rename, sort order, animations, always-on-top, preview delay
**Safety** - automatic backups before renaming, configurable backup location and cleanup schedule, undo history limit
**Accessibility** - high contrast mode, reduced motion (auto-detected from your OS), font scaling, enhanced focus indicators, screen reader support, color blind modes (deuteranopia, protanopia, tritanopia), larger touch targets, keyboard-only navigation. Nomina tries to read your OS accessibility preferences on first launch and configure itself accordingly.
**Notifications** - toast popups, taskbar flashing, and a little sound effect when a rename finishes
---
## 🔧 For developers
If you want to build it yourself or poke around the code.
<br>
### Prerequisites
@@ -105,42 +98,34 @@ If you want to build it yourself or poke around the code.
- Node.js (LTS)
- Visual Studio Build Tools (Windows)
### Building
### Commands
```bash
# install frontend dependencies
# install frontend deps
cd ui && npm install
# run in development mode
# development
cargo tauri dev
# run the core library tests
# tests
cargo test -p nomina-core
# build a release binary
# release build
cargo tauri build --no-bundle
```
The release binary ends up at `target/release/nomina.exe`.
Binary lands at `target/release/nomina.exe`.
### Project layout
### Structure
```
nomina/
crates/
nomina-core/ # the rename engine - pure Rust library, no UI dependency
nomina/ # Tauri v2 desktop shell, commands, system integration
nomina-core/ # rename engine - pure Rust, no UI
nomina/ # Tauri v2 shell, commands, system integration
ui/ # React + TypeScript frontend
```
The core library (`nomina-core`) handles all the actual renaming logic - rules, pipeline execution, filters, undo tracking, presets. It doesn't know or care about the UI. The app crate (`nomina`) wraps it in a Tauri window and exposes it as commands. The frontend (`ui`) talks to those commands and renders everything.
`nomina-core` is a standalone library that handles renaming logic, pipeline execution, filters, undo, and presets. The `nomina` crate wraps it in a Tauri window. The `ui` folder is the frontend. The engine doesn't depend on the UI, so you could build a CLI or a different frontend on top of it if you wanted.
---
## 🌻 License
[CC0 1.0 - Public Domain Dedication](https://creativecommons.org/publicdomain/zero/1.0/)
No rights reserved. This work is dedicated to the commons. Do whatever you want with it. You don't need permission, and you don't owe anyone anything.
The tools we use every day should belong to the people who use them.
</details>