Compare commits

..

52 Commits

Author SHA1 Message Date
Brock H Caldwell
e489f73f7c fix(ci): adds --ignore-platform-reqs to composer
All checks were successful
CI / build-test (push) Successful in 2m54s
2026-03-09 13:59:25 -05:00
Brock H Caldwell
554b7774f6 Update docker
All checks were successful
CI / build-test (push) Successful in 3m10s
2026-03-09 13:14:27 -05:00
Brock H Caldwell
86ea9d5b38 Update ci
All checks were successful
CI / build-test (push) Successful in 3m52s
2026-03-09 12:45:40 -05:00
Brock H Caldwell
a61da34f2a Update ci
All checks were successful
CI / build-test (push) Successful in 3m6s
2026-03-09 12:41:33 -05:00
Brock H Caldwell
225754dfe5 Update ci
All checks were successful
CI / build-test (push) Successful in 3m25s
2026-03-09 12:01:56 -05:00
Brock H Caldwell
6e358fe1eb Update ci
All checks were successful
CI / build-test (push) Successful in 3m7s
2026-03-09 11:51:26 -05:00
Brock H Caldwell
a2da2698e3 Update ci
Some checks failed
CI / build-test (push) Failing after 1m57s
2026-03-09 11:41:59 -05:00
Brock H Caldwell
ee017d7ae6 Update ci
All checks were successful
CI / build-test (push) Successful in 14m37s
2026-03-08 23:37:49 -05:00
Brock H Caldwell
b0b5211e88 Update ci
All checks were successful
CI / build-test (push) Successful in 1m46s
2026-03-08 23:35:06 -05:00
Brock H Caldwell
c6f0220889 Update ci
All checks were successful
CI / build-test (push) Successful in 1m52s
2026-03-08 23:31:14 -05:00
Brock H Caldwell
b1cd1cf0bf Update ci
All checks were successful
CI / build-test (push) Successful in 1m53s
2026-03-08 23:28:05 -05:00
Brock H Caldwell
dab6504e71 Update ci
All checks were successful
CI / build-test (push) Successful in 1m44s
2026-03-08 23:17:44 -05:00
Brock H Caldwell
e361e998b3 Update ci
Some checks failed
CI / build-test (push) Failing after 6s
2026-03-08 23:16:40 -05:00
Brock H Caldwell
bc73625121 Update ci
Some checks failed
CI / build-test (push) Failing after 7s
2026-03-08 23:15:43 -05:00
Brock H Caldwell
a2439f3619 Update ci
All checks were successful
CI / build-test (push) Successful in 2m3s
2026-03-08 22:46:39 -05:00
Brock H Caldwell
edfb1b92cb Update ci
All checks were successful
CI / build-test (push) Successful in 1m59s
2026-03-08 22:34:57 -05:00
Brock H Caldwell
1097e4c313 Update ci
Some checks failed
CI / build-test (push) Has been cancelled
2026-03-08 22:28:30 -05:00
Brock H Caldwell
fe10a8d4b0 Update ci
Some checks failed
CI / build-test (push) Has been cancelled
2026-03-08 22:28:02 -05:00
Brock H Caldwell
96da4ce1b0 Update ci
Some checks failed
CI / build-test (push) Has been cancelled
2026-03-08 22:27:26 -05:00
Brock H Caldwell
6aad92a0c6 Update ci
Some checks failed
CI / build-test (push) Has been cancelled
2026-03-08 22:25:33 -05:00
Brock H Caldwell
7fc7db0577 Update ci
Some checks failed
CI / build-test (push) Has been cancelled
2026-03-08 22:12:53 -05:00
Brock H Caldwell
e5ed2d9556 Update ci
Some checks failed
CI / build-test (push) Has been cancelled
2026-03-08 22:10:23 -05:00
Brock H Caldwell
fbe4e736c8 Update ci
Some checks failed
CI / build-test (push) Has been cancelled
2026-03-08 22:08:52 -05:00
Brock H Caldwell
bc635d5b76 Update ci
All checks were successful
CI / build-test (push) Successful in 15m13s
2026-03-08 21:01:20 -05:00
Brock H Caldwell
c3a9c69c91 Update ci
Some checks failed
CI / build-test (push) Failing after 2m48s
2026-03-08 20:57:46 -05:00
Brock H Caldwell
b043bb9cc9 Update ci
Some checks failed
CI / build-test (push) Failing after 1m57s
2026-03-08 20:51:23 -05:00
Brock H Caldwell
d9afa9b558 Update ci
Some checks failed
CI / build-test (push) Failing after 2m34s
2026-03-08 20:45:52 -05:00
Brock H Caldwell
4f0b873bed Update ci
Some checks failed
CI / build-test (push) Failing after 1m52s
2026-03-08 20:43:04 -05:00
Brock H Caldwell
fb067d5396 Update ci
All checks were successful
CI / build-test (push) Successful in 1m59s
2026-03-08 20:37:44 -05:00
Brock H Caldwell
dbaf7c4880 Update ci
All checks were successful
CI / build-test (push) Successful in 1m50s
2026-03-08 20:29:36 -05:00
Brock H Caldwell
4750c53b58 Merge branch 'main' of https://code.caldwell.digital/home/torsearch
Some checks failed
CI / build-test (push) Failing after 1m38s
2026-03-08 20:25:14 -05:00
Brock H Caldwell
aa0ce72d35 fix: errors preventing builds 2026-03-08 20:24:59 -05:00
6360e6495f Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 1m18s
2026-03-08 23:39:50 +00:00
Brock H Caldwell
ed2f797ac2 Merge branch 'main' of https://code.caldwell.digital/home/torsearch
Some checks failed
CI / build-test (push) Failing after 1m23s
2026-03-08 18:37:03 -05:00
Brock H Caldwell
91f91c20fa fix: pins doctrine to prod, dev, & test envs 2026-03-08 18:36:03 -05:00
2f7d276781 Update .env
Some checks failed
CI / build-test (push) Failing after 1m29s
2026-03-08 23:01:28 +00:00
e22306225b Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 1m23s
2026-03-08 21:26:22 +00:00
6a860a4d75 Update .gitea/workflows/sonarqube_scans.yml
All checks were successful
CI / build-test (push) Successful in 1m43s
2026-03-08 21:21:52 +00:00
5ff89b905f Update .gitea/workflows/sonarqube_scans.yml
All checks were successful
CI / build-test (push) Successful in 1m13s
2026-03-08 21:18:23 +00:00
49b017de3d Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 1m18s
2026-03-08 21:11:13 +00:00
937b673be6 Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 5m41s
2026-03-08 21:01:49 +00:00
3e04d0a82d Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 56s
2026-03-08 20:51:11 +00:00
706e8e9892 Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 4m50s
2026-03-08 20:08:46 +00:00
154292530a Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 43s
2026-03-08 02:52:29 +00:00
82c3f7bb78 Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 1m19s
2026-03-08 02:49:42 +00:00
e7f8f278ee Update .gitea/workflows/sonarqube_scans.yml
Some checks failed
CI / build-test (push) Failing after 1m40s
2026-03-08 00:42:40 +00:00
Brock H Caldwell
c4b3fb215c feat: status indicators in header for tmdb & torrentio
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after -1m38s
2026-03-07 11:11:33 -06:00
Brock H Caldwell
2fc6d792bc chore: renames form field
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after -1m33s
2026-03-03 22:07:06 -06:00
Brock H Caldwell
c9f1a2d93a chore: updates readme
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after 13s
2026-03-03 22:04:22 -06:00
Brock H Caldwell
bbdd11d1b5 fix: rewords form question
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after -1m32s
2026-03-03 21:59:14 -06:00
Brock H Caldwell
1827908936 chore: updates readme
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after -1m32s
2026-03-03 20:16:49 -06:00
Brock H Caldwell
8b99a744e2 chore: updates readme
Some checks failed
SonarQube Scan / SonarQube Trigger (push) Failing after -1m32s
2026-03-03 20:12:00 -06:00
13 changed files with 233 additions and 66 deletions

