Replaces the per-scene HTML directories (landing/, loading/, game/,
desktop/, goodbye/, music-box/, music/) with a single Laravel app
serving every overlay over HTTP. Supervisord runs `php artisan serve`
on 127.0.0.1:1118 and the OBS scene JSON now references HTTP routes
instead of file:// URLs.
Highlights:
- public/css/hud.css consolidates the duplicated HUD chrome,
scanlines/vignette/flicker, terminal styling, and pulse keyframes
that were copy-pasted across all seven scenes.
- Blade partials own hud-strip, crt-overlays, obs-ws-scripts,
camera-frame, screen-frame; the seven scenes extend a shared
overlay layout.
- Artisan commands (`rig:setup`, `rig:telemetry`, `rig:loading`,
`rig:playlist`, `rig:cmd`) replace the shell scripts that wrote
per-rig JSON snapshots. TwitchHelix + HardwareSnapshot services
handle the work the bash + Python helpers used to.
- ObsWsClient + MusicCommandController kill the 250 ms cmd.js poll
in the music daemon: POST /cmd/{skip|prev|pause|resume} opens a
short-lived Pawl WS, authenticates, and broadcasts mpd:cmd.
- AudioController streams files from the configured music dirs so
CEF can load tracks under the HTTP origin (Chromium blocks
HTTP-origin pages from loading file:// media).
- DataController serves /data/playlist.js (with ETag mtime cache)
and /cover.jpg (no-store) so the existing overlays' window.__PLAYLIST
and cover.jpg cache-bust pattern keeps working.
scripts/obs-webapp.supervisord.conf is the supervisord unit; install
to /etc/supervisor.d/obs-webapp.conf.
scripts/rewrite-scene-urls.py is a one-shot tool that rewrites
basic/scenes/Default_Stream_HUD.json from file:// to HTTP URLs.
basic/scenes/Default_Stream_HUD.json.pre-webapp is the rollback
artifact (made with OBS closed; full pre-migration state).
The seven old scene directories, vendor/, and the bash scripts are
still on disk pending visual verification; the next commit will
prune them.
133 lines
4.2 KiB
PHP
133 lines
4.2 KiB
PHP
<?php
|
|
|
|
use Monolog\Handler\NullHandler;
|
|
use Monolog\Handler\StreamHandler;
|
|
use Monolog\Handler\SyslogUdpHandler;
|
|
use Monolog\Processor\PsrLogMessageProcessor;
|
|
|
|
return [
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Default Log Channel
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| This option defines the default log channel that is utilized to write
|
|
| messages to your logs. The value provided here should match one of
|
|
| the channels present in the list of "channels" configured below.
|
|
|
|
|
*/
|
|
|
|
'default' => env('LOG_CHANNEL', 'stack'),
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Deprecations Log Channel
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| This option controls the log channel that should be used to log warnings
|
|
| regarding deprecated PHP and library features. This allows you to get
|
|
| your application ready for upcoming major versions of dependencies.
|
|
|
|
|
*/
|
|
|
|
'deprecations' => [
|
|
'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'),
|
|
'trace' => env('LOG_DEPRECATIONS_TRACE', false),
|
|
],
|
|
|
|
/*
|
|
|--------------------------------------------------------------------------
|
|
| Log Channels
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
| Here you may configure the log channels for your application. Laravel
|
|
| utilizes the Monolog PHP logging library, which includes a variety
|
|
| of powerful log handlers and formatters that you're free to use.
|
|
|
|
|
| Available drivers: "single", "daily", "slack", "syslog",
|
|
| "errorlog", "monolog", "custom", "stack"
|
|
|
|
|
*/
|
|
|
|
'channels' => [
|
|
|
|
'stack' => [
|
|
'driver' => 'stack',
|
|
'channels' => explode(',', (string) env('LOG_STACK', 'single')),
|
|
'ignore_exceptions' => false,
|
|
],
|
|
|
|
'single' => [
|
|
'driver' => 'single',
|
|
'path' => storage_path('logs/laravel.log'),
|
|
'level' => env('LOG_LEVEL', 'debug'),
|
|
'replace_placeholders' => true,
|
|
],
|
|
|
|
'daily' => [
|
|
'driver' => 'daily',
|
|
'path' => storage_path('logs/laravel.log'),
|
|
'level' => env('LOG_LEVEL', 'debug'),
|
|
'days' => env('LOG_DAILY_DAYS', 14),
|
|
'replace_placeholders' => true,
|
|
],
|
|
|
|
'slack' => [
|
|
'driver' => 'slack',
|
|
'url' => env('LOG_SLACK_WEBHOOK_URL'),
|
|
'username' => env('LOG_SLACK_USERNAME', env('APP_NAME', 'Laravel')),
|
|
'emoji' => env('LOG_SLACK_EMOJI', ':boom:'),
|
|
'level' => env('LOG_LEVEL', 'critical'),
|
|
'replace_placeholders' => true,
|
|
],
|
|
|
|
'papertrail' => [
|
|
'driver' => 'monolog',
|
|
'level' => env('LOG_LEVEL', 'debug'),
|
|
'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class),
|
|
'handler_with' => [
|
|
'host' => env('PAPERTRAIL_URL'),
|
|
'port' => env('PAPERTRAIL_PORT'),
|
|
'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'),
|
|
],
|
|
'processors' => [PsrLogMessageProcessor::class],
|
|
],
|
|
|
|
'stderr' => [
|
|
'driver' => 'monolog',
|
|
'level' => env('LOG_LEVEL', 'debug'),
|
|
'handler' => StreamHandler::class,
|
|
'handler_with' => [
|
|
'stream' => 'php://stderr',
|
|
],
|
|
'formatter' => env('LOG_STDERR_FORMATTER'),
|
|
'processors' => [PsrLogMessageProcessor::class],
|
|
],
|
|
|
|
'syslog' => [
|
|
'driver' => 'syslog',
|
|
'level' => env('LOG_LEVEL', 'debug'),
|
|
'facility' => env('LOG_SYSLOG_FACILITY', LOG_USER),
|
|
'replace_placeholders' => true,
|
|
],
|
|
|
|
'errorlog' => [
|
|
'driver' => 'errorlog',
|
|
'level' => env('LOG_LEVEL', 'debug'),
|
|
'replace_placeholders' => true,
|
|
],
|
|
|
|
'null' => [
|
|
'driver' => 'monolog',
|
|
'handler' => NullHandler::class,
|
|
],
|
|
|
|
'emergency' => [
|
|
'path' => storage_path('logs/laravel.log'),
|
|
],
|
|
|
|
],
|
|
|
|
];
|