theme-zoom
Theme-Umschaltung, Zoom/Schriftgröße, Autosave, Backups, Toasts, Beenden-Dialog bei ungespeicherten Buffern und Menü-Tastatur in zid. Use when touching toggle_theme/UI.theme, zoom_in/out/reset/setFont
Files1
View on GitHubSKILL.md.claude/skills/theme-zoom/SKILL.md
GitHubTheme, Zoom, Autosave, Toasts, Menü-Tastatur
- Theme:
toggle_theme(View, Palette) schaltetUI.themezwischenTheme.light()/dark(); Editor-Farben kommen ausCodeEditor.applyTheme(bg, gutter, Zeilennummern, Cursor, Auswahl,text_color).--theme light|darkgilt einmalig beim Start; das Theme nie pro Frame setzen, sonst greift kein Umschalter. - Zoom: Ctrl+=/Ctrl+-/Ctrl+0 (
zoom_in/out/reset, 10–48,setFontSizeAllfür alle Panes). Klein gezoomt zeichnet der Editor mehr Reihen; das Layout selbst darf dabei nie wachsen (Minimap-Rückkopplung, siehe Skillclay-layout;python3 scripts/e2e_layout_stable.py). Der Glyph-Cache (4096 Einträge, je Größe × 4 Subpixel-Varianten) leert sich komplett, wenn er voll ist (GlyphCache.ensureFreeSlot), statt neue Glyphen jeden Frame neu zu rastern. - Fenster schließen fragt nach: wio
.closebeendet nicht selbst (platform/mod.zig), sondern ruftUI.requestQuit. Ohne ungespeicherte Buffer (Buffer.is_dirty()überopen_buffers) setzt esquit_confirmed, sonst Dialog „Unsaved Changes“ (Save All / Don't Save / Cancel); Save All legt wiesave()eine Sicherung an und bricht beim ersten Speicherfehler ab, ohne zu beenden. Der Main-Loop endet überquit_confirmed. RPCrequest_quitstellt den Schließen-Knopf nach, E2Epython3 scripts/e2e_quit_unsaved.py. Nach dem LadenUI.markLoaded, nie nurlast_save = root:is_dirtyvergleicht auchlast_save_eol_mode(Vorgabe LF) mit dem erkanntenfile_eol_mode; ohnemarkLoadedgilt jede CRLF-Datei ab dem Öffnen als geändert. Das gilt auch für den Fallback- bzw. Scratch-Buffer.main.zigerkennt ein Ordner-Argument (zid .) peropenDir(statFileöffnet unter Windows als Datei und meldet bei Ordnern IsDir, nie.directory) und nimmt es als Projektordner statt der cwd. E2E-Fall 1b ine2e_quit_unsaved.py. - Autosave: File → Toggle Autosave (
UI.autosave), speichert 1 s nach der letzten Änderung (CodeEditor.last_edit_ms) nur Text-Tabs mit Pfad. Jedes Speichern legt vorher eine Sicherung unter$XDG_DATA_HOME/zid/backup/<name>.<hash>.bakab (src/editor/backup.zig, eine je Datei, wird ersetzt). CRLF-Dateien bleiben CRLF (file_eol_mode, Test im Editor). - Gemerkt (
user_state):theme,font_size,autosavezusätzlich zu Breite/Hidden. - Toasts:
UI.showToast(3 s, unten rechts, max. 4): „Saved x“ (CodeEditor.takeSaved), „Moved to trash: x“ (FileExplorerState.takeInfo), „Font size n“, „Autosave on/off“. RPCui_state.toastliefert den jüngsten Text. - Menü per Tastatur: Alt+F/E/V/H öffnet, ←/→ wechselt, ↑/↓ markiert (
menu_highlight), Enter führt aus, Escape schließt. Kürzel-Dialog scrollt (Mausrad, ↑/↓;shortcuts_scroll_y, Inhaltsc_contentin einem 520-px-Clip). - 503 beim Warmup:
agent.ziglieferterror.ServerLoading(debug-Log) stattLlama Server Error: 503im Fehler-Log; die Warmup-Schleife wiederholt, der Chat zeigt „initializing“. python3 scripts/e2e_ui_misc.pydeckt Theme, Zoom, Autosave, Toast, Backup, Menü-Tastatur und Dialog-Scroll ab.