3
.env
View File

@@ -13,7 +13,7 @@
# #
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
APP_URL=
###> symfony/framework-bundle ### ###> symfony/framework-bundle ###
APP_ENV=prod APP_ENV=prod
APP_SECRET= APP_SECRET=
@@ -27,6 +27,7 @@ APP_SECRET=
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" # DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4"
# DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" # DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
DATABASE_URL=
###< doctrine/doctrine-bundle ### ###< doctrine/doctrine-bundle ###
MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!" MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!"

102
.gitea/workflows/ci.yml Normal file
View File

@@ -0,0 +1,102 @@
name: CI
on:
push:
tags:
- "v*"
jobs:
build-test:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v5
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
- name: Install phing
run: composer global require phing/phing
- name: Run composer
run: composer install --no-dev --no-scripts --ignore-platform-reqs -o
- name: Build tailwind
run: APP_ENV=build php bin/console tailwind:build
- name: Install frontend assets
run: APP_ENV=build php bin/console importmap:install
- name: Compile assets
run: APP_ENV=build php bin/console asset-map:compile
- name: Login to registry
uses: docker/login-action@v2
with:
registry: "${{ vars.REGISTRY_URL }}"
username: "${{ vars.REGISTRY_USER }}"
password: "${{ vars.REGISTRY_PASS }}"
- name: Create torsearch-app docker image
run: |
tag="${{ gitea.REF_NAME }}"
tmdb_api="${{ vars.TMDB_API }}"
version=${tag:1}
docker build -f docker/Dockerfile.app \
-t code.caldwell.digital/home/torsearch-app:${version} \
-t code.caldwell.digital/home/torsearch-app:latest \
--build-arg "APP_VERSION=${version}" \
--build-arg "TMDB_API=${tmdb_api}" \
.
docker push code.caldwell.digital/home/torsearch-app:${version}
docker push code.caldwell.digital/home/torsearch-app:latest
- name: Create torsearch-worker docker image
run: |
tag="${{ gitea.REF_NAME }}"
tmdb_api="${{ vars.TMDB_API }}"
version=${tag:1}
docker build -f docker/Dockerfile.worker \
-t code.caldwell.digital/home/torsearch-worker:${version} \
-t code.caldwell.digital/home/torsearch-worker:latest \
--build-arg "APP_VERSION=${version}" \
--build-arg "TMDB_API=${tmdb_api}" \
.
docker push code.caldwell.digital/home/torsearch-worker:${version}
docker push code.caldwell.digital/home/torsearch-worker:latest
- name: Create torsearch-scheduler docker image
run: |
tag="${{ gitea.REF_NAME }}"
tmdb_api="${{ vars.TMDB_API }}"
version=${tag:1}
docker build -f docker/Dockerfile.scheduler \
-t code.caldwell.digital/home/torsearch-scheduler:${version} \
-t code.caldwell.digital/home/torsearch-scheduler:latest \
--build-arg "APP_VERSION=${version}" \
--build-arg "TMDB_API=${tmdb_api}" \
.
docker push code.caldwell.digital/home/torsearch-scheduler:${version}
docker push code.caldwell.digital/home/torsearch-scheduler:latest
- name: Create artifact
run: |
file="torsearch-${{ gitea.REF_NAME }}.tar.gz"
touch $file
tar -cvzf $file --exclude=$file .
- name: Create release
uses: akkuman/gitea-release-action@v1
with:
files: |-
"torsearch-${{ gitea.REF_NAME }}.tar.gz"
# - name: Upload artifact
# uses: actions/upload-artifact@v3
# with:
# name: "torsearch-${{ gitea.REF_NAME }}.tar.gz"
# path: "torsearch-${{ gitea.REF_NAME }}.tar.gz"
# compression_level: 9

