fix(discourse-themes): fix contrast bugs, darkmode scheme and apply cyber glassmorphism styling

This commit is contained in:
eldov
2026-08-30 18:16:26 +02:00
parent 3a411c2643
commit d086844d6a
3 changed files with 346 additions and 72 deletions
+51 -48
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# deploy.sh - Deploy and Sync Discourse Themes
# Domains: info-board.win / w-make.org
# deploy.sh - Robust Discourse Theme Deploy & Sync Manager
# Domain: info-board.win / w-make.org
# Target Host: free-warez.win -> Discourse Container (app)
set -euo pipefail
@@ -9,59 +9,62 @@ TARGET_HOST="free-warez.win"
LOCAL_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
THEMES_DIR="$LOCAL_DIR/themes"
THEME_ID="${1:-41}"
echo "🚀 Discourse Theme Deploy & Sync Manager"
echo " Target Host: $TARGET_HOST (Discourse container 'app')"
echo " Target Theme ID: $THEME_ID"
echo "========================================================="
# 1. Check SSH connection
echo "📡 Checking SSH connection to $TARGET_HOST..."
if ! ssh -q -o BatchMode=yes -o ConnectTimeout=5 "$TARGET_HOST" exit; then
echo "❌ Cannot connect to $TARGET_HOST via SSH."
if [ "$THEME_ID" = "41" ]; then
SCSS_FILE="$THEMES_DIR/41_air_theme/common_scss.scss"
TARGET_ID=0
FIELD_NAME="scss"
elif [ "$THEME_ID" = "39" ]; then
SCSS_FILE="$THEMES_DIR/39_w-make_theme/common_scss.scss"
TARGET_ID=0
FIELD_NAME="scss"
else
echo "Usage: ./deploy.sh [41|39]"
exit 1
fi
THEME_ID="${1:-39}"
if [ "$THEME_ID" = "39" ]; then
SCSS_FILE="$THEMES_DIR/39_w-make_theme/common_scss.scss"
if [ ! -f "$SCSS_FILE" ]; then
SCSS_FILE="$THEMES_DIR/w-make-theme.scss"
fi
echo "🔄 Deploying W-MAKE Theme (ID: 39) from $SCSS_FILE..."
scp "$SCSS_FILE" "$TARGET_HOST:/tmp/w-make-theme.scss"
ssh "$TARGET_HOST" 'docker exec -i app su - discourse -c "psql -d discourse" << "SQL"
UPDATE theme_fields
SET value = pg_read_file('\''/tmp/w-make-theme.scss'\'')
WHERE theme_id = 39 AND name = '\''scss'\'';
UPDATE themes
SET updated_at = NOW()
WHERE id = 39;
SQL
rm -f /tmp/w-make-theme.scss
'
elif [ "$THEME_ID" = "41" ]; then
echo "🔄 Deploying Air Theme (ID: 41) common SCSS..."
SCSS_FILE="$THEMES_DIR/41_air_theme/common_scss.scss"
scp "$SCSS_FILE" "$TARGET_HOST:/tmp/air-theme.scss"
ssh "$TARGET_HOST" 'docker exec -i app su - discourse -c "psql -d discourse" << "SQL"
UPDATE theme_fields
SET value = pg_read_file('\''/tmp/air-theme.scss'\'')
WHERE theme_id = 41 AND name = '\''scss'\'' AND target_id = 0;
UPDATE themes
SET updated_at = NOW()
WHERE id = 41;
SQL
rm -f /tmp/air-theme.scss
'
else
echo "ℹ️ Custom theme ID: $THEME_ID provided."
if [ ! -f "$SCSS_FILE" ]; then
echo "❌ Theme file $SCSS_FILE not found."
exit 1
fi
# Invalidate cache & recompile
echo "🔄 Clearing Discourse theme cache..."
ssh "$TARGET_HOST" 'docker exec -i app su - discourse -c "bundle exec rails runner \"Theme.find_by(id: $THEME_ID)&.changed_fields&.clear; Discourse.cache.clear\" 2>/dev/null || true"'
echo "🔄 Updating Theme $THEME_ID ($FIELD_NAME, target: $TARGET_ID)..."
python3 - << PYEOF
import subprocess
echo "✅ Discourse theme(s) updated successfully!"
with open('$SCSS_FILE', 'r', encoding='utf-8') as f:
content = f.read()
hex_data = content.encode('utf-8').hex()
sql = f"""
UPDATE theme_fields
SET value = convert_from(decode('{hex_data}', 'hex'), 'UTF8')
WHERE theme_id = $THEME_ID AND name = '$FIELD_NAME' AND target_id = $TARGET_ID;
UPDATE themes SET updated_at = NOW() WHERE id = $THEME_ID;
"""
p = subprocess.run(
['ssh', '$TARGET_HOST', 'docker exec -i app su - discourse -c "psql -d discourse"'],
input=sql,
capture_output=True,
text=True
)
if p.returncode != 0:
print("Error:", p.stderr)
exit(1)
else:
print(p.stdout.strip())
PYEOF
echo "🔄 Reloading Unicorn workers to recompile theme assets immediately..."
ssh "$TARGET_HOST" 'docker exec app sv restart unicorn 2>/dev/null || docker exec app /usr/bin/supervisorctl restart unicorn 2>/dev/null || docker restart app'
echo "✅ Theme $THEME_ID deployed and recompiled!"
echo "✨ Deployment complete!"