Fokussierter Tag mit 7 Commits fรผr UI-Polish und kleinere Features:
- Onboarding Modal - Kompaktes Design statt Fullscreen
- Calendar ViewsBar - Unified View Switcher Komponente
- STT API Key - Support fรผr alle Matrix Bots
- Gift Code Fixes - Debug-Logging entfernt
Onboarding Modal Polish
Das Onboarding-Modal wurde von Fullscreen auf kompaktes Modal umgestellt.
Vorher vs. Nachher
| Aspekt | Fullscreen | Kompakt |
|---|---|---|
| Bildschirmabdeckung | 100% | ~60% |
| Hintergrund sichtbar | โ | โ |
| Mobile UX | Okay | Besser |
| Escape-Gefรผhl | Bedrรคngend | Einladend |
Elevation Layer Colors
Korrektur der Layer-Farben fรผr das Design-System:
/* Vorher: Falsche Elevation */
.modal-content {
background: var(--surface-0);
}
/* Nachher: Korrekte Elevation */
.modal-content {
background: var(--surface-1); /* Erhรถht */
}
.modal-overlay {
background: rgba(0, 0, 0, 0.5);
}
Design-System Referenz
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Elevation Layers โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ surface-0 โโโโโโโโ Base (Page Background) โ
โ surface-1 โโโโโโโโ Raised (Cards, Modals) โ
โ surface-2 โโโโโโโโ Higher (Dropdowns, Tooltips) โ
โ surface-3 โโโโโโโโ Highest (Floating Elements) โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Calendar ViewsBar
Neue unified Komponente fรผr den View-Wechsel im Calendar.
Features
| Feature | Beschreibung |
|---|---|
| Day/Week/Month | Standard-Ansichten |
| Year Overview | Jahresรผbersicht |
| Agenda | Listen-Ansicht |
| Keyboard Shortcuts | D, W, M, Y, A |
Component API
<script lang="ts">
import { ViewsBar } from '$lib/components/ViewsBar.svelte';
let currentView = $state<'day' | 'week' | 'month' | 'year' | 'agenda'>('week');
</script>
<ViewsBar bind:view={currentView} />
Implementation
<!-- apps/calendar/apps/web/src/lib/components/ViewsBar.svelte -->
<div class="views-bar">
{#each views as view}
<button
class:active={currentView === view.id}
on:click={() => (currentView = view.id)}
title="{view.label} ({view.shortcut})"
>
<Icon name={view.icon} />
<span class="label">{view.label}</span>
</button>
{/each}
</div>
<style>
.views-bar {
display: flex;
gap: 4px;
padding: 4px;
background: var(--surface-1);
border-radius: 8px;
}
button.active {
background: var(--primary);
color: var(--on-primary);
}
</style>
STT API Key Support
API Key Authentication fรผr den Transcription Service.
Motivation
- Externer Zugriff auf mana-stt
- Rate Limiting pro API Key
- Usage Tracking
Implementation
// packages/bot-services/src/transcription.service.ts
export class TranscriptionService {
private apiKey?: string;
constructor(config: { apiKey?: string }) {
this.apiKey = config.apiKey;
}
async transcribe(audioBuffer: Buffer): Promise<string> {
const headers: Record<string, string> = {
'Content-Type': 'audio/wav',
};
if (this.apiKey) {
headers['X-API-Key'] = this.apiKey;
}
const response = await fetch(`${this.baseUrl}/transcribe`, {
method: 'POST',
headers,
body: audioBuffer,
});
return response.json();
}
}
Betroffene Bots
Alle Matrix Bots mit STT-Funktionalitรคt:
- matrix-stt-bot
- matrix-nutriphi-bot
- matrix-chat-bot (Voice Messages)
Environment Variable
STT_API_KEY=your-api-key-here
Gift Code Fixes
Debug Logging entfernt
Nach erfolgreichem Fix des userId undefined Problems wurde das Debug-Logging entfernt:
- console.log('Gift redemption debug:', {
- userId,
- giftCode,
- giftType,
- });
Cleanup
- Produktions-ready ohne Debug-Output
- Cleaner Logs fรผr Monitoring
Zusammenfassung
| Bereich | Commits | Highlights |
|---|---|---|
| Onboarding | 2 | Modal โ Kompakt, Layer Colors |
| Calendar | 1 | ViewsBar Komponente |
| STT | 2 | API Key fรผr Bots |
| Gift Codes | 1 | Debug Cleanup |
| Fixes | 1 | userId Guard |
Nรคchste Schritte
- Onboarding Steps - Weitere Steps implementieren
- Calendar Sync - CalDAV Integration
- STT Streaming - Real-time Transkription
- Gift Admin Panel - Code-Erstellung im UI