View File

@@ -1,24 +0,0 @@
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
name: SonarQube Scan
jobs:
sonarqube:
name: SonarQube Trigger
runs-on: ubuntu-latest
steps:
- name: Checking out
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: SonarQube Scan
uses: https://code.caldwell.digital/tools/sonarqube-action@v0.0.3
with:
host: "https://qube.caldwell.digital"
login: ${{ secrets.SONARQUBE_TOKEN }}
projectName: "torsearch"
projectBaseDir: "./src"

View File

@@ -20,6 +20,9 @@ comparison to Stremio? That's because Torsearch uses the same source for media f
## Getting Started ## Getting Started
For all pieces to work, you will need to serve the application over HTTPS. Running behind an SSL terminating
reverse proxy is the recommended approach.
1. Create a `compose.yml` file 1. Create a `compose.yml` file
```yaml ```yaml
services: services:
@@ -116,7 +119,7 @@ TZ=America/Chicago
################### ###################
# Symfony # # Symfony #
################### ###################
# The external URL of the application where it can be reached by a browser. # The external URL of the application where it can be reached by a browser. Should start with https://
APP_URL="<enter url>" APP_URL="<enter url>"
# Requried by Symfony Framework. Feel free to change. # Requried by Symfony Framework. Feel free to change.
APP_SECRET="70169beadfbc8101c393cbfbba27a313" APP_SECRET="70169beadfbc8101c393cbfbba27a313"
@@ -154,7 +157,7 @@ DATABASE_URL="mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@${MYSQL_HOST}:3306/${MYSQL
################### ###################
# Real Debrid # # Real Debrid #
################### ###################
# Enter your Real Debrid API key is passed to Torrentio to retrieve download options # Enter your Real Debrid API key which is passed to Torrentio to retrieve download options
REAL_DEBRID_KEY="<enter real debrid api key>" REAL_DEBRID_KEY="<enter real debrid api key>"
@@ -185,10 +188,29 @@ AUTH_METHOD=form_login
``` ```
3. Run `docker compose up -d` 3. Enter the `APP_URL` in the .env file
4. Enter the `REAL_DEBRID_KEY` in the .env file
5. Enter a new `WEB_PORT` if the default doesn't work for you
4. Run `docker compose up -d`
4. Visit the app in the browser 4. Visit the app in the browser
5. Create your first user 5. Create a user
6. Visit the Preferences page to set your filter. This filter is used whenever you don't choose a specific file to 6. Visit the Preferences page to set your filter. This filter is used whenever you don't choose a specific file to
download (e.g. downloading via Monitor or clicking the "Download Season", "Download Selected", or "Download Episode" buttons). download (e.g. downloading via Monitor or clicking the "Download Season", "Download Selected", or "Download Episode" buttons).
7. Start downloading media! 7. Start downloading media!
## Having issues?
Submit an issue in the repo, and I'll try to address it as soon as possible. I do have a full-time job and family, so my
time is limited, but I'll do my best!
## Notes
This is my first contribution to open-source, the community that's given me so much over the years!
This project has been my personal hobby project for the last 1.5 years. I've written and re-written it several times.
It's been my testing ground for trying new things, so if the code looks like shit, my bad. I'm a PHP developer by day and
tinkerer by night - this was my first go with Symfony/Twig components, tailwind, the Symfony RICH bundle, and a lot more.
At some point, I'll put together a contribution guide, so others can hack on it too.
No AI was used for development (only to generate a list of countries with their flag emojis). If the code is bad, it's my fault.
# Disclaimer
Torsearch does not host any media; it only combines API results from multiple sources to make browsing them easier.
Torsearch is not affiliated with Real Debrid, Torrentio, or TMDB.

