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
*.mp4
*.wav
+2 -2
View File
@@ -1,5 +1,5 @@
videnc-vibe
videnc-vibe-dev
av1dae
av1dae-dev
*.mkv
*.mp4
*.wav
+8 -8
View File
@@ -1,6 +1,6 @@
# 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
@@ -10,14 +10,14 @@ Go-based CLI tool for transcoding DVD/Blu-ray to SVT-AV1 with automatic metadata
```bash
# Build binary
go build -o videnc-vibe ./cmd/videnc/
go build -o av1dae ./cmd/av1dae/
# Run binary
./videnc-vibe
./av1dae
# With flags
./videnc-vibe -d # Delete original after encode
./videnc-vibe -c /path/to/config.yaml
./av1dae -d # Delete original after encode
./av1dae -c /path/to/config.yaml
```
## Code Style Guidelines
@@ -29,7 +29,7 @@ go build -o videnc-vibe ./cmd/videnc/
### Imports
- Group imports: standard library, external packages, internal packages
- Use aliases for packages: `"videnc-vibe/pkg/types"`
- Use aliases for packages: `"av1dae/pkg/types"`
```go
import (
@@ -37,7 +37,7 @@ import (
"os"
"gopkg.in/yaml.v3"
"videnc-vibe/pkg/types"
"av1dae/pkg/types"
)
```
@@ -84,7 +84,7 @@ Example: `add: add command line argument support`
## Project Structure
```
cmd/videnc/main.go # CLI entrypoint
cmd/av1dae/main.go # CLI entrypoint
internal/
config/ # Config loading
watcher/ # Folder polling
+3 -3
View File
@@ -4,15 +4,15 @@ WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
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
# 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 \
ffmpeg opus-tools ca-certificates \
&& 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.
WORKDIR /data
EXPOSE 8080
ENTRYPOINT ["videnc-vibe", "-c", "/config/config.yaml"]
ENTRYPOINT ["av1dae", "-c", "/config/config.yaml"]
+14 -14
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>videnc·vibe — User Manual</title>
<title>av1dae — User Manual</title>
<style>
:root {
--bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f;
@@ -216,7 +216,7 @@
<header class="hero">
<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>
<div class="flow" aria-label="Processing flow">
@@ -284,14 +284,14 @@
<section id="build">
<p class="eyebrow">02 — Compile</p>
<h2>Build</h2>
<div class="pre"><pre><code>go build -o videnc-vibe ./cmd/videnc/</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>
<div class="pre"><pre><code>go build -o av1dae ./cmd/av1dae/</code></pre></div>
<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 id="config">
<p class="eyebrow">03 — Setup</p>
<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"
@@ -353,10 +353,10 @@ paths:
<section id="running">
<p class="eyebrow">04 — Operate</p>
<h2>Running</h2>
<div class="pre"><pre><code>./videnc-vibe <span class="cm"># default config, keep originals</span>
./videnc-vibe -d <span class="cm"># delete originals after success</span>
./videnc-vibe -c /etc/videnc.yaml <span class="cm"># custom config</span>
./videnc-vibe -c /etc/videnc.yaml -d</code></pre></div>
<div class="pre"><pre><code>./av1dae <span class="cm"># default config, keep originals</span>
./av1dae -d <span class="cm"># delete originals after success</span>
./av1dae -c /etc/av1dae.yaml <span class="cm"># custom config</span>
./av1dae -c /etc/av1dae.yaml -d</code></pre></div>
<div class="tablewrap">
<table>
<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">
<p class="eyebrow">11 — Source map</p>
<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/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>
@@ -609,17 +609,17 @@ docker compose up -d --build</code></pre></div>
<h3>Without compose</h3>
<p>Same thing with plain <code>docker</code>:</p>
<div class="pre"><pre><code>docker build -t videnc-vibe .
docker run -d --name videnc-vibe --restart unless-stopped \
<div class="pre"><pre><code>docker build -t av1dae .
docker run -d --name av1dae --restart unless-stopped \
-v "$PWD/config.yaml:/config/config.yaml:ro" \
-v "$PWD/media:/data" \
videnc-vibe</code></pre></div>
av1dae</code></pre></div>
</section>
</main>
</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>
// 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.
@@ -25,16 +25,16 @@ API keys:
## 2. Build
```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
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`):
@@ -89,10 +89,10 @@ All five directories are created on startup if they don't exist.
## 4. Running
```bash
./videnc-vibe # default config path, keep originals
./videnc-vibe -d # delete originals after successful encode
./videnc-vibe -c /etc/videnc.yaml # custom config
./videnc-vibe -c /etc/videnc.yaml -d
./av1dae # default config path, keep originals
./av1dae -d # delete originals after successful encode
./av1dae -c /etc/av1dae.yaml # custom config
./av1dae -c /etc/av1dae.yaml -d
```
Flags:
@@ -268,7 +268,7 @@ The watcher continues with the next file; one bad rip won't stop the daemon.
## 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/watcher/ Polling loop, media-type detection by pixel count
internal/encoder/ ffprobe/ffmpeg/opusenc wrapper, transcode pipeline
+3 -3
View File
@@ -1,11 +1,11 @@
# videnc-vibe Specification
# av1dae Specification
## Overview
FFmpeg-based video transcoder for DVD/Blu-ray to SVT-AV1 with automatic metadata fetching.
## Configuration
Config path: `-c` flag or `~/.config/videnc-vibe/config.yaml`
Config path: `-c` flag or `~/.config/av1dae/config.yaml`
```yaml
omdb_api_key: "your-key-here"
@@ -27,7 +27,7 @@ paths:
## Flags
- `-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
+11 -11
View File
@@ -15,15 +15,15 @@ import (
"syscall"
"time"
"videnc-vibe/internal/config"
"videnc-vibe/internal/encoder"
"videnc-vibe/internal/logger"
"videnc-vibe/internal/metadata"
"videnc-vibe/internal/mover"
"videnc-vibe/internal/server"
"videnc-vibe/internal/status"
"videnc-vibe/internal/watcher"
"videnc-vibe/pkg/types"
"av1dae/internal/config"
"av1dae/internal/encoder"
"av1dae/internal/logger"
"av1dae/internal/metadata"
"av1dae/internal/mover"
"av1dae/internal/server"
"av1dae/internal/status"
"av1dae/internal/watcher"
"av1dae/pkg/types"
)
var (
@@ -33,7 +33,7 @@ var (
func init() {
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() {
@@ -91,7 +91,7 @@ func main() {
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 {
+2 -2
View File
@@ -1,7 +1,7 @@
services:
videnc:
av1dae:
build: .
container_name: videnc-vibe
container_name: av1dae
restart: unless-stopped
# 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
+1 -1
View File
@@ -1,4 +1,4 @@
module videnc-vibe
module av1dae
go 1.26.1
+2 -2
View File
@@ -5,12 +5,12 @@ import (
"os"
"path/filepath"
"av1dae/pkg/types"
"gopkg.in/yaml.v3"
"videnc-vibe/pkg/types"
)
const (
appName = "videnc-vibe"
appName = "av1dae"
configName = "config.yaml"
)
+3 -3
View File
@@ -13,9 +13,9 @@ import (
"strings"
"time"
"videnc-vibe/internal/logger"
"videnc-vibe/internal/status"
"videnc-vibe/pkg/types"
"av1dae/internal/logger"
"av1dae/internal/status"
"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+)`)
+2 -2
View File
@@ -12,8 +12,8 @@ import (
"strings"
"time"
"videnc-vibe/internal/logger"
"videnc-vibe/pkg/types"
"av1dae/internal/logger"
"av1dae/pkg/types"
)
const (
+2 -2
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>videnc·vibe — status</title>
<title>av1dae — status</title>
<style>
:root {
--bg:#0d1117; --panel:#151b23; --panel-2:#1a2230; --line:#26303f;
@@ -117,7 +117,7 @@
<body>
<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>
</header>
+3 -3
View File
@@ -8,9 +8,9 @@ import (
"net/http"
"path/filepath"
"videnc-vibe/internal/logger"
"videnc-vibe/internal/status"
"videnc-vibe/internal/watcher"
"av1dae/internal/logger"
"av1dae/internal/status"
"av1dae/internal/watcher"
)
//go:embed index.html
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"sort"
"time"
"videnc-vibe/pkg/types"
"av1dae/pkg/types"
)
// failureBackoff is how long we skip a file after processFn returned an error