diff --git a/website/app.js b/website/app.js
index ba1b763..7ff5c90 100644
--- a/website/app.js
+++ b/website/app.js
@@ -46,7 +46,53 @@ document.addEventListener('DOMContentLoaded', () => {
// Invite Detection & Bridge
const checkInvite = () => {
- const isJoinPage = window.location.pathname.includes('join.html');
+ const isJoinPage = window.location.pathname.includes('join');
+
+ // Dev Simulation Mode via URL Search Parameter (?dev=success) or Hash (#dev=success / #devsuccess)
+ const urlParams = new URLSearchParams(window.location.search);
+ let devMode = urlParams.get('dev');
+
+ if (!devMode) {
+ const hashClean = window.location.hash.startsWith('#') ? window.location.hash.substring(1) : window.location.hash;
+ const hashParams = new URLSearchParams(hashClean);
+ devMode = hashParams.get('dev');
+ }
+
+ if (!devMode) {
+ if (window.location.hash.includes('devsuccess') || window.location.search.includes('devsuccess')) devMode = 'success';
+ if (window.location.hash.includes('devfailure') || window.location.search.includes('devfailure')) devMode = 'failure';
+ }
+
+ if (isJoinPage && devMode) {
+ setTimeout(() => {
+ const displayRoom = document.getElementById('display-room-id');
+ const actions = document.getElementById('join-actions');
+ if (displayRoom) displayRoom.textContent = 'DEV-ROOM';
+
+ if (actions) {
+ actions.innerHTML = `
+
+
+
+ Simulating connection (DEV)...Verbindung wird simuliert (DEV)...
+
+
+ Simulating status event in 1.5 seconds.Status-Event wird in 1,5 Sekunden simuliert.
+
+
+ `;
+ setTimeout(() => {
+ window.dispatchEvent(new CustomEvent('KOALASYNC_STATUS', {
+ detail: {
+ success: devMode === 'success',
+ message: devMode === 'failure' ? 'Simulated Connection Timeout!' : ''
+ }
+ }));
+ }, 1500);
+ }
+ }, 600);
+ return;
+ }
// Use a short timeout to let the bridge script initialize its dataset attribute
setTimeout(() => {
@@ -182,7 +228,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Listen for status from Extension
window.addEventListener('KOALASYNC_STATUS', (e) => {
const { success, message } = e.detail;
- const isJoinPage = window.location.pathname.includes('join.html');
+ const isJoinPage = window.location.pathname.includes('join');
if (isJoinPage) {
const icon = document.getElementById('join-status-icon');
@@ -192,10 +238,13 @@ document.addEventListener('DOMContentLoaded', () => {
const ring = document.getElementById('status-ring');
if (success) {
- if (ring) ring.classList.remove('active-pulse');
+ if (ring) {
+ ring.classList.remove('active-pulse');
+ ring.style.display = 'none';
+ }
if (icon) {
- icon.textContent = '✅';
- icon.style.transform = 'scale(1.2)';
+ icon.innerHTML = '
';
+ icon.style.transform = 'scale(1)';
}
const isDE = document.documentElement.classList.contains('lang-de');
title.textContent = isDE ? 'Erfolgreich!' : 'Success!';
@@ -222,10 +271,13 @@ document.addEventListener('DOMContentLoaded', () => {
`;
} else {
- if (ring) ring.classList.remove('active-pulse');
+ if (ring) {
+ ring.classList.remove('active-pulse');
+ ring.style.display = 'none';
+ }
if (icon) {
- icon.textContent = '❌';
- icon.style.transform = 'scale(1.2)';
+ icon.innerHTML = '
';
+ icon.style.transform = 'scale(1)';
}
const isDE = document.documentElement.classList.contains('lang-de');
title.textContent = isDE ? 'Fehler' : 'Error';
@@ -405,7 +457,7 @@ document.addEventListener('DOMContentLoaded', () => {
// Update titles dynamically based on page
var path = window.location.pathname;
var isIndex = path === '/' || path.endsWith('index.html') || path.split('/').pop() === '';
- var isJoin = path.endsWith('join.html');
+ var isJoin = path.includes('join');
if (isIndex) {
const titles = {
diff --git a/website/assets/KoalaThumbsDown.webp b/website/assets/KoalaThumbsDown.webp
new file mode 100644
index 0000000..ac07452
Binary files /dev/null and b/website/assets/KoalaThumbsDown.webp differ
diff --git a/website/assets/KoalaThumbsUp.webp b/website/assets/KoalaThumbsUp.webp
new file mode 100644
index 0000000..4712ba5
Binary files /dev/null and b/website/assets/KoalaThumbsUp.webp differ
diff --git a/website/lang-init.js b/website/lang-init.js
index fd07b20..a74c38a 100644
--- a/website/lang-init.js
+++ b/website/lang-init.js
@@ -8,7 +8,7 @@
// Update titles dynamically based on page
var path = window.location.pathname;
var isIndex = path === '/' || path.endsWith('index.html') || path.split('/').pop() === '';
- var isJoin = path.endsWith('join.html');
+ var isJoin = path.includes('join');
if (isIndex) {
var titles = {
diff --git a/website/style.css b/website/style.css
index dc62bbc..f2e3890 100644
--- a/website/style.css
+++ b/website/style.css
@@ -1745,12 +1745,20 @@ html.lang-de [lang="en"] {
.join-status-visual {
margin-bottom: 2rem;
position: relative;
- height: 110px;
+ height: 200px;
display: flex;
align-items: center;
justify-content: center;
}
+.join-status-mascot {
+ display: block;
+ width: 140px;
+ height: auto;
+ z-index: 2;
+ filter: drop-shadow(0 4px 12px rgba(0,0,0,0.15));
+}
+
.status-ring {
position: absolute;
width: 90px;