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
@@ -55,7 +55,7 @@ pub fn extract_story_number(item_id: &str) -> Option<&str> {
/// Returns `None` if the file doesn't exist or has no parseable name.
pub fn read_story_name(project_root: &Path, stage: &str, item_id: &str) -> Option<String> {
let path = project_root
.join(".storkit")
.join(".huskies")
.join("work")
.join(stage)
.join(format!("{item_id}.md"));
@@ -507,7 +507,7 @@ mod tests {
#[tokio::test]
async fn rate_limit_warning_sends_notification_with_agent_and_story() {
let tmp = tempfile::tempdir().unwrap();
let stage_dir = tmp.path().join(".storkit").join("work").join("2_current");
let stage_dir = tmp.path().join(".huskies").join("work").join("2_current");
std::fs::create_dir_all(&stage_dir).unwrap();
std::fs::write(
stage_dir.join("365_story_rate_limit.md"),
@@ -613,7 +613,7 @@ mod tests {
#[tokio::test]
async fn stage_notification_uses_dynamic_room_ids() {
let tmp = tempfile::tempdir().unwrap();
let stage_dir = tmp.path().join(".storkit").join("work").join("3_qa");
let stage_dir = tmp.path().join(".huskies").join("work").join("3_qa");
std::fs::create_dir_all(&stage_dir).unwrap();
std::fs::write(
stage_dir.join("10_story_foo.md"),
@@ -642,7 +642,7 @@ mod tests {
stage: "3_qa".to_string(),
item_id: "10_story_foo".to_string(),
action: "qa".to_string(),
commit_msg: "storkit: qa 10_story_foo".to_string(),
commit_msg: "huskies: qa 10_story_foo".to_string(),
from_stage: None,
}).unwrap();
@@ -677,7 +677,7 @@ mod tests {
stage: "3_qa".to_string(),
item_id: "10_story_foo".to_string(),
action: "qa".to_string(),
commit_msg: "storkit: qa 10_story_foo".to_string(),
commit_msg: "huskies: qa 10_story_foo".to_string(),
from_stage: None,
}).unwrap();
@@ -746,7 +746,7 @@ mod tests {
let tmp = tempfile::tempdir().unwrap();
let stage_dir = tmp
.path()
.join(".storkit")
.join(".huskies")
.join("work")
.join("2_current");
std::fs::create_dir_all(&stage_dir).unwrap();
@@ -772,7 +772,7 @@ mod tests {
let tmp = tempfile::tempdir().unwrap();
let stage_dir = tmp
.path()
.join(".storkit")
.join(".huskies")
.join("work")
.join("2_current");
std::fs::create_dir_all(&stage_dir).unwrap();
@@ -858,7 +858,7 @@ mod tests {
#[tokio::test]
async fn story_blocked_sends_notification_with_reason() {
let tmp = tempfile::tempdir().unwrap();
let stage_dir = tmp.path().join(".storkit").join("work").join("2_current");
let stage_dir = tmp.path().join(".huskies").join("work").join("2_current");
std::fs::create_dir_all(&stage_dir).unwrap();
std::fs::write(
stage_dir.join("425_story_blocking_test.md"),
@@ -1033,7 +1033,7 @@ mod tests {
#[tokio::test]
async fn rate_limit_warning_suppressed_when_config_false() {
let tmp = tempfile::tempdir().unwrap();
let sk_dir = tmp.path().join(".storkit");
let sk_dir = tmp.path().join(".huskies");
std::fs::create_dir_all(&sk_dir).unwrap();
std::fs::write(
sk_dir.join("project.toml"),
@@ -1066,7 +1066,7 @@ mod tests {
#[tokio::test]
async fn rate_limit_hard_block_always_sent_when_config_false() {
let tmp = tempfile::tempdir().unwrap();
let sk_dir = tmp.path().join(".storkit");
let sk_dir = tmp.path().join(".huskies");
std::fs::create_dir_all(&sk_dir).unwrap();
std::fs::write(
sk_dir.join("project.toml"),
@@ -1101,7 +1101,7 @@ mod tests {
#[tokio::test]
async fn story_blocked_always_sent_when_config_false() {
let tmp = tempfile::tempdir().unwrap();
let sk_dir = tmp.path().join(".storkit");
let sk_dir = tmp.path().join(".huskies");
std::fs::create_dir_all(&sk_dir).unwrap();
std::fs::write(
sk_dir.join("project.toml"),
@@ -1135,7 +1135,7 @@ mod tests {
#[tokio::test]
async fn rate_limit_warning_suppressed_after_hot_reload() {
let tmp = tempfile::tempdir().unwrap();
let sk_dir = tmp.path().join(".storkit");
let sk_dir = tmp.path().join(".huskies");
std::fs::create_dir_all(&sk_dir).unwrap();
// Start with notifications enabled.
std::fs::write(