Merge branch 'main' into dev/jappel
Reconciles two independent lines of work: main cherry-picked and then extended dev/jappel's build-script/config-portability/rename-tab/ COM-port fixes, additionally fixing a config-loss bug (rebuild wiped the config when it lived in the install dir -- moved to roaming %APPDATA% instead) and adding free-text notes per action plus a frameless resizable window. dev/jappel keeps its .mcp.json registration and docs/ reference tree, which main deliberately left out. Conflict resolutions favored main's versions where the two sides solved the same problem (config location, build deploy target, COM-port release, tab rename) since main's fixes were validated against a real rebuild-wipes-config incident. docs/architecture.md and docs/data-model.md updated to describe the resulting %APPDATA% config path and the note field.
This commit is contained in:
commit
189ec01e68
11 changed files with 470 additions and 125 deletions
33
README.md
33
README.md
|
|
@ -12,9 +12,9 @@ echtes Board getestet (Read-Modify-Write ist byte-identisch zum Original,
|
|||
inklusive CRC). Nicht vorhanden: automatisierte Tests (Verifikation läuft
|
||||
manuell gegen ein angeschlossenes Board), eine vorgefertigte `.exe` zum
|
||||
Download (siehe unten, warum), und Mehrbenutzer-/Netzwerkbetrieb. Die eigene
|
||||
Config-Datei (`versapad_config_all.json`) liegt automatisch neben der
|
||||
Installation (siehe „Aufbau" unten) und wird bei Bedarf automatisch neu
|
||||
angelegt — kein manuelles Pfad-Anpassen mehr nötig. Nur die *optionale*
|
||||
Config-Datei (`versapad_config_all.json`) liegt automatisch unter
|
||||
`%APPDATA%\VersaPadViewer\` (siehe „Aufbau" unten) und wird bei Bedarf
|
||||
automatisch neu angelegt — kein manuelles Pfad-Anpassen mehr nötig. Nur die *optionale*
|
||||
Lese-Interop mit den JSON-Exports der offiziellen VersaGUI
|
||||
(`versapad_data.CONFIG_PATHS`) ist noch für eine bestimmte Windows-Maschine
|
||||
hartkodiert (OneDrive-Desktop) — für einen anderen Rechner dort anpassen,
|
||||
|
|
@ -33,10 +33,19 @@ falls gewünscht.
|
|||
oder als Datei speichern
|
||||
- **Makro-Editor** — bis zu 8 Schritte pro Slot, liest/schreibt die echte
|
||||
Makro-Tabelle vom Board
|
||||
- **Notizen** — freier Text pro Button/Encoder-Aktion, was sie tatsächlich
|
||||
tut (z.B. "Speichern in Fusion 360"), zusätzlich zur automatischen
|
||||
Beschriftung ("Strg+S"). Rein lokal wie Profilnamen, geht nie aufs Board,
|
||||
bleibt beim Tastenwechsel und beim "Vom Board laden" erhalten
|
||||
- **MCP-Server** — lässt eine KI (Claude o.ä.) die Belegung direkt per
|
||||
Tool-Aufruf ändern, ohne Klicks in der GUI (siehe unten)
|
||||
- **Tray-Icon** — minimiert/schließt ins Tray statt in die Taskleiste, wie
|
||||
die offizielle VersaGUI
|
||||
- **Randloses Fenster** — ohne Windows-Titelleiste, dafür kompakter Kopf
|
||||
(Modus-Checkboxen direkt neben dem Titel). Verschieben durch Ziehen an
|
||||
der Kopfzeile, Größe ändern am Anfasser unten rechts, `✕`/`—` legen ins
|
||||
Tray. Einen Taskleisten-Eintrag gibt es dadurch nicht — das Fenster kommt
|
||||
über das Tray-Icon zurück.
|
||||
|
||||
## Voraussetzungen
|
||||
|
||||
|
|
@ -75,7 +84,7 @@ Maschine/Python-Version unterschiedlich). Selbst bauen:
|
|||
Das Skript installiert/aktualisiert selbst alle nötigen Pakete aus
|
||||
`requirements.txt` (kein manuelles `pip install` vorher nötig), baut dann
|
||||
mit PyInstaller (`--onedir --windowed`, eigenes Icon) und kopiert das
|
||||
Ergebnis nach `dist\VersaPadViewer\VersaPadViewer.exe` im Projektordner.
|
||||
Ergebnis nach `%LOCALAPPDATA%\VersaPadViewer\VersaPadViewer.exe`.
|
||||
Bricht ein Schritt ab (fehlendes Python, PyInstaller-Fehler, ...), zeigt das
|
||||
Skript eine klare Fehlermeldung und wartet auf einen Tastendruck, statt sich
|
||||
bei Doppelklick im Explorer kommentarlos zu schließen (`-NoPause`
|
||||
|
|
@ -107,14 +116,20 @@ VersaMCU-Firmware-Quellen übernommen und gegen ein echtes Board validiert
|
|||
(Read → unpack → pack ist bytegenau identisch zum Original, inklusive CRC).
|
||||
|
||||
Die eigene Config-Datei (`versapad_config_all.json` — alle 3 Profile +
|
||||
Makros + lokale Profilnamen, siehe `versapad_combined.py`) liegt neben der
|
||||
Installation: bei der gebauten `.exe` im selben Ordner, beim Start aus dem
|
||||
Quellcode im Projektordner (`versapad_data.app_dir()`). Fehlt sie (z.B.
|
||||
frische Installation), wird sie automatisch angelegt — per Serial vom
|
||||
Makros + lokale Profilnamen + Notizen, siehe `versapad_combined.py`) liegt
|
||||
unter `%APPDATA%\VersaPadViewer\` (`versapad_data.app_dir()`), also
|
||||
**getrennt vom Installationsordner** und unabhängig davon, ob die `.exe`
|
||||
oder der Quellcode gestartet wurde. Beides ist Absicht: das Build-Skript
|
||||
räumt sein Zielverzeichnis vor jedem Deploy komplett ab (läge die Config
|
||||
dort, würde jeder Rebuild sie löschen), und ein vom Startweg abhängiger
|
||||
Pfad hatte zu zwei auseinanderlaufenden Configs geführt. Fehlt die Datei
|
||||
(z.B. frische Installation), wird sie automatisch angelegt — per Serial vom
|
||||
Board, falls eins angeschlossen ist, sonst als leere Default-Config.
|
||||
Profilnamen (`profile_names`) stehen direkt in dieser Datei und lassen sich
|
||||
per Doppelklick auf einen Tab (in jedem Modus — Nur-Lesen, Live-Sync oder
|
||||
Programmiermodus) oder `rename_profile()` (MCP) ändern.
|
||||
Programmiermodus) oder `rename_profile()` (MCP) ändern. Notizen ebenso —
|
||||
im Bearbeiten-Dialog des Programmiermodus oder per
|
||||
`set_button_note()`/`set_encoder_note()` (MCP).
|
||||
|
||||
Die klassischen `versapad_config1/2/3.json` sind kein von diesem Tool
|
||||
geschriebenes Format, sondern optionale Lese-Interop mit einem JSON-Export
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue