Skip to content

Commit a0beeef

Browse files
maxzeichenclaude
andcommitted
Sync with main-repo - 2026-04-03
🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1 parent d2d6a8f commit a0beeef

6 files changed

Lines changed: 28 additions & 28 deletions

File tree

.github/workflows/dockerhub-readme-sync.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
username: ${{ secrets.DOCKERHUB_USERNAME }}
4040
password: ${{ secrets.DOCKERHUB_TOKEN }}
4141
repository: dockerdiscordcontrol/dockerdiscordcontrol-windows
42-
short-description: 'Control Docker containers via Discord bot + Web UI - Windows Edition. Docker Desktop short-description: 'Control Docker containers via Discord bot + Web UI - Windows Edition. Docker Desktop & WSL2 optimized.' WSL2 optimized.'
42+
short-description: 'Control Docker containers via Discord bot + Web UI - Windows Edition. Docker Desktop short-description: 'Control Docker containers via Discord bot + Web UI - Windows Edition. Docker Desktop short-description: 'Control Docker containers via Discord bot + Web UI - Windows Edition. Docker Desktop & WSL2 optimized.' WSL2 optimized.' WSL2 optimized.'
4343
readme-filepath: ./README.md
4444

4545
- name: Summary

app/blueprints/main_routes.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,14 +183,12 @@ def save_config_api():
183183
'config_files': save_result.config_files,
184184
'critical_settings_changed': save_result.critical_settings_changed
185185
}
186-
flash(result['message'], 'success')
187186
logger.info(f"Configuration saved successfully via ConfigurationSaveService: {save_result.message}")
188187
else:
189188
result = {
190189
'success': False,
191190
'message': save_result.error or save_result.message or 'Failed to save configuration.'
192191
}
193-
flash(result['message'], 'error')
194192
logger.warning(f"Failed to save configuration via ConfigurationSaveService: {result['message']}")
195193

196194
except (ImportError, AttributeError, RuntimeError) as e:

app/static/ddc_web.png

-1.13 MB
Loading

app/templates/_base.html

Lines changed: 14 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -44,29 +44,20 @@
4444
margin-bottom: -1rem;
4545
position: relative;
4646
z-index: 5;
47-
/* Subtiler 50px Fade-Effekt: links, rechts UND oben */
48-
mask:
49-
linear-gradient(to right,
50-
transparent 0%,
51-
black 50px,
52-
black calc(100% - 50px),
53-
transparent 100%),
54-
linear-gradient(to bottom,
55-
transparent 0%,
56-
black 50px,
57-
black 100%);
58-
mask-composite: intersect;
59-
-webkit-mask:
60-
linear-gradient(to right,
61-
transparent 0%,
62-
black 50px,
63-
black calc(100% - 50px),
64-
transparent 100%),
65-
linear-gradient(to bottom,
66-
transparent 0%,
67-
black 50px,
68-
black 100%);
69-
-webkit-mask-composite: source-in;
47+
/* Neon glow effect matching the DDC text style */
48+
filter:
49+
drop-shadow(0 0 8px rgba(0, 195, 255, 1))
50+
drop-shadow(0 0 20px rgba(0, 195, 255, 0.7))
51+
drop-shadow(0 0 45px rgba(0, 195, 255, 0.5))
52+
drop-shadow(0 0 80px rgba(0, 120, 255, 0.35));
53+
transition: filter 0.3s ease;
54+
}
55+
.logo-header img:hover {
56+
filter:
57+
drop-shadow(0 0 12px rgba(0, 195, 255, 1))
58+
drop-shadow(0 0 30px rgba(0, 195, 255, 0.85))
59+
drop-shadow(0 0 60px rgba(0, 195, 255, 0.6))
60+
drop-shadow(0 0 100px rgba(0, 120, 255, 0.45));
7061
}
7162
.alert { margin-top: 15px; }
7263
.help-icon { cursor: help; margin-left: 5px; color: #6c757d; font-size: 0.9em; }

services/translation/translation_service.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,14 @@ def _build_translation_text(self, context: TranslationContext, pair: ChannelPair
568568
if context.content:
569569
parts.append(context.content)
570570
if pair.translate_embeds and context.embed_texts:
571-
parts.extend(context.embed_texts)
571+
# Deduplicate: skip embed texts that substantially overlap with message content
572+
content_lower = context.content.lower() if context.content else ""
573+
for et in context.embed_texts:
574+
et_lower = et.lower()
575+
# Only filter if embed text covers >50% of content (real duplicate)
576+
if content_lower and len(et_lower) > 20 and et_lower in content_lower:
577+
continue
578+
parts.append(et)
572579
return "\n\n".join(parts)
573580

574581
async def _post_translation(self, bot, pair: ChannelPair,

templates/DockerDiscordControl.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ Control Channels: Everyone gets full access[br]
2626
Per-container permissions (Status, Start, Stop, Restart)[br]
2727
Configurable admin users and spam protection[br][br]
2828
[b]MORE FEATURES[/b][br]
29-
Multi-Language: English, German, French[br]
29+
40 Languages for Web UI and Bot (independently selectable)[br]
3030
Status Watchdog (Dead Man's Switch with ping URL)[br]
3131
Mech Evolution System (11 stages with animations)[br]
3232
Web Dashboard for configuration and monitoring[br]
@@ -44,8 +44,12 @@ Alpine 3.23.3, less than 200MB RAM[br][br]
4444
- NEW: 40 languages for Web UI and Bot (independently selectable)
4545
- NEW: Instant language switch (auto-reload, no save needed)
4646
- NEW: RTL support for Arabic, Hebrew, Persian
47+
- NEW: Transparent whale logo with CSS neon glow effect
4748
- FIXED: Double save button click causing infinite spinner
4849
- FIXED: Channel translation losing embed preview images (link previews now preserved)
50+
- FIXED: Channel translation duplicating text from embed descriptions
51+
- FIXED: "Requires restart" badge showing permanently instead of only on change
52+
- FIXED: Duplicate "Configuration saved" notification on page reload
4953

5054
###v2.2.0 (2026-03-25)
5155
**Channel Translation**

0 commit comments

Comments
 (0)