fix: use ASCII tree structure for nested attachments
Replace container icon with proper tree characters (├─ and └─) to show parent-child relationship between routes and their attachments.
- commit
- 210d0faeb7115d75e9b99c8d4a2f305dd4444ad9
- author
- brice · · 2026-01-17 14:37 UTC
- parent
- a581df4
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
1 file · +9 -7
M internal/adapters/in/cli/routes.go +9 -7
| @@ -169,13 +169,15 @@ func runRoutesListRemote(ctx context.Context, client *remote.Client) error { | |||
| 169 | 169 | displayNetwork := truncateNetwork(route.Network, networkColWidth) | |
| 170 | 170 | rows = append(rows, []string{route.Domain, displayImage, displayNetwork, containerBadge, httpStatus}) | |
| 171 | 171 | ||
| 172 | - | for _, attachment := range route.Attachments { | |
| 173 | - | // Use container icon with indent for attachment tree display | |
| 174 | - | attachmentName := " " + styles.IconContainer + " " + attachment.Name | |
| 175 | - | // Use rune count for proper Unicode handling (icons are multi-byte) | |
| 176 | - | runes := []rune(attachmentName) | |
| 177 | - | if len(runes) > 25 { | |
| 178 | - | attachmentName = string(runes[:22]) + "..." | |
| 172 | + | for i, attachment := range route.Attachments { | |
| 173 | + | // ASCII tree structure for nested attachments | |
| 174 | + | prefix := "├─" | |
| 175 | + | if i == len(route.Attachments)-1 { | |
| 176 | + | prefix = "└─" | |
| 177 | + | } | |
| 178 | + | attachmentName := prefix + " " + attachment.Name | |
| 179 | + | if len(attachmentName) > 25 { | |
| 180 | + | attachmentName = attachmentName[:22] + "..." | |
| 179 | 181 | } | |
| 180 | 182 | attachmentStatus := components.ContainerStatusBadge(attachment.Status) | |
| 181 | 183 | attachmentImage := truncateImage(attachment.Image, imageColWidth) | |
| @@ -169,13 +169,15 @@ func runRoutesListRemote(ctx context.Context, client *remote.Client) error { | |||||
| 169 | displayNetwork := truncateNetwork(route.Network, networkColWidth) | 169 | displayNetwork := truncateNetwork(route.Network, networkColWidth) | ||
| 170 | rows = append(rows, []string{route.Domain, displayImage, displayNetwork, containerBadge, httpStatus}) | 170 | rows = append(rows, []string{route.Domain, displayImage, displayNetwork, containerBadge, httpStatus}) | ||
| 171 | 171 | ||||
| 172 | - | for _, attachment := range route.Attachments { | 172 | + | for i, attachment := range route.Attachments { |
| 173 | - | // Use container icon with indent for attachment tree display | 173 | + | // ASCII tree structure for nested attachments |
| 174 | - | attachmentName := " " + styles.IconContainer + " " + attachment.Name | 174 | + | prefix := "├─" |
| 175 | - | // Use rune count for proper Unicode handling (icons are multi-byte) | 175 | + | if i == len(route.Attachments)-1 { |
| 176 | - | runes := []rune(attachmentName) | 176 | + | prefix = "└─" |
| 177 | - | if len(runes) > 25 { | 177 | + | } |
| 178 | - | attachmentName = string(runes[:22]) + "..." | 178 | + | attachmentName := prefix + " " + attachment.Name |
| 179 | + | if len(attachmentName) > 25 { | |||
| 180 | + | attachmentName = attachmentName[:22] + "..." | |||
| 179 | } | 181 | } | ||
| 180 | attachmentStatus := components.ContainerStatusBadge(attachment.Status) | 182 | attachmentStatus := components.ContainerStatusBadge(attachment.Status) | ||
| 181 | attachmentImage := truncateImage(attachment.Image, imageColWidth) | 183 | attachmentImage := truncateImage(attachment.Image, imageColWidth) | ||