Commit Graph

62 Commits

Author SHA1 Message Date
46ba4e0e06 chore: remove custom theme customization
Remove all theme customization code:
- Removed theme directory (custom.css, custom.js, favicon.svg)
- Removed app.html.heex template override
- Removed Dockerfile for custom build
- Reverted compose.yaml to only mount custom.exs for SMTP config

Keeping only SMTP configuration in custom.exs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 11:13:09 +01:00
2381076947 feat: mount custom theme template to inject CSS and favicon
Mount app.html.heex template with custom theme links:
- Custom CSS at /assets/custom.css via Routes.static_path()
- Custom favicon at /images/favicon-custom.svg

Phoenix will use the external template file instead of compiled version.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 10:15:49 +01:00
b3bffd8ba8 fix: mount custom.css to assets directory, not css
static_paths only includes: assets, fonts, images, js
The css directory is NOT served by Phoenix.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 09:55:58 +01:00
60e118be31 fix: mount theme files to correct static directory
Static files are in /opt/app/lib/asciinema-1.0.0/priv/static/
not /opt/app/priv/static/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 09:53:46 +01:00
dd73774f7d fix: remove broken CustomThemeInjector Plug from custom.exs
The Plug was causing AsciinemaWeb.Endpoint to fail on startup.
Reverting to just SMTP configuration while we find a proper way
to inject custom theme.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 09:52:16 +01:00
63b96bb8e7 feat: add custom Pivoine Rose theme to asciinema
- Mount custom CSS, favicon, and JS into static directories
- Create custom.js to inject theme CSS and favicon via JavaScript
- Add CustomThemeInjector Plug in custom.exs to inject script tag
- Custom theme features:
  - Pivoine rose primary color (#CE275B)
  - Gray tone backgrounds
  - Custom SVG favicon with rose gradient
  - Bootstrap 4 component overrides

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 09:50:07 +01:00
95b01afafa feat: patch HTML template to inject custom theme 2025-11-09 09:26:35 +01:00
dce10fb971 feat: override static_paths and add custom head view for theme injection 2025-11-09 09:19:10 +01:00
6fd7c32669 fix: update theme paths to match new mount location 2025-11-09 09:12:41 +01:00
f0540c52bc feat: use Phoenix config for theme injection (cleaner approach) 2025-11-09 08:48:22 +01:00
d37ff0de47 feat: add nginx proxy for theme injection (cleaner approach) 2025-11-09 08:43:36 +01:00
428fd70ac3 feat: add custom Pivoine Rose theme with Bootstrap 4 styling and SVG favicon 2025-11-09 08:34:02 +01:00
73b4fec389 chore: cleanup asciinema SMTP environment variables 2025-11-09 08:21:56 +01:00
5f126d9d8b feat: add custom.exs to skip SMTP TLS certificate verification 2025-11-09 08:18:13 +01:00
5a6ca58e5d test: change SMTP_NO_MX_LOOKUPS to true 2025-11-09 08:13:25 +01:00
f04e182804 fix: change SMTP_AUTH from login to always 2025-11-09 08:06:12 +01:00
8e6cb9018d fix: use SMTP port 465 with SSL instead of STARTTLS 2025-11-09 08:02:06 +01:00
bfe4b467f0 fix: disable SMTP TLS encryption to bypass certificate validation 2025-11-09 08:00:13 +01:00
39426baf9b fix: set SMTP_NO_MX_LOOKUPS to false 2025-11-09 07:56:53 +01:00
6124229f85 fix: specify TLS versions for SMTP connection 2025-11-09 07:49:10 +01:00
ce3a3514a7 fix: remove hardcoded SMTP IP and use port 587 with TLS 2025-11-09 07:45:35 +01:00
aad4c89ab9 fix: use minimal SMTP configuration without explicit port and TLS settings 2025-11-09 07:41:51 +01:00
51fd63cf24 test: disable SMTP TLS encryption to bypass certificate validation 2025-11-09 07:38:01 +01:00
4a3b29a6ea fix: use SMTP_TLS=if_available to allow fallback from TLS 2025-11-09 07:36:29 +01:00
f797945b52 fix: disable TLS certificate verification for IONOS SMTP 2025-11-09 07:32:52 +01:00
d529a4c268 fix: use STARTTLS on port 587 for SMTP instead of SSL 465 2025-11-09 07:29:08 +01:00
0efae463c9 chore: remove custom CSS theme files from repository 2025-11-09 06:07:43 +01:00
e4c0a74437 revert: remove custom CSS theming from asciinema 2025-11-09 06:06:22 +01:00
bf8faccaf8 fix: increase specificity for navbar background override 2025-11-09 05:50:04 +01:00
29c52e3c43 fix: override black navbar background with higher specificity selector 2025-11-09 05:44:55 +01:00
8d66212d9a fix: override default light backgrounds for body, main, pre
Added explicit overrides for body, main, and pre elements to prevent
default light gray (#f7f7f7) backgrounds from showing through.

- Body and main: metal-bg-base (dark)
- Pre/code blocks: metal-bg-elevated (slightly lighter)
- Main container: metal-bg-surface with proper spacing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 05:40:19 +01:00
f26f0976b5 fix: improve theme consistency and layout
- Added 8px gap to button groups for better spacing
- Fixed header/nav background overlay issue (consolidated styling)
- Added gray background to main container (metal-bg-surface)
- Fixed heading section (removed margin, border-radius, transparent bg)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 05:33:59 +01:00
d6db298409 refactor: polish asciinema theme with cohesive metal grays
Refined the metal gray palette for better consistency and polish:

- Renamed variables to semantic names (base, elevated, surface, interactive, input)
- Reduced color range from 10%-30% to 16%-28% for smoother transitions
- Adjusted saturation to 10-12% for more cohesive palette
- Softened shadows and reduced motion for subtle elegance
- Added distinct heading area background for better hierarchy
- Improved button states with smoother hover transitions
- Refined border weights (1px default, 2px for accents)
- Updated all components to use new semantic variable names

Color hierarchy:
- metal-bg-base (16%): Body, terminal, code blocks
- metal-bg-elevated (19%): Header, footer, control bars, headings
- metal-bg-surface (22%): Cards, tables
- metal-bg-interactive (25%): Buttons, pagination
- metal-bg-input (28%): Form inputs
- metal-border (32%): Subtle borders
- metal-border-strong (40%): Accent borders

Rose accents preserved for all interactive elements.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 05:27:42 +01:00
112dc7076d feat: apply varied metal gray backgrounds with rose accents
- Updated color palette to use multiple metal gray shades for visual hierarchy
- Kept original Pivoine rose accent colors for borders, links, and highlights
- Background variations:
  - Darkest (10%): Body, terminal player, code blocks
  - Darker (15%): Header/navbar, table headers
  - Dark (18%): Footer, control bars
  - Base (22%): Filter buttons, pagination
  - Light (26%): Cards, tables, recording items
  - Lighter (30%): Form inputs
  - Border (35%): Borders and separators
- All rose accents preserved for visual pop on dark metal backgrounds

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 05:13:36 +01:00
fd8a2ca23c fix: smooth color transitions across header, content, and footer
Unified background colors for smoother visual flow:

Changes:
- Header background: bg-darker → bg-dark (matches body)
- Footer background: bg-darker → bg-dark (matches body)
- Body background: bg-darker → bg-dark (consistent base color)
- Removed redundant main content background override

This creates a cohesive color scheme where:
- Body, header, and footer all use bg-dark (HSL 0, 0%, 17.5%)
- Cards and panels use bg-lighter (HSL 0, 0%, 22%) for subtle contrast
- Rose borders on header/footer provide visual separation
- No more jarring black-to-gray transitions

The result is a smooth, unified dark theme with the Pivoine rose
accent colors providing visual interest and hierarchy.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 05:05:34 +01:00
583a77493e feat: improve theme contrast and button styling
Enhanced the Pivoine theme with better visual hierarchy and usability:

Logo improvements:
- Fixed logo selector to target .navbar-brand img (not just .logo)
- Logo now properly colorized with primary rose/magenta color

Contrast improvements:
- Changed body background to darker shade (bg-darker)
- Added main content area with lighter background (bg-dark) for better separation
- Added heading styles with rose accent color
- H1/H2 headings now have rose bottom border for visual hierarchy

Button refinements:
- Split button styling into primary buttons and filter buttons
- Filter buttons (.btn-light in .btn-group) now have subtle, elegant styling:
  * Lighter background with border
  * Smaller size and lighter font weight
  * Hover shows rose border and text color
  * Active state has solid rose background
- Primary buttons maintain bold rose background styling

The result is clearer visual separation between navigation, content, and
interactive elements with better contrast throughout.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 05:01:45 +01:00
09a60e1bd6 fix: remove Bootstrap .container from card styling
Fixed awkward appearance where Bootstrap .container elements were being
styled as cards with backgrounds, borders, and padding.

Changes:
- Removed .container from card/panel styling rule
- Added explicit .container reset to transparent background
- Removed .container from responsive design rule
- .container now maintains proper Bootstrap layout behavior

This fixes the "inner looks like a card" issue where main content areas
had unwanted card styling applied.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:54:17 +01:00
b88a6439f5 fix: target Bootstrap-specific classes in custom theme
Updated custom.css to target the actual Bootstrap classes used by
asciinema server instead of generic selectors:

- Added .navbar-dark and .bg-dark overrides for navigation
- Added .btn-light targeting for button styles
- Added .btn.active and .btn-light.active for active button states

This ensures the Pivoine theme properly overrides Bootstrap's default
dark theme classes.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:50:25 +01:00
5add5f4482 fix: remove pre-compressed CSS files to serve updated custom theme
Updated entrypoint-wrapper.sh to delete .css.gz files after injecting
custom CSS. The web server was serving old pre-compressed files instead
of our updated CSS with the Pivoine theme.

Changes:
- Remove app.css.gz and app-*.css.gz after CSS injection
- Forces web server to serve uncompressed updated CSS files
- Ensures custom Pivoine theme is visible on production

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:45:48 +01:00
c35f941882 fix: correct asciinema entrypoint command for server startup
Fixed server endpoints not starting by correcting the entrypoint wrapper
script to use the proper command: /sbin/tini -- /opt/app/bin/server

Changes:
- Updated entrypoint-wrapper.sh to exec /sbin/tini instead of /opt/app/bin/asciinema
- Removed incorrect command: ["start"] from compose.yaml
- Custom CSS injection now working with proper server startup
- Both main (port 4000) and admin (port 4002) endpoints now running

The custom Pivoine theme CSS is successfully injected at container startup
and served via both app.css and hashed app-*.css files.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:29:13 +01:00
fcf3aa2ff5 feat: inject custom CSS theme into asciinema
Added entrypoint wrapper script that injects custom.css into the
main app.css file at container startup. This allows the custom
Pivoine theme to be applied without building a custom image.

Changes:
- Mount custom.css to static assets directory
- Add entrypoint-wrapper.sh to inject CSS on startup
- Append custom CSS to both app.css and hashed app-*.css

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:24:17 +01:00
a1a3d06e26 fix: explicitly link Traefik routers to services
Fixed 404 error by explicitly specifying which service each router
should use. Traefik was unable to automatically link routers when
multiple services were defined.

Added service specification to all routers:
- asciinema-web → asciinema service
- asciinema-web-secure → asciinema service
- asciinema-admin-web → asciinema-admin service
- asciinema-admin-web-secure → asciinema-admin service

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:17:05 +01:00
f647e1327b feat: expose asciinema admin interface via Traefik
Added admin interface routing at admin.asciinema.pivoine.art:
- Port 4002 exposed via Traefik
- HTTP Basic Auth protection using AUTH_USERS
- HTTPS with Let's Encrypt certificate
- Security headers and compression middleware

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:07:44 +01:00
be146b2bb5 fix: add extra_hosts for smtp.ionos.de to asciinema
Force IONOS SMTP server IP (213.165.67.97) in /etc/hosts
to bypass potential DNS resolution issues.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:05:00 +01:00
143e102154 fix: simplify asciinema SMTP configuration
Removed unnecessary SMTP settings that were causing issues:
- URL_PORT (not needed)
- SMTP_AUTH (default behavior)
- SMTP_RETRIES (default behavior)
- SMTP_NO_MX_LOOKUPS (causing connection issues)
- MAIL_REPLY_TO_ADDRESS (not essential)
- UNCLAIMED_RECORDING_TTL (not essential)

Using minimal working SMTP configuration.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 04:00:10 +01:00
c3a8b55a58 fix: set SMTP_NO_MX_LOOKUPS to false
Email delivery still failing with true, trying false.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:33:20 +01:00
be6ab97e56 test: change SMTP_NO_MX_LOOKUPS to true
Testing with MX lookups disabled (true).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:31:14 +01:00
1bbe3085a7 test: add SMTP_NO_MX_LOOKUPS=false to asciinema config
Testing with MX lookups disabled (false).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:30:05 +01:00
a9327650b3 fix: remove extra SMTP settings from asciinema config
Removed SMTP_NO_MX_LOOKUPS and SMTP_ALLOWED_TLS_VERSIONS settings
that were added during troubleshooting. Using only basic SMTP
configuration that works for other services (mattermost, tandoor).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:23:11 +01:00
98db62b07b fix: change SMTP_AUTH from login to always
SMTP_AUTH must be 'always', 'never', or 'if_available', not 'login'.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-09 03:12:50 +01:00