From 56f87327b1aed9fa1314b13bab62605139498ebe Mon Sep 17 00:00:00 2001 From: ponzischeme89 Date: Sun, 18 Jan 2026 03:06:52 +1300 Subject: [PATCH] 1.0.4 - tweaks to sidebar & ThemeSelector fixes --- docs/index.html | 925 ++++++++---------- frontend/src/components/AppSidebar.svelte | 17 +- frontend/src/components/Footer.svelte | 3 - frontend/src/components/ThemeSelector.svelte | 2 + .../components/ui/combobox/Combobox.svelte | 34 +- 5 files changed, 458 insertions(+), 523 deletions(-) diff --git a/docs/index.html b/docs/index.html index dcf6f9c..0e5f127 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,513 +1,452 @@ - + - - Sublogue — Documentation - - - - - - - - - - - - + + + Sublogue + + + + + + + + - - - - - - -
-
- Usage - Philosophy - Docker Hub -
- - -
-
-

Sublogue

-

- Context-aware subtitle augmentation. - Plot summaries and metadata, inserted without breaking sync. -

+ + +
-
-

Install with Docker

-
docker pull ghcr.io/yourname/sublogue:latest
+
+
+
+

+ Add metadata to your subtitles with Sublogue +

+

+ Sublogue inserts story context into your subtitle files using OMDb, TMDb, and TVMaze. It can also + clean out ad blocks like YTS promo text while preserving timing, so every subtitle reads cleanly. +

+
+ SRT safe + Multi-source + Batch scans + Web UI +
+
+
+
+ +

Overview

+
+

+ Sublogue scans your subtitle folders, pulls metadata from OMDb, TMDb, and TVMaze, then injects plots, + ratings, and credits directly into SRT files without touching timing. +

+
    +
  • + + Preserve original subtitle timing while enriching content. +
  • +
  • + + Remove ad text and promo lines from SRT files (YTS and similar). +
  • +
  • + + Choose preferred metadata sources per scan. +
  • +
  • + + Monitor integration usage and cache clearing in settings. +
  • +
+
+
-
version: "3.8"
+      
+
+ +

Quickstart

+
+

+ Launch the container, point Sublogue at your media folder, then open the UI and run a scan. +

+
+
+

Docker CLI

+
docker run -d \
+  --name sublogue \
+  -p 5000:5000 \
+  -e TZ=Etc/UTC \
+  -e PUID=1000 -e PGID=1000 \
+  -v ./data:/config \
+  -v ./media:/media \
+  ponzischeme89/sublogue:latest
+
+
+

Open UI

+
+ + http://localhost:5000 +
+

+ Head to Settings -> Integrations to add your metadata providers and start scanning. +

+
+
+
+ +
+
+ +

Install

+
+
+
+

🐳 Docker Compose

+

+ Ideal for Portainer, Synology, or homelab setups. +

+
version: "3.9"
 services:
   sublogue:
-    image: ghcr.io/yourname/sublogue:latest
+    image: ponzischeme89/sublogue:latest
     container_name: sublogue
-    volumes:
-      - ./subs:/data/subs
     restart: unless-stopped
-
- - - ⬇ View on Docker Hub - -
- -
-

What Sublogue adds to your subtitles

- -
-
-
SUBLOGUE
-
Memento (2022)
-
IMDb 8.0 · RT 54% · 113 min
-
- A man with short-term memory loss attempts to track down his wife’s - murderer using notes, tattoos, and fragmented recollections. -
-
- -
-
SUBLOGUE
-
Arrival (2016)
-
IMDb 7.9 · RT 94% · 116 min
-
- A linguist is recruited to communicate with extraterrestrial visitors - whose arrival challenges humanity’s understanding of time. -
-
- -
-
SUBLOGUE
-
Ex Machina (2014)
-
IMDb 7.7 · RT 92% · 108 min
-
- A programmer evaluates the consciousness of an advanced AI in a - secluded research facility. -
-
-
-
- - -
-

What it does

-

- Sublogue appends a short, readable plot summary directly into - .srt subtitle files at the start of playback. - No timing drift. No destructive edits. -

-
- - -
-
-

Basic usage

-
sublogue scan ./subs
-
- -
-

Philosophy

-

- Sublogue performs one task, carefully, and then gets out of the way. - It is not a downloader. It is not a media manager. + environment: + - TZ=Etc/UTC + - PUID=1000 + - PGID=1000 + volumes: + - ./data:/config + - ./media:/media + ports: + - "5000:5000"

+ +
+

🧰 Unraid

+

+ Use the bundled template and map volumes into /config and /media.

-
+
+

/mnt/user/appdata/sublogue -> /config

+

/mnt/user/media -> /media

+
+ +
+

🐲 Komodo

+

+ Paste a stack template and attach the NPM network. +

+
version: "3.9"
+services:
+  sublogue:
+    image: ponzischeme89/sublogue:latest
+    container_name: sublogue
+    environment:
+      - TZ=Etc/UTC
+    ports:
+      - "5000:5000"
+    volumes:
+      - /volume1/Docker/sublogue/data:/config
+      - /volume1/Media:/media
+    restart: unless-stopped
+    networks:
+      - npm_network
+networks:
+  npm_network:
+    external: true
+
+ + + +
+
+ +

Clean SRTs

+
+

