BareGit

model-switcher: update README and increase CRT flicker intensity

Author: MetroWind <chris.corsair@gmail.com>
Date: Tue Jan 6 22:13:31 2026 -0800
Commit: 966b6c8531301f2c75f1220540d5d353c0f9a042

Changes

diff --git a/model-switcher/README.md b/model-switcher/README.md
index ff28474..c2d9b80 100644
--- a/model-switcher/README.md
+++ b/model-switcher/README.md
@@ -1,6 +1,6 @@
 # LLM Model Switcher
 
-A simple web-based tool to switch between different `llama.cpp` model configurations on a headless AI server.
+A simple web-based tool to switch between different `llama.cpp` model configurations on a headless AI server, featuring a retro-futuristic terminal interface.
 
 ## How it works
 
@@ -11,11 +11,19 @@ The tool manages `llama.cpp` configurations by manipulating symbolic links and i
 3.  **Switching**: When you select a model in the web UI:
     *   The tool updates the symlink at `/etc/llama.cpp.conf` to point to the selected file in `/etc/llama.cpp.d`.
     *   It restarts the `llama.cpp` systemd service to apply the changes.
+4.  **Monitoring**: The tool provides a real-time view of the last 100 lines of the `llama.cpp` service logs using `journalctl`.
+
+## Features
+
+*   **Model Management**: Easily swap between different model configurations.
+*   **Service Logs**: Integrated log viewer showing the last 100 lines of the systemd service (newest first).
+*   **Retro UI**: A "Cyberpunk CRT" aesthetic with scanlines, phosphor glow, and screen flicker effects.
+*   **Zero Dependencies**: The backend uses standard Python libraries, and the frontend uses Preact via ESM—no build step or `npm install` required.
 
 ## Requirements
 
-*   Python 3.x (no external dependencies required).
-*   `sudo` privileges (to modify `/etc` and restart system services).
+*   Python 3.7+ (uses `subprocess.run` with `capture_output`).
+*   `sudo` privileges (to modify `/etc`, restart system services, and read `journalctl` logs).
 *   A `systemd` service named `llama.cpp`.
 
 ## Usage
@@ -35,7 +43,7 @@ By default, the server will be available at `http://127.0.0.1:7330`.
 
 ## Project Structure
 
-*   `main.py`: The Python backend using `http.server`.
+*   `main.py`: The Python backend using `http.server` and `subprocess`.
 *   `static/`: Contains the frontend assets (HTML/CSS/JS).
-    *   Uses **Preact** and **HTM** via ESM (no build step required).
-    *   Plain CSS for styling.
+    *   `index.html`: Preact-based application.
+    *   `style.css`: Custom "CRT Terminal" styling and animations.
\ No newline at end of file
diff --git a/model-switcher/static/style.css b/model-switcher/static/style.css
index 9b5307f..1aad45f 100644
--- a/model-switcher/static/style.css
+++ b/model-switcher/static/style.css
@@ -70,25 +70,25 @@ body::after {
 /* Subtle Flicker */
 @keyframes flicker {
     0% { opacity: 0.97; }
-    5% { opacity: 0.95; }
-    10% { opacity: 0.9; }
+    5% { opacity: 0.85; }
+    10% { opacity: 0.8; }
     15% { opacity: 0.95; }
-    20% { opacity: 0.99; }
+    20% { opacity: 0.88; }
     25% { opacity: 0.95; }
-    30% { opacity: 0.9; }
+    30% { opacity: 0.8; }
     35% { opacity: 0.96; }
-    40% { opacity: 0.98; }
+    40% { opacity: 0.82; }
     45% { opacity: 0.95; }
     50% { opacity: 0.99; }
-    55% { opacity: 0.93; }
-    60% { opacity: 0.9; }
+    55% { opacity: 0.83; }
+    60% { opacity: 0.8; }
     65% { opacity: 0.96; }
     70% { opacity: 1; }
-    75% { opacity: 0.97; }
+    75% { opacity: 0.87; }
     80% { opacity: 0.95; }
-    85% { opacity: 0.92; }
+    85% { opacity: 0.82; }
     90% { opacity: 0.98; }
-    95% { opacity: 0.99; }
+    95% { opacity: 0.89; }
     100% { opacity: 0.94; }
 }