From 6abea047d1847978dc4a3fe989d48bd187484b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jose=20Luis=20Monta=C3=B1es=20Ojados?= Date: Mon, 19 Jan 2026 22:09:45 +0100 Subject: [PATCH] feat: Add zero-padding to transaction flow numbering for better alignment --- internal/tui/model.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/internal/tui/model.go b/internal/tui/model.go index 7b4a612..70d3190 100644 --- a/internal/tui/model.go +++ b/internal/tui/model.go @@ -1390,6 +1390,14 @@ func (m *Model) updateCallDetailView() { // --- Transaction Flow --- var right strings.Builder + // Calculate padding needed + digits := len(fmt.Sprintf("%d", len(flow.Packets))) + if digits < 2 { + digits = 2 + } + // Pad format string e.g. "%03d." + numFmt := fmt.Sprintf("%%0%dd.", digits) + for i, pkt := range flow.Packets { arrow := "→" arrowStyle := m.styles.ArrowOut @@ -1428,7 +1436,9 @@ func (m *Model) updateCallDetailView() { } ts := pkt.Timestamp.Format("15:04:05.000") - lineStr := fmt.Sprintf("%d. [%s] %s %s", i+1, ts, arrowStyle.Render(arrow), summaryStyle.Render(pkt.Summary())) + // Use pre-calculated format + numStr := fmt.Sprintf(numFmt, i+1) + lineStr := fmt.Sprintf("%s [%s] %s %s", numStr, ts, arrowStyle.Render(arrow), summaryStyle.Render(pkt.Summary())) if pkt.SDP != nil { mediaIP := pkt.SDP.GetSDPMediaIP() @@ -1494,6 +1504,13 @@ func (m *Model) exportCallToLog(flow *sip.CallFlow, filename string) error { fmt.Fprintf(f, "Transaction Flow:\n") fmt.Fprintf(f, "-----------------\n") + // Calculate padding needed + digits := len(fmt.Sprintf("%d", len(flow.Packets))) + if digits < 2 { + digits = 2 + } + numFmt := fmt.Sprintf("%%0%dd.", digits) + for i, pkt := range flow.Packets { arrow := "->" if len(flow.Packets) > 0 && pkt.SourceIP != flow.Packets[0].SourceIP { @@ -1513,8 +1530,10 @@ func (m *Model) exportCallToLog(flow *sip.CallFlow, filename string) error { dst = fmt.Sprintf("%s (%s)", dst, pkt.DestIP) } - fmt.Fprintf(f, "%d. [%s] %s %s %s (%s line %d)\n", - i+1, + // Use pre-calculated format + numStr := fmt.Sprintf(numFmt, i+1) + fmt.Fprintf(f, "%s [%s] %s %s %s (%s line %d)\n", + numStr, pkt.Timestamp.Format("15:04:05.000"), src, arrow, dst, summary,