dadssad
All checks were successful
Deploy / deploy-staging (push) Successful in 24s
Deploy / deploy-production (push) Has been skipped

This commit is contained in:
2026-06-22 01:16:50 +02:00
parent ba8794c371
commit f83a64b854
12 changed files with 489 additions and 2 deletions

View File

@@ -15,6 +15,15 @@ Ein Desktop-Modul kann zusaetzlich diese Projektdateien besitzen:
Module-Assets werden in diesem Projekt nicht direkt aus `public/assets/apps/...` dupliziert, sondern ueber den generischen Endpoint `/module-assets/index.php` aus dem jeweiligen Modul ausgeliefert.
## Globale Desktop-Standards fuer Module
- gemeinsame Desktop-Mechaniken wie Fenster, Tray, globale Persistenz und Debug-Infrastruktur liegen im Desktop-Core
- Module und andere Apps sollen keine eigene Grund-Debug-Oberflaeche im Stil eines separaten globalen Debuggers bauen
- fuer Debugging im Desktop gilt das zentrale Admin-Debug-Widget neben der Uhr mit eigenem Debug-Fenster als Standard
- Debug-Events aus Modulen sollen in den gemeinsamen Desktop-Debug-Bus geschrieben werden, damit sie im globalen Debug-Fenster sichtbar sind
- wenn das globale Debug-Fenster geschlossen ist, sollen Module kein dauerhaft aktives Live-Debugging erzwingen
- app-spezifische Debug-Darstellungen sind nur zulaessig, wenn sie fachliche Zusatzinformationen zeigen, die ueber den globalen Stream hinausgehen
## Pflegehinweis
Diese Datei muss gepflegt bleiben, wenn sich Modulstruktur oder Modulregeln aendern.

View File

@@ -46,7 +46,11 @@
return [];
}
})();
const initialDebugMode = normalizedOptions.moduleDebugEnabled === true
const desktopDebugBus = window.__desktopDebugBus && typeof window.__desktopDebugBus === 'object'
? window.__desktopDebugBus
: null;
const initialDebugMode = (desktopDebugBus && desktopDebugBus.enabled === true)
|| normalizedOptions.moduleDebugEnabled === true
|| (document.body && document.body.dataset.moduleDebugEnabled === '1');
const fallbackSections = [
['overview', 'Übersicht'],
@@ -88,11 +92,12 @@
function setCookie(name, value, maxAgeSeconds) {
document.cookie = `${name}=${encodeURIComponent(value)}; path=/; max-age=${maxAgeSeconds}; samesite=lax`;
}
const debugBus = window.__nexusDebugBus || {
const debugBus = desktopDebugBus || window.__nexusDebugBus || {
enabled: initialDebugMode,
listener: null,
sequence: 0,
};
window.__desktopDebugBus = debugBus;
window.__nexusDebugBus = debugBus;
const browserTimezone = (() => {
try {
@@ -103,6 +108,10 @@
})();
function emitDebug(entry) {
if (typeof debugBus.emit === 'function') {
return debugBus.emit(entry);
}
debugBus.sequence += 1;
const payload = {
id: debugBus.sequence,

View File

@@ -280,6 +280,7 @@ final class AnalyticsService
}
$payouts = is_array($settings['payouts'] ?? null) ? $settings['payouts'] : [];
$walletWithdrawals = is_array($settings['wallet_withdrawals'] ?? null) ? $settings['wallet_withdrawals'] : [];
$purchasedMiners = is_array($settings['purchased_miners'] ?? null) ? $settings['purchased_miners'] : [];
$minerOffers = is_array($settings['miner_offers'] ?? null) ? $settings['miner_offers'] : [];
$currentHashrateMh = $this->totalHashrateMh(array_merge(