refactor: rename project videnc-vibe -> av1dae

Rename the Go module, the cmd/ entrypoint dir, the binary, the default config
dir (~/.config/av1dae/), the Docker image/compose service, and all docs and
the dashboard wordmark. No behavioral change — import paths and identifiers
only.
This commit is contained in:
Esa Kataja
2026-06-21 19:02:06 +03:00
parent a6dc0018ac
commit 9bb7c72c1a
16 changed files with 67 additions and 67 deletions
+1 -1
View File
@@ -1,4 +1,4 @@
videnc-vibe av1dae
*.mkv *.mkv
*.mp4 *.mp4
*.wav *.wav
+2 -2
View File
@@ -1,5 +1,5 @@
videnc-vibe av1dae
videnc-vibe-dev av1dae-dev
*.mkv *.mkv
*.mp4 *.mp4
*.wav *.wav
+8 -8
View File
@@ -1,6 +1,6 @@
# AGENTS.md # AGENTS.md
This file provides guidance for agents operating in the videnc-vibe repository. This file provides guidance for agents operating in the av1dae repository.
## Project Overview ## Project Overview
@@ -10,14 +10,14 @@ Go-based CLI tool for transcoding DVD/Blu-ray to SVT-AV1 with automatic metadata
```bash ```bash
# Build binary # Build binary
go build -o videnc-vibe ./cmd/videnc/ go build -o av1dae ./cmd/av1dae/
# Run binary # Run binary
./videnc-vibe ./av1dae
# With flags # With flags
./videnc-vibe -d # Delete original after encode ./av1dae -d # Delete original after encode
./videnc-vibe -c /path/to/config.yaml ./av1dae -c /path/to/config.yaml
``` ```
## Code Style Guidelines ## Code Style Guidelines
@@ -29,7 +29,7 @@ go build -o videnc-vibe ./cmd/videnc/
### Imports ### Imports
- Group imports: standard library, external packages, internal packages - Group imports: standard library, external packages, internal packages
- Use aliases for packages: `"videnc-vibe/pkg/types"` - Use aliases for packages: `"av1dae/pkg/types"`
```go ```go
import ( import (
@@ -37,7 +37,7 @@ import (
"os" "os"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"videnc-vibe/pkg/types" "av1dae/pkg/types"
) )
``` ```
@@ -84,7 +84,7 @@ Example: `add: add command line argument support`
## Project Structure ## Project Structure
``` ```
cmd/videnc/main.go # CLI entrypoint cmd/av1dae/main.go # CLI entrypoint
internal/ internal/
config/ # Config loading config/ # Config loading
watcher/ # Folder polling watcher/ # Folder polling
+3 -3
View File
@@ -4,15 +4,15 @@ WORKDIR /src
COPY go.mod go.sum ./ COPY go.mod go.sum ./
RUN go mod download RUN go mod download
COPY . . COPY . .
RUN CGO_ENABLED=1 go build -ldflags="-s -w" -o /videnc-vibe ./cmd/videnc/ RUN CGO_ENABLED=1 go build -ldflags="-s -w" -o /av1dae ./cmd/av1dae/
FROM debian:bookworm-slim FROM debian:bookworm-slim
# ffmpeg gives ffmpeg+ffprobe; opus-tools gives opusenc; ca-certificates for OMDb/TVmaze HTTPS. # ffmpeg gives ffmpeg+ffprobe; opus-tools gives opusenc; ca-certificates for OMDb/TVmaze HTTPS.
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
ffmpeg opus-tools ca-certificates \ ffmpeg opus-tools ca-certificates \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
COPY --from=build /videnc-vibe /usr/local/bin/videnc-vibe COPY --from=build /av1dae /usr/local/bin/av1dae
# logs.db + log files land in the working dir — make it the mounted /data so they persist. # logs.db + log files land in the working dir — make it the mounted /data so they persist.
WORKDIR /data WORKDIR /data
EXPOSE 8080 EXPOSE 8080
ENTRYPOINT ["videnc-vibe", "-c", "/config/config.yaml"] ENTRYPOINT ["av1dae", "-c", "/config/config.yaml"]
+14 -14
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>videnc·vibe — User Manual</title> <title>av1dae — User Manual</title>
<style> <style>
:root { :root {
--bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f; --bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f;
@@ -216,7 +216,7 @@
<header class="hero"> <header class="hero">
<div class="hero-inner"> <div class="hero-inner">
<h1 class="wordmark"><span class="prompt">$ </span>videnc<span class="vibe">·vibe</span></h1> <h1 class="wordmark"><span class="prompt">$ </span>av<span class="vibe">1</span>dae</h1>
<p class="thesis">A folder-watching daemon that turns <b>.mkv</b> rips into <b>SVT-AV1 + Opus</b>, tags them with metadata from OMDb and TVmaze, and files the results — untouched by you after the drop.</p> <p class="thesis">A folder-watching daemon that turns <b>.mkv</b> rips into <b>SVT-AV1 + Opus</b>, tags them with metadata from OMDb and TVmaze, and files the results — untouched by you after the drop.</p>
<div class="flow" aria-label="Processing flow"> <div class="flow" aria-label="Processing flow">
@@ -284,14 +284,14 @@
<section id="build"> <section id="build">
<p class="eyebrow">02 — Compile</p> <p class="eyebrow">02 — Compile</p>
<h2>Build</h2> <h2>Build</h2>
<div class="pre"><pre><code>go build -o videnc-vibe ./cmd/videnc/</code></pre></div> <div class="pre"><pre><code>go build -o av1dae ./cmd/av1dae/</code></pre></div>
<p>This produces a self-contained binary <code>./videnc-vibe</code> (cgo is used for the SQLite logger, so it links against the system libc). To skip installing Go and the encoders on the host entirely, build the container instead — <a href="#docker">§12</a>.</p> <p>This produces a self-contained binary <code>./av1dae</code> (cgo is used for the SQLite logger, so it links against the system libc). To skip installing Go and the encoders on the host entirely, build the container instead — <a href="#docker">§12</a>.</p>
</section> </section>
<section id="config"> <section id="config">
<p class="eyebrow">03 — Setup</p> <p class="eyebrow">03 — Setup</p>
<h2>Configuration</h2> <h2>Configuration</h2>
<p>By default the config loads from <code>~/.config/videnc-vibe/config.yaml</code>. Pass <code>-c /path/to/config.yaml</code> to override.</p> <p>By default the config loads from <code>~/.config/av1dae/config.yaml</code>. Pass <code>-c /path/to/config.yaml</code> to override.</p>
<div class="pre is-file"><pre><code>omdb_api_key: "YOUR_API_KEY_HERE" <div class="pre is-file"><pre><code>omdb_api_key: "YOUR_API_KEY_HERE"
@@ -353,10 +353,10 @@ paths:
<section id="running"> <section id="running">
<p class="eyebrow">04 — Operate</p> <p class="eyebrow">04 — Operate</p>
<h2>Running</h2> <h2>Running</h2>
<div class="pre"><pre><code>./videnc-vibe <span class="cm"># default config, keep originals</span> <div class="pre"><pre><code>./av1dae <span class="cm"># default config, keep originals</span>
./videnc-vibe -d <span class="cm"># delete originals after success</span> ./av1dae -d <span class="cm"># delete originals after success</span>
./videnc-vibe -c /etc/videnc.yaml <span class="cm"># custom config</span> ./av1dae -c /etc/av1dae.yaml <span class="cm"># custom config</span>
./videnc-vibe -c /etc/videnc.yaml -d</code></pre></div> ./av1dae -c /etc/av1dae.yaml -d</code></pre></div>
<div class="tablewrap"> <div class="tablewrap">
<table> <table>
<thead><tr><th>Flag</th><th>Effect</th></tr></thead> <thead><tr><th>Flag</th><th>Effect</th></tr></thead>
@@ -549,7 +549,7 @@ old.broadcast.tvrip.tt0066026.mkv</code></pre></div>
<section id="layout"> <section id="layout">
<p class="eyebrow">11 — Source map</p> <p class="eyebrow">11 — Source map</p>
<h2>Project layout</h2> <h2>Project layout</h2>
<div class="pre is-file"><pre><code>cmd/videnc/main.go <span class="cm">CLI entrypoint and per-file orchestration</span> <div class="pre is-file"><pre><code>cmd/av1dae/main.go <span class="cm">CLI entrypoint and per-file orchestration</span>
internal/config/ <span class="cm">YAML config load + defaults + mkdir</span> internal/config/ <span class="cm">YAML config load + defaults + mkdir</span>
internal/watcher/ <span class="cm">Polling loop, media-type detection by pixel count</span> internal/watcher/ <span class="cm">Polling loop, media-type detection by pixel count</span>
internal/encoder/ <span class="cm">ffprobe/ffmpeg/opusenc wrapper, transcode pipeline</span> internal/encoder/ <span class="cm">ffprobe/ffmpeg/opusenc wrapper, transcode pipeline</span>
@@ -609,17 +609,17 @@ docker compose up -d --build</code></pre></div>
<h3>Without compose</h3> <h3>Without compose</h3>
<p>Same thing with plain <code>docker</code>:</p> <p>Same thing with plain <code>docker</code>:</p>
<div class="pre"><pre><code>docker build -t videnc-vibe . <div class="pre"><pre><code>docker build -t av1dae .
docker run -d --name videnc-vibe --restart unless-stopped \ docker run -d --name av1dae --restart unless-stopped \
-v "$PWD/config.yaml:/config/config.yaml:ro" \ -v "$PWD/config.yaml:/config/config.yaml:ro" \
-v "$PWD/media:/data" \ -v "$PWD/media:/data" \
videnc-vibe</code></pre></div> av1dae</code></pre></div>
</section> </section>
</main> </main>
</div> </div>
<footer>videnc·vibe — DVD/Blu-ray → SVT-AV1 transcoding daemon · single-file manual, no dependencies</footer> <footer>av1dae — DVD/Blu-ray → SVT-AV1 transcoding daemon · single-file manual, no dependencies</footer>
<script> <script>
// Copy buttons on every code block — native clipboard, no deps. // Copy buttons on every code block — native clipboard, no deps.
+9 -9
View File
@@ -1,4 +1,4 @@
# videnc-vibe — User Manual # av1dae — User Manual
A Go CLI that watches a folder for `.mkv` rips, transcodes them to SVT-AV1 video + Opus audio, embeds metadata fetched from OMDb (movies) or TVmaze (series), and files the results into output/originals/failed directories. A Go CLI that watches a folder for `.mkv` rips, transcodes them to SVT-AV1 video + Opus audio, embeds metadata fetched from OMDb (movies) or TVmaze (series), and files the results into output/originals/failed directories.
@@ -25,16 +25,16 @@ API keys:
## 2. Build ## 2. Build
```bash ```bash
go build -o videnc-vibe ./cmd/videnc/ go build -o av1dae ./cmd/av1dae/
``` ```
This produces a single static binary `./videnc-vibe`. This produces a single static binary `./av1dae`.
--- ---
## 3. Configuration ## 3. Configuration
By default the config is loaded from `~/.config/videnc-vibe/config.yaml`. Pass `-c /path/to/config.yaml` to override. By default the config is loaded from `~/.config/av1dae/config.yaml`. Pass `-c /path/to/config.yaml` to override.
Example (`config.example.yaml`): Example (`config.example.yaml`):
@@ -89,10 +89,10 @@ All five directories are created on startup if they don't exist.
## 4. Running ## 4. Running
```bash ```bash
./videnc-vibe # default config path, keep originals ./av1dae # default config path, keep originals
./videnc-vibe -d # delete originals after successful encode ./av1dae -d # delete originals after successful encode
./videnc-vibe -c /etc/videnc.yaml # custom config ./av1dae -c /etc/av1dae.yaml # custom config
./videnc-vibe -c /etc/videnc.yaml -d ./av1dae -c /etc/av1dae.yaml -d
``` ```
Flags: Flags:
@@ -268,7 +268,7 @@ The watcher continues with the next file; one bad rip won't stop the daemon.
## 11. Project layout ## 11. Project layout
``` ```
cmd/videnc/main.go CLI entrypoint and per-file orchestration cmd/av1dae/main.go CLI entrypoint and per-file orchestration
internal/config/ YAML config load + defaults + mkdir internal/config/ YAML config load + defaults + mkdir
internal/watcher/ Polling loop, media-type detection by pixel count internal/watcher/ Polling loop, media-type detection by pixel count
internal/encoder/ ffprobe/ffmpeg/opusenc wrapper, transcode pipeline internal/encoder/ ffprobe/ffmpeg/opusenc wrapper, transcode pipeline
+3 -3
View File
@@ -1,11 +1,11 @@
# videnc-vibe Specification # av1dae Specification
## Overview ## Overview
FFmpeg-based video transcoder for DVD/Blu-ray to SVT-AV1 with automatic metadata fetching. FFmpeg-based video transcoder for DVD/Blu-ray to SVT-AV1 with automatic metadata fetching.
## Configuration ## Configuration
Config path: `-c` flag or `~/.config/videnc-vibe/config.yaml` Config path: `-c` flag or `~/.config/av1dae/config.yaml`
```yaml ```yaml
omdb_api_key: "your-key-here" omdb_api_key: "your-key-here"
@@ -27,7 +27,7 @@ paths:
## Flags ## Flags
- `-d` : Delete original after successful encode (default: move to originals/) - `-d` : Delete original after successful encode (default: move to originals/)
- `-c` : Config file path (default: ~/.config/videnc-vibe/config.yaml) - `-c` : Config file path (default: ~/.config/av1dae/config.yaml)
## Input Parsing ## Input Parsing
+11 -11
View File
@@ -15,15 +15,15 @@ import (
"syscall" "syscall"
"time" "time"
"videnc-vibe/internal/config" "av1dae/internal/config"
"videnc-vibe/internal/encoder" "av1dae/internal/encoder"
"videnc-vibe/internal/logger" "av1dae/internal/logger"
"videnc-vibe/internal/metadata" "av1dae/internal/metadata"
"videnc-vibe/internal/mover" "av1dae/internal/mover"
"videnc-vibe/internal/server" "av1dae/internal/server"
"videnc-vibe/internal/status" "av1dae/internal/status"
"videnc-vibe/internal/watcher" "av1dae/internal/watcher"
"videnc-vibe/pkg/types" "av1dae/pkg/types"
) )
var ( var (
@@ -33,7 +33,7 @@ var (
func init() { func init() {
flag.BoolVar(&deleteOrigin, "d", false, "Delete original after successful encode") flag.BoolVar(&deleteOrigin, "d", false, "Delete original after successful encode")
flag.StringVar(&configPath, "c", "", "Config file path (default: ~/.config/videnc-vibe/config.yaml)") flag.StringVar(&configPath, "c", "", "Config file path (default: ~/.config/av1dae/config.yaml)")
} }
func main() { func main() {
@@ -91,7 +91,7 @@ func main() {
return processFile(ctx, inputPath, cfg, enc, metaClient, log, tracker) return processFile(ctx, inputPath, cfg, enc, metaClient, log, tracker)
}) })
log.Info("videnc-vibe started") log.Info("av1dae started")
} }
func processFile(ctx context.Context, inputPath string, cfg *types.Config, enc *encoder.Encoder, metaClient *metadata.Client, log *logger.Logger, tracker *status.Tracker) error { func processFile(ctx context.Context, inputPath string, cfg *types.Config, enc *encoder.Encoder, metaClient *metadata.Client, log *logger.Logger, tracker *status.Tracker) error {
+2 -2
View File
@@ -1,7 +1,7 @@
services: services:
videnc: av1dae:
build: . build: .
container_name: videnc-vibe container_name: av1dae
restart: unless-stopped restart: unless-stopped
# Cap CPU/RAM so a long SVT-AV1 encode can't starve the host. Tune to taste. # Cap CPU/RAM so a long SVT-AV1 encode can't starve the host. Tune to taste.
# `podman compose` honors deploy.resources; `podman-compose` (python) wants # `podman compose` honors deploy.resources; `podman-compose` (python) wants
+1 -1
View File
@@ -1,4 +1,4 @@
module videnc-vibe module av1dae
go 1.26.1 go 1.26.1
+2 -2
View File
@@ -5,12 +5,12 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"av1dae/pkg/types"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
"videnc-vibe/pkg/types"
) )
const ( const (
appName = "videnc-vibe" appName = "av1dae"
configName = "config.yaml" configName = "config.yaml"
) )
+3 -3
View File
@@ -13,9 +13,9 @@ import (
"strings" "strings"
"time" "time"
"videnc-vibe/internal/logger" "av1dae/internal/logger"
"videnc-vibe/internal/status" "av1dae/internal/status"
"videnc-vibe/pkg/types" "av1dae/pkg/types"
) )
var idetSummaryRegex = regexp.MustCompile(`Multi frame detection:\s+TFF:\s*(\d+)\s+BFF:\s*(\d+)\s+Progressive:\s*(\d+)\s+Undetermined:\s*(\d+)`) var idetSummaryRegex = regexp.MustCompile(`Multi frame detection:\s+TFF:\s*(\d+)\s+BFF:\s*(\d+)\s+Progressive:\s*(\d+)\s+Undetermined:\s*(\d+)`)
+2 -2
View File
@@ -12,8 +12,8 @@ import (
"strings" "strings"
"time" "time"
"videnc-vibe/internal/logger" "av1dae/internal/logger"
"videnc-vibe/pkg/types" "av1dae/pkg/types"
) )
const ( const (
+2 -2
View File
@@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title>videnc·vibe — status</title> <title>av1dae — status</title>
<style> <style>
:root { :root {
--bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f; --bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f;
@@ -117,7 +117,7 @@
<body> <body>
<header> <header>
<span class="wordmark"><span class="prompt">$ </span>videnc<span class="vibe">·vibe</span></span> <span class="wordmark"><span class="prompt">$ </span>av<span class="vibe">1</span>dae</span>
<span class="live"><span class="dot" id="dot"></span><span id="livetext">connecting</span></span> <span class="live"><span class="dot" id="dot"></span><span id="livetext">connecting</span></span>
</header> </header>
+3 -3
View File
@@ -8,9 +8,9 @@ import (
"net/http" "net/http"
"path/filepath" "path/filepath"
"videnc-vibe/internal/logger" "av1dae/internal/logger"
"videnc-vibe/internal/status" "av1dae/internal/status"
"videnc-vibe/internal/watcher" "av1dae/internal/watcher"
) )
//go:embed index.html //go:embed index.html
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"sort" "sort"
"time" "time"
"videnc-vibe/pkg/types" "av1dae/pkg/types"
) )
// failureBackoff is how long we skip a file after processFn returned an error // failureBackoff is how long we skip a file after processFn returned an error