Commit Graph
4 Commits
Author SHA1 Message Date
Daniel Markstedt c292364b44 improved horizontal scrolling and columns in OLED client
rather than scrolling a long status strings horizontally back and forth, we now have:

- ID and type as frozen columns
- scroll from left to right then wrap to the beginning
- 3 frame pause before scrolling starts
- 2 frame pause before a fully scrolled string wraps
- print product names for all non-file device types
- special abbreviation of SAHD->SA (to disambiguate with SCHD)
2026-08-30 18:27:17 +02:00
Daniel Markstedt 27da017951 improve media workflows and version reporting in Go clients
- Extract selected archives directly into the image directory, skip existing images, and move properties files into the configuration directory without duplicate temporary storage.

- Limit no-media selectors to compatible image types, render device parameters without Go map delimiters, and return uploads to the upload page.

- Limit web uploads to the largest supported drive preset and simplify upload/download destination selection.

- Generate the shared Go project version from the C++ source, expose it through -v in the web, OLED, and Control Board clients, and verify it in Make, CI, and Debian builds.

- Update tests and documentation for the corrected web workflows and version flags.
2026-08-22 00:26:25 +02:00
Daniel Markstedt 8a8561b450 rewrite Control Board client in Go
Replace the Python Control Board client with a native Go service that reads the PCA9554 input expander through the GPIO interrupt path, renders the 128x64 SSD1306 menu, and drives SCSI ID, image, profile, and system-action workflows through the PiSCSI daemon. Keep input handling latency-sensitive with bounded queues, debouncing, diagnostics, and a separate asynchronous menu, display, and network pipeline.

Add a Control Board command, service unit, cross-build targets, and comprehensive unit coverage. Consolidate common I2C, configuration/profile, host-information, command, and embedded-asset support under the shared Go packages; update the OLED client and web configuration code to use those shared components, and document Control Board prerequisites, build, run, diagnostic, and service setup.

The PiSCSI Control Board hardware and original Python client were created by Benjamin Zeiss (@bzeiss), and the Go client is a rewrite of that software.
2026-08-02 09:01:26 +02:00
Daniel Markstedt 82a56a0eee rewrite OLED monitor in Go
Replace the previous OLED monitor implementation with a native Go application. Add SSD1306 display support over Linux I2C, status polling through the shared PiSCSI client, configurable rendering and rotation, diagnostic splash screens, graceful shutdown, and IP or blank screensaver modes. Include embedded fonts and bitmap assets together with focused renderer, status, and screensaver tests.

Restructure the Go code under a shared module rooted at go/, moving the PiSCSI client and protobuf package out of the web application's internal tree so they can be reused by the OLED monitor. Update imports, generation scripts, web build and installation scripts, and configuration paths to match the new layout.

Extend the Makefile, systemd integration, and GitHub Actions workflow to build, test, package, and install both Go applications for supported Raspberry Pi targets. Add dependency tracking for the shared Go module and provide a dedicated piscsi-oled service and installation target.
2026-08-01 17:06:22 +02:00