v1.1.0: Parser versioning, server info, auto-browser, section overviews

- Add parser versioning with Version() method and version display on main screen
- Add server model and serial number to Configuration tab and TXT export
- Add auto-browser opening on startup with --no-browser flag
- Add Restart and Exit buttons with graceful shutdown
- Add section overview stats (CPU, Power, Storage, GPU, Network)
- Change PCIe Link display to "x16 PCIe Gen4" format
- Add Location column to Serials section
- Extract BoardInfo from FRU and PlatformId from ThermalConfig

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-25 13:49:43 +03:00
parent e52eb909f7
commit c7422e95aa
11 changed files with 507 additions and 61 deletions

View File

@@ -25,7 +25,7 @@ func (e *Exporter) ExportCSV(w io.Writer) error {
defer writer.Flush()
// Header
if err := writer.Write([]string{"Component", "Serial Number", "Manufacturer", "Part Number"}); err != nil {
if err := writer.Write([]string{"Component", "Serial Number", "Manufacturer", "Location"}); err != nil {
return err
}
@@ -59,11 +59,15 @@ func (e *Exporter) ExportCSV(w io.Writer) error {
if mem.SerialNumber == "" {
continue
}
location := mem.Location
if location == "" {
location = mem.Slot
}
if err := writer.Write([]string{
fmt.Sprintf("DIMM Slot %d (%s)", mem.Slot, mem.PartNumber),
mem.PartNumber,
mem.SerialNumber,
mem.Manufacturer,
mem.PartNumber,
location,
}); err != nil {
return err
}
@@ -75,10 +79,10 @@ func (e *Exporter) ExportCSV(w io.Writer) error {
continue
}
if err := writer.Write([]string{
fmt.Sprintf("%s %s", stor.Type, stor.Model),
stor.Model,
stor.SerialNumber,
"",
"",
stor.Manufacturer,
stor.Slot,
}); err != nil {
return err
}
@@ -90,10 +94,10 @@ func (e *Exporter) ExportCSV(w io.Writer) error {
continue
}
if err := writer.Write([]string{
fmt.Sprintf("%s (%s)", pcie.DeviceClass, pcie.Slot),
pcie.DeviceClass,
pcie.SerialNumber,
"",
pcie.PartNumber,
pcie.Manufacturer,
pcie.Slot,
}); err != nil {
return err
}
@@ -121,7 +125,15 @@ func (e *Exporter) ExportTXT(w io.Writer) error {
return nil
}
fmt.Fprintf(w, "File: %s\n\n", e.result.Filename)
fmt.Fprintf(w, "File: %s\n", e.result.Filename)
// Server model and serial number
if e.result.Hardware != nil && e.result.Hardware.BoardInfo.ProductName != "" {
fmt.Fprintln(w)
fmt.Fprintf(w, "Server Model: %s\n", e.result.Hardware.BoardInfo.ProductName)
fmt.Fprintf(w, "Serial Number: %s\n", e.result.Hardware.BoardInfo.SerialNumber)
}
fmt.Fprintln(w)
// Hardware summary
if e.result.Hardware != nil {