diff --git a/.air.toml b/.air.toml
index 14f15b8..60055d6 100644
--- a/.air.toml
+++ b/.air.toml
@@ -1,9 +1,9 @@
root = "."
tmp_dir = "tmp"
[build]
- cmd = "go build -o ./tmp/stalkarr ./cmd/server"
- bin = "./tmp/stalkarr"
- full_bin = "DATA_DIR=./config ./tmp/stalkarr"
+ cmd = "go build -o ./tmp/sleeparr ./cmd/server"
+ bin = "./tmp/sleeparr"
+ full_bin = "DATA_DIR=./config ./tmp/sleeparr"
delay = 1000
exclude_dir = ["frontend", "tmp", "data", "internal/static/dist"]
include_ext = ["go"]
diff --git a/.env.example b/.env.example
index 95c03f2..b065889 100644
--- a/.env.example
+++ b/.env.example
@@ -1,5 +1,5 @@
# -----------------------------------------------
-# stalkarr — environment configuration
+# sleeparr — environment configuration
# -----------------------------------------------
# REQUIRED — generate with: openssl rand -hex 32
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7dc648d..be0282c 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -2,7 +2,7 @@ name: Release
on:
push:
- branches: [main]
+ branches: [main, "feat/**", "chore/**", "fix/**"]
tags:
- "v*"
@@ -34,6 +34,7 @@ jobs:
with:
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
+ type=ref,event=branch,enable=${{ !startsWith(github.ref, 'refs/heads/main') }}
type=raw,value=dev,enable={{is_default_branch}}
type=semver,pattern={{version}}
type=semver,pattern={{major}}.{{minor}}
diff --git a/.gitignore b/.gitignore
index 3a6b3bd..6522342 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
# Build output
-/stalkarr
+/sleeparr
frontend/dist
internal/static/dist/*
!internal/static/dist/.gitkeep
diff --git a/Dockerfile b/Dockerfile
index f6d1612..ff3397a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -21,8 +21,8 @@ COPY --from=frontend-builder /app/frontend/dist ./internal/static/dist
ARG VERSION=dev
RUN CGO_ENABLED=0 GOOS=linux go build \
- -ldflags="-s -w -X stalkarr/internal/version.Version=${VERSION}" \
- -o stalkarr ./cmd/server
+ -ldflags="-s -w -X sleeparr/internal/version.Version=${VERSION}" \
+ -o sleeparr ./cmd/server
# ---- Stage 3: Final image ----
FROM alpine:3.19
@@ -30,7 +30,7 @@ FROM alpine:3.19
RUN apk add --no-cache su-exec tzdata
WORKDIR /app
-COPY --from=go-builder /app/stalkarr .
+COPY --from=go-builder /app/sleeparr .
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
diff --git a/README.md b/README.md
index 7da9b7a..c5e1013 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# STALKARR
+# SLEEPARR
> **Personal project in BETA!** I built this for my own homelab using the tools I use daily: [Zed](https://zed.dev), [Claude](https://claude.ai), and [OpenCode](https://opencode.ai). AI is part of my regular workflow the same way Stack Overflow and docs always have been. If you spot any issues, chuck in a ticket and I'll get to it.
@@ -7,8 +7,8 @@ A self-hosted dashboard for searching missing media across your arr stack.
> Currently supports **Sonarr**. Radarr support coming soon.
-
-
+
+
## Quick start
@@ -27,9 +27,9 @@ docker compose up -d
## docker-compose.yml
```yaml
services:
- stalkarr:
- image: ghcr.io/codevski/stalkarr:latest
- container_name: stalkarr
+ sleeparr:
+ image: ghcr.io/codevski/sleeparr:latest
+ container_name: sleeparr
restart: unless-stopped
ports:
- "${PORT:-8080}:8080"
@@ -82,7 +82,7 @@ air
cd frontend && bun run dev
```
-See `bruno/stalkarr/` for the API collection.
+See `bruno/sleeparr/` for the API collection.
## License
diff --git a/bruno/stalkarr/.gitignore b/bruno/sleeparr/.gitignore
similarity index 100%
rename from bruno/stalkarr/.gitignore
rename to bruno/sleeparr/.gitignore
diff --git a/bruno/stalkarr/README.md b/bruno/sleeparr/README.md
similarity index 82%
rename from bruno/stalkarr/README.md
rename to bruno/sleeparr/README.md
index bd05870..b0c3a95 100644
--- a/bruno/stalkarr/README.md
+++ b/bruno/sleeparr/README.md
@@ -1,11 +1,11 @@
-# Stalkarr — Bruno Collection
+# Sleeparr — Bruno Collection
-API tests for the Stalkarr backend. Uses [Bruno](https://www.usebruno.com/) a git-friendly API client.
+API tests for the Sleeparr backend. Uses [Bruno](https://www.usebruno.com/) a git-friendly API client.
## Setup
1. Install Bruno: https://www.usebruno.com/downloads
-2. Open Bruno → **Open Collection** → select this `bruno/stalkarr` folder
+2. Open Bruno → **Open Collection** → select this `bruno/sleeparr` folder
3. Select the **Local** environment (top right dropdown)
## First run order
diff --git a/bruno/stalkarr/auth/login.bru b/bruno/sleeparr/auth/login.bru
similarity index 100%
rename from bruno/stalkarr/auth/login.bru
rename to bruno/sleeparr/auth/login.bru
diff --git a/bruno/stalkarr/auth/setup.bru b/bruno/sleeparr/auth/setup.bru
similarity index 100%
rename from bruno/stalkarr/auth/setup.bru
rename to bruno/sleeparr/auth/setup.bru
diff --git a/bruno/stalkarr/bruno.json b/bruno/sleeparr/bruno.json
similarity index 69%
rename from bruno/stalkarr/bruno.json
rename to bruno/sleeparr/bruno.json
index c0d5434..999e925 100644
--- a/bruno/stalkarr/bruno.json
+++ b/bruno/sleeparr/bruno.json
@@ -1,15 +1,12 @@
{
"version": "1",
- "name": "Stalkarr",
+ "name": "Sleeparr",
"type": "collection",
- "ignore": [
- "node_modules",
- ".git"
- ],
+ "ignore": ["node_modules", ".git"],
"size": 0.0018472671508789062,
"filesCount": 7,
"presets": {
"requestType": "http",
"requestUrl": ""
}
-}
\ No newline at end of file
+}
diff --git a/bruno/stalkarr/collection.bru b/bruno/sleeparr/collection.bru
similarity index 100%
rename from bruno/stalkarr/collection.bru
rename to bruno/sleeparr/collection.bru
diff --git a/bruno/stalkarr/environments/Local.bru b/bruno/sleeparr/environments/Local.bru
similarity index 100%
rename from bruno/stalkarr/environments/Local.bru
rename to bruno/sleeparr/environments/Local.bru
diff --git a/bruno/stalkarr/settings/add-sonarr-instance.bru b/bruno/sleeparr/settings/add-sonarr-instance.bru
similarity index 100%
rename from bruno/stalkarr/settings/add-sonarr-instance.bru
rename to bruno/sleeparr/settings/add-sonarr-instance.bru
diff --git a/bruno/stalkarr/settings/get-settings.bru b/bruno/sleeparr/settings/get-settings.bru
similarity index 100%
rename from bruno/stalkarr/settings/get-settings.bru
rename to bruno/sleeparr/settings/get-settings.bru
diff --git a/bruno/stalkarr/settings/get-version.bru b/bruno/sleeparr/settings/get-version.bru
similarity index 100%
rename from bruno/stalkarr/settings/get-version.bru
rename to bruno/sleeparr/settings/get-version.bru
diff --git a/bruno/stalkarr/settings/save-settings.bru b/bruno/sleeparr/settings/save-settings.bru
similarity index 77%
rename from bruno/stalkarr/settings/save-settings.bru
rename to bruno/sleeparr/settings/save-settings.bru
index d3dc9b5..60859f1 100644
--- a/bruno/stalkarr/settings/save-settings.bru
+++ b/bruno/sleeparr/settings/save-settings.bru
@@ -17,8 +17,8 @@ auth:bearer {
body:json {
{
"sonarr": {
- "url": "http://localhost:8989",
- "api_key": "your-sonarr-api-key-here"
+ "url": "http://192.168.1.6:8989",
+ "api_key": ""
}
}
}
diff --git a/bruno/stalkarr/settings/test-sonarr-instance.bru b/bruno/sleeparr/settings/test-sonarr-instance.bru
similarity index 100%
rename from bruno/stalkarr/settings/test-sonarr-instance.bru
rename to bruno/sleeparr/settings/test-sonarr-instance.bru
diff --git a/bruno/stalkarr/sonarr/get-missing.bru b/bruno/sleeparr/sonarr/get-missing.bru
similarity index 100%
rename from bruno/stalkarr/sonarr/get-missing.bru
rename to bruno/sleeparr/sonarr/get-missing.bru
diff --git a/bruno/sleeparr/sonarr/trigger-run.bru b/bruno/sleeparr/sonarr/trigger-run.bru
new file mode 100644
index 0000000..5b3b4af
--- /dev/null
+++ b/bruno/sleeparr/sonarr/trigger-run.bru
@@ -0,0 +1,19 @@
+meta {
+ name: Trigger Agent
+ type: http
+ seq: 2
+}
+
+post {
+ url: {{base_url}}/api/sonarr/run
+ body: none
+ auth: bearer
+}
+
+auth:bearer {
+ token: {{token}}
+}
+
+docs {
+ Triggers a agent run. Currently a stub returns {"status": "running"}.
+}
diff --git a/bruno/stalkarr/sonarr/trigger-hunt.bru b/bruno/stalkarr/sonarr/trigger-hunt.bru
deleted file mode 100644
index 4517475..0000000
--- a/bruno/stalkarr/sonarr/trigger-hunt.bru
+++ /dev/null
@@ -1,19 +0,0 @@
-meta {
- name: Trigger Stalk
- type: http
- seq: 2
-}
-
-post {
- url: {{base_url}}/api/sonarr/stalk
- body: none
- auth: bearer
-}
-
-auth:bearer {
- token: {{token}}
-}
-
-docs {
- Triggers a stalk job. Currently a stub returns {"status": "stalking"}.
-}
diff --git a/cmd/server/main.go b/cmd/server/main.go
index b9d26db..187dbe0 100644
--- a/cmd/server/main.go
+++ b/cmd/server/main.go
@@ -6,9 +6,9 @@ import (
"net/http"
"os"
"os/signal"
- "stalkarr/internal/api"
- "stalkarr/internal/config"
- "stalkarr/internal/jobs"
+ "sleeparr/internal/api"
+ "sleeparr/internal/config"
+ "sleeparr/internal/jobs"
"syscall"
"time"
@@ -29,12 +29,12 @@ func main() {
log.Fatalf("failed to load config: %v", err)
}
- stalkerCtx, stalkerCancel := context.WithCancel(context.Background())
- defer stalkerCancel()
- stalker := jobs.NewStalkerJob(config.Get)
- go stalker.Start(stalkerCtx)
+ agentCtx, agentCancel := context.WithCancel(context.Background())
+ defer agentCancel()
+ agent := jobs.NewAgentJob(config.Get)
+ go agent.Start(agentCtx)
- r := api.NewRouter(stalker)
+ r := api.NewRouter(agent)
r.SetTrustedProxies(nil)
port := os.Getenv("PORT")
@@ -48,7 +48,7 @@ func main() {
}
go func() {
- log.Printf("Stalkarr running on :%s (data: %s)", port, dataDir)
+ log.Printf("Sleeparr running on :%s (data: %s)", port, dataDir)
if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
log.Fatalf("server error: %v", err)
}
@@ -62,9 +62,9 @@ func main() {
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
- stalkerCancel()
+ agentCancel()
if err := srv.Shutdown(ctx); err != nil {
log.Fatalf("forced shutdown: %v", err)
}
- log.Println("Stalkarr stopped")
+ log.Println("Sleeparr stopped")
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 3ec9fe4..98686a5 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,7 @@
services:
- stalkarr:
- image: ghcr.io/codevski/stalkarr:latest
- container_name: stalkarr
+ sleeparr:
+ image: ghcr.io/codevski/sleeparr:latest
+ container_name: sleeparr
restart: unless-stopped
ports:
- "${PORT:-8080}:8080"
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index 16218f0..208dce7 100644
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -6,23 +6,23 @@ PGID=${PGID:-1000}
echo "
─────────────────────────────────────
- stalkarr
+sleeparr
─────────────────────────────────────
User UID: ${PUID}
User GID: ${PGID}
─────────────────────────────────────
"
-if ! getent group stalkarr > /dev/null 2>&1; then
- addgroup -g "$PGID" stalkarr
+if ! getent group sleeparr > /dev/null 2>&1; then
+ addgroup -g "$PGID" sleeparr
fi
-if ! getent passwd stalkarr > /dev/null 2>&1; then
- adduser -D -u "$PUID" -G stalkarr stalkarr
+if ! getent passwd sleeparr > /dev/null 2>&1; then
+ adduser -D -u "$PUID" -G sleeparr sleeparr
fi
mkdir -p /config
-chown -R stalkarr:stalkarr /config
-chown -R stalkarr:stalkarr /app
+chown -R sleeparr:sleeparr /config
+chown -R sleeparr:sleeparr /app
-exec su-exec stalkarr:stalkarr /app/stalkarr
+exec su-exec sleeparr:sleeparr /app/sleeparr
diff --git a/frontend/index.html b/frontend/index.html
index d967bed..19b2eb9 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -4,7 +4,7 @@
- stalkarr
+ sleeparr
diff --git a/frontend/package.json b/frontend/package.json
index 87da994..5e56be3 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
- "name": "stalkarr",
+ "name": "sleeparr",
"private": true,
- "version": "0.0.1",
+ "version": "0.0.2",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx
index c1b4234..d497d53 100644
--- a/frontend/src/components/Footer.tsx
+++ b/frontend/src/components/Footer.tsx
@@ -3,7 +3,7 @@ import { ExternalLink } from "lucide-react";
import api from "@/lib/api";
import type { VersionInfo } from "@/types";
-const RELEASES_URL = "https://github.com/codevski/stalkarr/releases/latest";
+const RELEASES_URL = "https://github.com/codevski/sleeparr/releases/latest";
export default function Footer() {
const [version, setVersion] = useState(null);
@@ -18,7 +18,7 @@ export default function Footer() {
return (