huskies: rename project from storkit to huskies

Rename all references from storkit to huskies across the codebase:
- .storkit/ directory → .huskies/
- Binary name, Cargo package name, Docker image references
- Server code, frontend code, config files, scripts
- Fix script/test to build frontend before cargo clippy/test
  so merge worktrees have frontend/dist available for RustEmbed

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Timmy
2026-04-03 16:12:52 +01:00
parent a7035b6ba7
commit 2d8ccb3eb6
572 changed files with 1340 additions and 1220 deletions
+9 -9
View File
@@ -77,7 +77,7 @@ fn find_last_release_tag(root: &std::path::Path) -> Option<String> {
if tag.is_empty() { None } else { Some(tag) }
}
/// Return the subjects of all `storkit: merge …` commits reachable from HEAD
/// Return the subjects of all `huskies: merge …` commits reachable from HEAD
/// but not from `since_tag` (or all commits when `since_tag` is `None`).
fn list_merge_commits_since(
root: &std::path::Path,
@@ -97,7 +97,7 @@ fn list_merge_commits_since(
"--format=%s",
"--extended-regexp",
"--grep",
"(storkit|story-kit): merge [0-9]+_",
"(huskies|storkit|story-kit): merge [0-9]+_",
])
.current_dir(root)
.output()
@@ -115,14 +115,14 @@ fn list_merge_commits_since(
}
/// Parse a story number and slug from a merge commit subject like
/// `storkit: merge 386_story_unreleased_command`.
/// `huskies: merge 386_story_unreleased_command`.
///
/// Returns `(story_number, slug_remainder)` or `None` if the subject doesn't
/// match the expected pattern.
fn parse_story_from_subject(subject: &str) -> Option<(u64, String)> {
// Match "storkit: merge NNN_rest" or "story-kit: merge NNN_rest"
// Match "huskies: merge NNN_rest" or "story-kit: merge NNN_rest"
let rest = subject
.strip_prefix("storkit: merge ")
.strip_prefix("huskies: merge ")
.or_else(|| subject.strip_prefix("story-kit: merge "))?;
let (num_str, slug) = rest.split_once('_')?;
@@ -159,7 +159,7 @@ fn find_story_name(root: &std::path::Path, num_str: &str) -> Option<String> {
"6_archived",
];
for stage in STAGES {
let dir = root.join(".storkit").join("work").join(stage);
let dir = root.join(".huskies").join("work").join(stage);
if !dir.exists() {
continue;
}
@@ -271,8 +271,8 @@ mod tests {
// -- parse_story_from_subject ------------------------------------------
#[test]
fn parse_story_storkit_prefix() {
let result = parse_story_from_subject("storkit: merge 386_story_unreleased_command");
fn parse_story_huskies_prefix() {
let result = parse_story_from_subject("huskies: merge 386_story_unreleased_command");
assert_eq!(result, Some((386, "story_unreleased_command".to_string())));
}
@@ -290,7 +290,7 @@ mod tests {
#[test]
fn parse_story_no_underscore_after_number() {
let result = parse_story_from_subject("storkit: merge 123");
let result = parse_story_from_subject("huskies: merge 123");
assert_eq!(result, None);
}