2
assets/bootstrap.js vendored
View File

@@ -5,6 +5,7 @@ import DownloadOptionTr from './components/download-option-tr.js';
import DownloadListRow from './components/download-list-row.js'; import DownloadListRow from './components/download-list-row.js';
import MonitorListRow from './components/monitor-list-row.js'; import MonitorListRow from './components/monitor-list-row.js';
import MovieContainer from "./components/movie-container.js"; import MovieContainer from "./components/movie-container.js";
import StatusCheckerSpan from "./components/status-checker-span.js";
import { startStimulusApp } from '@symfony/stimulus-bundle'; import { startStimulusApp } from '@symfony/stimulus-bundle';
import Popover from '@stimulus-components/popover'; import Popover from '@stimulus-components/popover';
@@ -24,3 +25,4 @@ customElements.define('movie-container', MovieContainer);
customElements.define('dl-tr', DownloadOptionTr, {extends: 'tr'}); customElements.define('dl-tr', DownloadOptionTr, {extends: 'tr'});
customElements.define('download-list-row', DownloadListRow, {extends: 'tr'}); customElements.define('download-list-row', DownloadListRow, {extends: 'tr'});
customElements.define('monitor-list-row', MonitorListRow, {extends: 'tr'}); customElements.define('monitor-list-row', MonitorListRow, {extends: 'tr'});
customElements.define('status-checker-span', StatusCheckerSpan, {extends: 'span'});

View File

