Compare commits

..

17 Commits

Author SHA1 Message Date
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
7 changed files with 125 additions and 56 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).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration
APP_URL=
###> symfony/framework-bundle ###
APP_ENV=prod
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=10.11.2-MariaDB&charset=utf8mb4"
# DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8"
DATABASE_URL=
###< doctrine/doctrine-bundle ###
MERCURE_JWT_SECRET="!ChangeThisMercureHubJWTSecretKey!"

View File

@@ -1,24 +1,29 @@
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
name: CI
on: [push]
name: SonarQube Scan
jobs:
sonarqube:
name: SonarQube Trigger
build-test:
runs-on: ubuntu-latest
steps:
- name: Checking out
uses: actions/checkout@v4
- name: Checkout repo
uses: actions/checkout@v5
- name: Setup PHP
uses: shivammathur/setup-php@v2
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"
php-version: '8.4'
- name: Install phing
run: composer global require phing/phing
- name: Run composer
run: composer install --no-dev --no-scripts -o
- name: Build tailwind
run: APP_ENV=build php bin/console tailwind:build
- name: Compile assets
run: APP_ENV=build php bin/console asset-map:compile

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 MonitorListRow from './components/monitor-list-row.js';
import MovieContainer from "./components/movie-container.js";
import StatusCheckerSpan from "./components/status-checker-span.js";
import { startStimulusApp } from '@symfony/stimulus-bundle';
import Popover from '@stimulus-components/popover';
@@ -24,3 +25,4 @@ customElements.define('movie-container', MovieContainer);
customElements.define('dl-tr', DownloadOptionTr, {extends: 'tr'});
customElements.define('download-list-row', DownloadListRow, {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:
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
when@prod: &prod
sentry:
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:
release: 'torsearch@%app.version%'
enable_logs: true
traces_sample_rate: 1
profiles_sample_rate: 1
attach_stacktrace: true
options:
release: 'torsearch@%app.version%'
enable_logs: true
traces_sample_rate: 1
profiles_sample_rate: 1
attach_stacktrace: true
tracing:
enabled: true
dbal: # DB queries
enabled: true
cache: # cache pools
enabled: true
twig: # templating engine
tracing:
enabled: true
dbal: # DB queries
enabled: true
cache: # cache pools
enabled: true
twig: # templating engine
enabled: true
services:
# (Optionally) Configure the breadcrumb handler as a service (needed for the breadcrumb Monolog handler)
Sentry\Monolog\BreadcrumbHandler:
arguments:
- '@Sentry\State\HubInterface'
- !php/const Monolog\Logger::INFO # Configures the level of messages to capture as breadcrumbs
monolog:
handlers:
# (Optionally) Register the breadcrumb handler as a Monolog handler
sentry_breadcrumbs:
type: service
name: sentry_breadcrumbs
id: Sentry\Monolog\BreadcrumbHandler
# Register the handler as a Monolog handler to capture messages as events
sentry:
type: sentry
level: !php/const Monolog\Logger::ERROR # Configures the level of messages to capture as events
hub_id: Sentry\State\HubInterface
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
services:
# (Optionally) Configure the breadcrumb handler as a service (needed for the breadcrumb Monolog handler)
Sentry\Monolog\BreadcrumbHandler:
arguments:
- '@Sentry\State\HubInterface'
- !php/const Monolog\Logger::INFO # Configures the level of messages to capture as breadcrumbs
monolog:
handlers:
# (Optionally) Register the breadcrumb handler as a Monolog handler
sentry_breadcrumbs:
type: service
name: sentry_breadcrumbs
id: Sentry\Monolog\BreadcrumbHandler
# Register the handler as a Monolog handler to capture messages as events
sentry:
type: sentry
level: !php/const Monolog\Logger::ERROR # Configures the level of messages to capture as events
hub_id: Sentry\State\HubInterface
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
when@dev: *prod

View File

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

View File

@@ -6,6 +6,20 @@
<div class="md:flex md:items-center md:gap-12">
<nav aria-label="Global" class="md:block">
<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>
<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" />