+ Remove ad blocks like YTS and other promo lines without touching timing. Sublogue keeps subtitle order + intact while cleaning the text. +

+
+
+
+

Before

+ + YTS + +
+
1
+00:00:01,000 --> 00:00:04,000
+Visit YTS.mx for more movies
+
+2
+00:00:05,000 --> 00:00:07,200
+Grab the latest releases
+
+
+
+

After

+ + Clean + +
+
1
+00:00:08,000 --> 00:00:10,200
+You are early.
+

+ Ad-only blocks are removed, while the rest of the subtitle content remains untouched. +

+
+
+
+ +
+
+ +

Metadata Examples

+
+

+ Sublogue can insert plots, runtimes, directors, and ratings right into the subtitle header for quick + context before the dialogue begins. +

+
+
+
+ +

Plot + Runtime

+
+
+

Injected Header

+

Plot

+

+ A retired detective returns for one last case and uncovers a hidden network in the city. +

+

Runtime: 112 min

+
+
+
+
+ +

Director + Cast

+
+
+

Injected Header

+

Director

+

Ava Solomon

+

Cast

+

J. Harper, L. Chen, M. Brooks

+
+
+
+
+ +

Ratings

+
+
+

Injected Header

+
+ + IMDb 7.8 + + + RT 94% + +
+
+ + + + + +
+
+
+ Sublogue + Sublogue metadata branding +
+
+
+
+ +
+
+
+ +

Integrations

+
+

+ Start with zero providers enabled. Add OMDb, TMDb, or TVMaze when you have keys ready. Each scan can + choose its preferred source. +

+
+
+
+ + OMDb - Fast movie metadata +
+
+
+
+ + TMDb - Rich cast and ratings +
+
+
+
+ + TVMaze - Series and episodes +
+
+
+
+
+
+ +

API Notes

+
+

+ Sublogue expects your media folders to be readable by the container. Large scans stream results to the + UI while the API continues processing in the background. +

+
+
+ +
+

Volumes

+

Map /config for settings and /media for subtitle files.

+
+
+
+ +
+

Status

+

Scan progress appears in the UI with streaming rows as files are processed.

+
+
+
+ +
+

Settings

+

Integrations remain disabled until you add keys in the Settings tab.

+
+
+
+
+
+ +
+
+
+ +

Join the Community

+
+

+ Jump into the ponzischeme89 Discord and visit #sublogue-support + for help, updates, and feature requests. +

+
+ + #sublogue-support +
+
+
+ + + + - - \ No newline at end of file diff --git a/frontend/src/components/AppSidebar.svelte b/frontend/src/components/AppSidebar.svelte index 521f17a..7ee39d2 100644 --- a/frontend/src/components/AppSidebar.svelte +++ b/frontend/src/components/AppSidebar.svelte @@ -156,25 +156,14 @@ class={`flex items-center rounded-md bg-white/5 px-3 py-2 text-xs ${collapsed ? "justify-center" : "justify-between"}`} > {#if !collapsed} - Version v1.0.2 Release Candiatev1.0.4 Release Candiate {:else} v {/if} - - - {#if !collapsed} - Check updates - {/if} - + {#if !collapsed} - GitHub + Star on GitHub {/if} diff --git a/frontend/src/components/Footer.svelte b/frontend/src/components/Footer.svelte index a6193df..e4705c3 100644 --- a/frontend/src/components/Footer.svelte +++ b/frontend/src/components/Footer.svelte @@ -60,9 +60,6 @@ >
- - Sublogue Version: v1.0.3 Release Candiate - Open source (AGPL-3.0) diff --git a/frontend/src/components/ThemeSelector.svelte b/frontend/src/components/ThemeSelector.svelte index 316e555..2bb4dd5 100644 --- a/frontend/src/components/ThemeSelector.svelte +++ b/frontend/src/components/ThemeSelector.svelte @@ -20,6 +20,8 @@ value={$currentTheme} placeholder="Appearance" className={className} + dropup={true} + searchable={false} on:change={handleThemeChange} > diff --git a/frontend/src/lib/components/ui/combobox/Combobox.svelte b/frontend/src/lib/components/ui/combobox/Combobox.svelte index a58dbc8..688fc8b 100644 --- a/frontend/src/lib/components/ui/combobox/Combobox.svelte +++ b/frontend/src/lib/components/ui/combobox/Combobox.svelte @@ -11,6 +11,8 @@ export let placeholder = 'Select...' export let disabled = false export let className = '' + export let searchable = true + export let dropup = false let open = false let search = '' @@ -22,10 +24,12 @@ items.find((item) => item.value === itemValue)?.label $: selectedLabel = getLabel(value) - $: filteredItems = items.filter((item) => { - const haystack = `${item.label} ${item.description || ''}`.toLowerCase() - return haystack.includes(search.toLowerCase()) - }) + $: filteredItems = searchable + ? items.filter((item) => { + const haystack = `${item.label} ${item.description || ''}`.toLowerCase() + return haystack.includes(search.toLowerCase()) + }) + : items function toggle() { if (!disabled) open = !open @@ -105,16 +109,20 @@ {#if open}
-
- (search = e.target.value)} - placeholder="Search..." - className="h-9 text-[12px]" - /> -
+ {#if searchable} +
+ (search = e.target.value)} + placeholder="Search..." + className="h-9 text-[12px]" + /> +
+ {/if}
{#if filteredItems.length === 0}