@@ -0,0 +1,40 @@
export default class PreviewContentDialog extends HTMLSpanElement {
#url;
#service;
#status;
#statusTexts = {
200: 'up',
204: 'up'
}
#statusColors = {
200: 'bg-green-500',
204: 'bg-green-500'
}
constructor() {
super();
this.#url = this.getAttribute('url');
this.#service = this.getAttribute('service');
(async () => await this.checkStatus())();
setInterval(async () => await this.checkStatus(), 1000 * 60 * 10);
}
async checkStatus() {
const response = await fetch(this.#url);
this.#status = response.status;
this.setAttribute('title', this.getTitle());
this.classList.remove('bg-red-500', 'bg-green-500');
this.classList.add(this.getColor());
}
getTitle() {
return `${this.#service} is ${this.#statusTexts[this.#status] ?? 'down'}`
}
getColor() {
return this.#statusColors[this.#status] ?? 'bg-red-500';
}
}

View File

@@ -1,40 +1,43 @@
sentry: when@prod: &prod
register_error_listener: true # Disables the ErrorListener to avoid duplicated log in sentry sentry:
register_error_handler: true # Disables the ErrorListener, ExceptionListener and FatalErrorListener integrations of the base PHP SDK register_error_listener: true # Disables the ErrorListener to avoid duplicated log in sentry
register_error_handler: true # Disables the ErrorListener, ExceptionListener and FatalErrorListener integrations of the base PHP SDK
options: options:
release: 'torsearch@%app.version%' release: 'torsearch@%app.version%'
enable_logs: true enable_logs: true
traces_sample_rate: 1 traces_sample_rate: 1
profiles_sample_rate: 1 profiles_sample_rate: 1
attach_stacktrace: true attach_stacktrace: true
tracing: tracing:
enabled: true
dbal: # DB queries
enabled: true
cache: # cache pools
enabled: true
twig: # templating engine
enabled: true enabled: true
dbal: # DB queries
enabled: true
cache: # cache pools
enabled: true
twig: # templating engine
enabled: true
services: services:
# (Optionally) Configure the breadcrumb handler as a service (needed for the breadcrumb Monolog handler) # (Optionally) Configure the breadcrumb handler as a service (needed for the breadcrumb Monolog handler)
Sentry\Monolog\BreadcrumbHandler: Sentry\Monolog\BreadcrumbHandler:
arguments: arguments:
- '@Sentry\State\HubInterface' - '@Sentry\State\HubInterface'
- !php/const Monolog\Logger::INFO # Configures the level of messages to capture as breadcrumbs - !php/const Monolog\Logger::INFO # Configures the level of messages to capture as breadcrumbs
monolog: monolog:
handlers: handlers:
# (Optionally) Register the breadcrumb handler as a Monolog handler # (Optionally) Register the breadcrumb handler as a Monolog handler
sentry_breadcrumbs: sentry_breadcrumbs:
type: service type: service
name: sentry_breadcrumbs name: sentry_breadcrumbs
id: Sentry\Monolog\BreadcrumbHandler id: Sentry\Monolog\BreadcrumbHandler
# Register the handler as a Monolog handler to capture messages as events # Register the handler as a Monolog handler to capture messages as events
sentry: sentry:
type: sentry type: sentry
level: !php/const Monolog\Logger::ERROR # Configures the level of messages to capture as events level: !php/const Monolog\Logger::ERROR # Configures the level of messages to capture as events
hub_id: Sentry\State\HubInterface hub_id: Sentry\State\HubInterface
fill_extra_context: true # Enables sending monolog context to Sentry fill_extra_context: true # Enables sending monolog context to Sentry
process_psr_3_messages: false # Disables the resolution of PSR-3 placeholders in reported messages process_psr_3_messages: false # Disables the resolution of PSR-3 placeholders in reported messages
when@dev: *prod

View File

@@ -15,6 +15,7 @@ FROM code.caldwell.digital/home/torsearch-app:${APP_VERSION} AS app_image
FROM code.caldwell.digital/home/torsearch-base-worker-supervisord:latest FROM code.caldwell.digital/home/torsearch-base-worker-supervisord:latest
# Set the APP_VERSION in the image # Set the APP_VERSION in the image
ARG APP_VERSION="latest"
ENV APP_VERSION=${APP_VERSION} ENV APP_VERSION=${APP_VERSION}
ARG TMDB_API="" ARG TMDB_API=""

