Rebrand: Renamr -> Aurora Curator (new logo/app icon, renamed crate aurora-curator-core, package/identifier/window-title updates, README + in-app text)

This commit is contained in:
Renamr Scaffold
2026-08-29 10:07:09 +00:00
parent 7dd9ad2078
commit 7097b1ede7
42 changed files with 132 additions and 153 deletions
+20 -20
View File
@@ -31,7 +31,7 @@ interface FileEntry {
ext: string;
}
// Result of the local, filename-only season/episode matcher (renamr-core's
// Result of the local, filename-only season/episode matcher (aurora-curator-core's
// `matching` module, exposed via the `guess_episode` Tauri command). No network calls -
// this only recognizes patterns already present in the filename text itself.
interface EpisodeGuess {
@@ -40,7 +40,7 @@ interface EpisodeGuess {
episode: number;
}
// Result of the local, filename-only movie title/year matcher (renamr-core's
// Result of the local, filename-only movie title/year matcher (aurora-curator-core's
// `matching::guess_movie`, exposed via the `guess_movie` Tauri command). Tried as a
// fallback whenever `guess_episode` finds no season/episode pattern - a release name
// is either a TV episode or a movie, never both.
@@ -52,7 +52,7 @@ interface MovieGuess {
// What runMatching resolved a file to, before it's written into the item's bindings.
type MatchGuess = { kind: "tv"; episode: EpisodeGuess } | { kind: "movie"; movie: MovieGuess };
// Result of the local, filename-only release-tag matcher (renamr-core's
// Result of the local, filename-only release-tag matcher (aurora-curator-core's
// `matching::guess_release_info`, exposed via the `guess_release_info` Tauri command).
// Independent of the TV/movie guess above - a release name carries (or doesn't carry)
// these tags regardless of what kind of media it is, so this runs alongside whichever
@@ -78,7 +78,7 @@ interface RenamePlanEntry {
newName: string;
}
// Mirrors renamr-core's `RenameOutcome` (serde-tagged on "status"). Conflict policy is
// Mirrors aurora-curator-core's `RenameOutcome` (serde-tagged on "status"). Conflict policy is
// fixed at skip - a colliding target is never overwritten, just reported.
type RenameOutcome =
| { status: "renamed"; newPath: string }
@@ -91,15 +91,15 @@ interface RenameResult {
outcome: RenameOutcome;
}
// Mirrors renamr-core's `RenameAction` - what actually happens at each computed target.
// "move" relocates the file in place (the only action Renamr had before); "copy" and
// Mirrors aurora-curator-core's `RenameAction` - what actually happens at each computed target.
// "move" relocates the file in place (the only action Aurora Curator had before); "copy" and
// "symlink" both leave the source file exactly where it is and produce a new file
// elsewhere, which is why only "move" updates the loaded item's own path/name (see
// confirmRename below).
type RenameAction = "move" | "copy" | "symlink";
// Mirrors renamr-core's `ConflictPolicy` - what happens when a computed target already
// exists. "skip" (the default, and the only behavior Renamr had before) leaves the
// Mirrors aurora-curator-core's `ConflictPolicy` - what happens when a computed target already
// exists. "skip" (the default, and the only behavior Aurora Curator had before) leaves the
// conflicting file alone; "autoNumber" saves alongside it as "Name (1).ext" instead;
// "override" replaces it outright (irreversible for whatever gets overwritten).
type ConflictPolicy = "skip" | "autoNumber" | "override";
@@ -115,7 +115,7 @@ interface FetchQuery {
episode: number;
}
// Mirrors renamr-core's `FetchOutcome` (serde-tagged on "status").
// Mirrors aurora-curator-core's `FetchOutcome` (serde-tagged on "status").
type FetchOutcome =
| { status: "found"; seriesName: string; episodeTitle: string; airDate: string | null }
| { status: "notFound" }
@@ -135,7 +135,7 @@ interface MovieFetchQuery {
year: number | null;
}
// Mirrors renamr-core's `MovieFetchOutcome` (serde-tagged on "status").
// Mirrors aurora-curator-core's `MovieFetchOutcome` (serde-tagged on "status").
type MovieFetchOutcome =
| { status: "found"; title: string; releaseDate: string | null }
| { status: "notFound" }
@@ -146,7 +146,7 @@ interface MovieFetchResult {
outcome: MovieFetchOutcome;
}
// Rename history / undo. Mirrors renamr-core's `history` module (serde-tagged on
// Rename history / undo. Mirrors aurora-curator-core's `history` module (serde-tagged on
// "status" for the outcome, same convention as RenameOutcome/FetchOutcome above).
interface HistoryEntry {
source: string;
@@ -263,9 +263,9 @@ const SAMPLE_ITEMS: Item[] = [
];
// The user's own preferred naming scheme (their words: "I personally like {show name} -
// {season number}x{episode number} - {episode name}") - this is Renamr's default now,
// {season number}x{episode number} - {episode name}") - this is Aurora Curator's default now,
// not just an example. `{show name}`/`{season number}`/etc. are multi-word plain-field
// binding names, which work via renamr-core's ExpressionFormat plain-field-name
// binding names, which work via aurora-curator-core's ExpressionFormat plain-field-name
// fallback (ExpressionError-free even though they aren't valid Rhai identifiers).
const SAMPLE_EXPRESSION = "{show name} - {season number}x{episode number} - {episode name}";
// The matching engine isn't ported yet, so real loaded files only have their own
@@ -395,10 +395,10 @@ export default function RenamePanel() {
const [renaming, setRenaming] = useState(false);
// What to actually do at each computed target - chosen in the confirmation modal,
// remembered across modal opens within the session (defaults to "move", matching
// Renamr's original and only behavior before copy/symlink existed).
// Aurora Curator's original and only behavior before copy/symlink existed).
const [renameAction, setRenameAction] = useState<RenameAction>("move");
// What to do when a computed target already exists - same remembered-across-opens
// pattern as renameAction, defaults to "skip" (Renamr's original and only behavior
// pattern as renameAction, defaults to "skip" (Aurora Curator's original and only behavior
// before auto-number/override existed).
const [conflictPolicy, setConflictPolicy] = useState<ConflictPolicy>("skip");
// TMDB token state for "Fetch Data". `null` = not checked yet, `false` = checked and
@@ -545,10 +545,10 @@ export default function RenamePanel() {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
// Local, filename-based season/episode/movie detection (renamr-core's `matching`
// Local, filename-based season/episode/movie detection (aurora-curator-core's `matching`
// module). Tries `guess_episode` first; when a filename carries no season/episode
// marker, falls back to `guess_movie` (a release name is either a TV episode or a
// movie, never both - see the doc comment on `guess_movie` in renamr-core). Populates
// movie, never both - see the doc comment on `guess_movie` in aurora-curator-core). Populates
// TV bindings (`{n}`/`{s00e00}`/`{season}`/`{episode}`/etc.) or movie bindings
// (`{n}`/`{y}`/etc.) accordingly - no network calls, no metadata lookup, so it's
// distinct from (and much cheaper than) "Fetch Data" online matching.
@@ -727,7 +727,7 @@ export default function RenamePanel() {
// local state and report the outcome. Only "move" relocates the source file, so only
// "move" updates a loaded item's own id/name/bindings to point at the new path -
// "copy"/"symlink" leave the source exactly where it was and produce an additional
// file elsewhere that Renamr doesn't separately track as a loaded item.
// file elsewhere that Aurora Curator doesn't separately track as a loaded item.
const confirmRename = async () => {
if (!renamePlan || renamePlan.length === 0) return;
setRenaming(true);
@@ -805,7 +805,7 @@ export default function RenamePanel() {
setRenamePlan((prev) => (prev ? prev.filter((p) => p.id !== id) : prev));
};
// Rename history / undo - Renamr's only safety net beyond the confirm-before-execute
// Rename history / undo - Aurora Curator's only safety net beyond the confirm-before-execute
// step, since a filesystem rename has no OS-level undo. `execute_rename` records a
// batch of every successfully-renamed file after each Rename; this panel lists those
// batches and can revert one back to its original paths.
@@ -1310,7 +1310,7 @@ export default function RenamePanel() {
<p className="format-hint">
Match scans filenames locally for season/episode or movie title/year patterns, plus release-tag text
like resolution, source (BluRay/HDTV/WEB-DL/…), video/audio codec, and release group — none of this
needs a network call, since it's all parsed straight from the filename itself (Renamr has no video/audio
needs a network call, since it's all parsed straight from the filename itself (Aurora Curator has no video/audio
file prober, so a tag that isn't in the filename text just won't be available). Fetch Data resolves the
season/episode or movie guess against real TMDB metadata for the real title, episode title, and
air/release date — needs a free TMDB API token set in <strong>TMDB Settings</strong> first. A batch can
+1 -1
View File
@@ -47,7 +47,7 @@ export default function Sidebar({
</ul>
<div className="sidebar-footer">
<span className="sidebar-wordmark">Renamr</span>
<span className="sidebar-wordmark">Aurora Curator</span>
<span className="sidebar-version">v{APP_VERSION}</span>
</div>
</nav>
+3 -2
View File
@@ -1,6 +1,7 @@
/* Renamr "Aurora" theme — ported 1:1 (hex values) from the original FB-Mod fork's
/* Aurora Curator's UI theme — ported 1:1 (hex values) from the original FB-Mod fork's
AuroraTheme.java / HeaderPanel.java / MainFrame.java so the rewrite looks like a
continuation of that design rather than a random restyle. */
continuation of that design rather than a random restyle. (The app takes its name,
"Aurora Curator", from this same Aurora theme.) */
:root {
--dock: #08252b;
--dock-deep: #051115;