View File

@@ -15,6 +15,7 @@ FROM code.caldwell.digital/home/torsearch-app:${APP_VERSION} AS app_image
FROM code.caldwell.digital/home/torsearch-base-worker-supervisord:latest FROM code.caldwell.digital/home/torsearch-base-worker-supervisord:latest
# Set the APP_VERSION in the image # Set the APP_VERSION in the image
ARG APP_VERSION="latest"
ENV APP_VERSION=${APP_VERSION} ENV APP_VERSION=${APP_VERSION}
ARG TMDB_API="" ARG TMDB_API=""

View File

@@ -20,6 +20,7 @@ class RegistrationFormType extends AbstractType
->add('plainPassword', PasswordType::class, [ ->add('plainPassword', PasswordType::class, [
// instead of being set onto the object directly, // instead of being set onto the object directly,
// this is read and encoded in the controller // this is read and encoded in the controller
'label' => 'Password',
'mapped' => false, 'mapped' => false,
'attr' => ['autocomplete' => 'new-password'], 'attr' => ['autocomplete' => 'new-password'],
'constraints' => [ 'constraints' => [

View File

@@ -18,9 +18,13 @@ module.exports = {
"bg-green-400", "bg-green-400",
"bg-purple-400", "bg-purple-400",
"bg-orange-400", "bg-orange-400",
"bg-red-500",
"bg-green-500",
"bg-blue-600", "bg-blue-600",
"bg-rose-600", "bg-rose-600",
"bg-black/20", "bg-black/20",
"text-red-500",
"text-green-500",
"alert-success", "alert-success",
"alert-warning", "alert-warning",
"font-bold", "font-bold",

View File

@@ -6,6 +6,20 @@
<div class="md:flex md:items-center md:gap-12"> <div class="md:flex md:items-center md:gap-12">
<nav aria-label="Global" class="md:block"> <nav aria-label="Global" class="md:block">
<ul class="ml-4 flex items-end md:items-center md:gap-6 text-sm"> <ul class="ml-4 flex items-end md:items-center md:gap-6 text-sm">
<li>
<div class="flex flex-row justify-center items-start gap-2 p-2 w-10 mt-1 h-6 rounded-lg border border-orange-500 text-orange-500">
<status-checker-span
class="h-2 w-2 rounded-full text-green-600 bg-green-600"
url="https://torrentio.strem.fun"
service="Torrentio">
</status-checker-span>
<status-checker-span
class="h-2 w-2 rounded-full text-green-600 bg-green-600"
url="https://api.themoviedb.org/3"
service="TMDB">
</status-checker-span>
</div>
</li>
<li> <li>
<a href="{{ path('app.monitor.upcoming-episodes') }}" data-turbo="false" title="View upcoming episodes of the shows you're subscribed to."> <a href="{{ path('app.monitor.upcoming-episodes') }}" data-turbo="false" title="View upcoming episodes of the shows you're subscribed to.">
<twig:ux:icon name="solar:calendar-linear" width="25px" class="text-orange-500" /> <twig:ux:icon name="solar:calendar-linear" width="25px" class="text-orange-500" />

View File

@@ -30,7 +30,7 @@
<div class="flex flex-row gap-2 mb-2"> <div class="flex flex-row gap-2 mb-2">
<input type="hidden" name="movie_folder" id="movie_folder_hidden" value="0" /> <input type="hidden" name="movie_folder" id="movie_folder_hidden" value="0" />
<input type="checkbox" name="movie_folder" id="movie_folder" value="1" {{ downloadPreferences['movie_folder'].getPreferenceValue() == true ? 'checked' }} /> <input type="checkbox" name="movie_folder" id="movie_folder" value="1" {{ downloadPreferences['movie_folder'].getPreferenceValue() == true ? 'checked' }} />
<label class="text-gray-50" for="movie_folder">Store movies in a new directory?</label> <label class="text-gray-50" for="movie_folder">Create a new directory for each movie?</label>
</div> </div>
<button class="px-1.5 py-1 max-w-20 rounded-md bg-green-600 text-white" type="submit">Submit</button> <button class="px-1.5 py-1 max-w-20 rounded-md bg-green-600 text-white" type="submit">Submit</button>
</form> </form>