Files
sencho/images-tab.md
T
Anso 2da87c8c5d feat: add mobile row layout to Security History tab (#1608)
Replace the desktop 8-column table with card-like mobile rows on phones,
following the ImagesTab pattern. Each row shows a 44px checkbox for compare
selection, a severity dot, truncated image ref with trigger and timestamp
meta, count tags (total vulns + fixable, at most 2), and a chevron.

Secret/config-only scans use the FINDINGS dot and suppress the clean tag,
matching the getSeverityKey classification from severityStyles.

Extract a shared HistoryStateMessage component to deduplicate the
loading/error/empty state blocks between the mobile and desktop branches.
2026-07-11 20:57:06 -04:00

11 KiB

  • generic [ref=f1e3]:
    • generic [ref=f1e4]:
      • generic [ref=f1e7]:
        • generic [ref=f1e8]: Sencho
        • generic [ref=f1e9]: v0.94.1
      • button "Switch node" [ref=f1e11]:
        • generic [ref=f1e14] [cursor=pointer]:
          • generic [ref=f1e15]: Node · LOCAL
          • generic [ref=f1e16]: Local
      • generic [ref=f1e20]:
        • button "Create Stack" [ref=f1e22]
        • button [ref=f1e23]
        • button [ref=f1e24]
      • generic [ref=f1e25]:
        • combobox [expanded] [ref=f1e32]
        • generic [ref=f1e33]:
          • generic [ref=f1e34]:
            • button "All 1" [pressed] [ref=f1e35]:
              • text: All
              • generic [ref=f1e36]: "1"
            • button "Up 1" [ref=f1e37]:
              • text: Up
              • generic [ref=f1e38]: "1"
            • button "Down 0" [ref=f1e39]:
              • text: Down
              • generic [ref=f1e40]: "0"
            • button "Updates 0" [ref=f1e41]:
              • text: Updates
              • generic [ref=f1e42]: "0"
          • button "Hide filters" [ref=f1e43]
        • listbox "Suggestions" [ref=f1e49]:
          • generic [ref=f1e51]:
            • button "UNLABELED 1" [expanded] [ref=f1e52]:
              • generic [ref=f1e53]: UNLABELED
              • generic [ref=f1e54]: "1"
            • option [selected] [ref=f1e59]:
              • button "UP bookstack" [ref=f1e60] [cursor=pointer]:
                • generic [ref=f1e61]: UP
                • generic [ref=f1e62]: bookstack
                • button [ref=f1e65]
      • button "Live · no stack changes in 1h LIVE · OPEN ACTIVITY →" [ref=f1e66] [cursor=pointer]:
        • generic [ref=f1e67]: Live · no stack changes in 1h
        • generic [ref=f1e70]: LIVE · OPEN ACTIVITY →
    • generic [ref=f1e71]:
      • generic [ref=f1e72]:
        • navigation "Primary" [ref=f1e73]:
          • button "Home" [ref=f1e74]
          • button "Fleet" [ref=f1e79]
          • button "Resources" [ref=f1e88]
          • button "Security" [ref=f1e92]
          • button "App Store" [ref=f1e97]
          • button "Logs" [ref=f1e103]
          • button "Update" [ref=f1e107]
          • button "Schedules" [ref=f1e114]
        • generic [ref=f1e119]:
          • button "Open search (Ctrl+K)" [ref=f1e120]
          • button "Theme" [ref=f1e124]
          • button "Notifications" [ref=f1e125]
          • button "Profile" [ref=f1e126]: BO
      • generic [ref=f1e128]:
        • generic [ref=f1e132]:
          • generic [ref=f1e133]:
            • generic [ref=f1e134]:
              • generic [ref=f1e135]: Action needed
              • generic [ref=f1e137]:
                • generic [ref=f1e138]: "2 actions: fixable findings, publicly exposed affected images ·"
                • generic [ref=f1e139]: 10 images scanned · scanner ready
            • button "Update affected images →" [ref=f1e144]
          • generic [ref=f1e145]:
            • generic [ref=f1e146]:
              • generic [ref=f1e147]: CRITICAL
              • generic [ref=f1e148]: "0"
            • generic [ref=f1e149]:
              • generic [ref=f1e150]: HIGH
              • generic [ref=f1e151]: "31"
            • generic [ref=f1e152]:
              • generic [ref=f1e153]: LAST SCAN
              • generic [ref=f1e154]: 23h ago
        • generic [ref=f1e155]:
          • tablist [ref=f1e157]:
            • tab "Overview" [ref=f1e159]
            • tab "Images" [active] [selected] [ref=f1e166]
            • tab "Compose risks" [ref=f1e178]
            • tab "Secrets" [ref=f1e182]
            • tab "Policies" [ref=f1e188]
            • tab "Suppressions" [ref=f1e193]
            • tab "History" [ref=f1e200]
            • tab "Scanner setup" [ref=f1e206]
          • tabpanel "Images" [ref=f1e314]:
            • generic [ref=f1e315]:
              • generic [ref=f1e316]:
                • textbox "Search images..." [ref=f1e321]
                • combobox [ref=f1e323]:
                  • generic [ref=f1e324]: All severities
              • table [ref=f1e333]:
                • rowgroup [ref=f1e334]:
                  • row [ref=f1e335]:
                    • columnheader [ref=f1e336] [cursor=pointer]:
                      • button "Image" [ref=f1e337]
                    • columnheader [ref=f1e338] [cursor=pointer]:
                      • button "Findings" [ref=f1e339]
                    • columnheader [ref=f1e340] [cursor=pointer]:
                      • button "Last scan" [ref=f1e341]
                    • columnheader [ref=f1e344] [cursor=pointer]:
                      • button "Severity" [ref=f1e345]
                    • columnheader "Actions" [ref=f1e346]
                • rowgroup [ref=f1e347]:
                  • row [ref=f1e348]:
                    • cell [ref=f1e349]:
                      • button "lscr.io/linuxserver/bookstack:latest" [ref=f1e350]
                    • cell [ref=f1e351]:
                      • button "6H14 fixable" [ref=f1e352]:
                        • generic [ref=f1e353]: 6H
                        • generic [ref=f1e354]: 14 fixable
                    • cell "23h ago" [ref=f1e355]
                    • cell [ref=f1e356]:
                      • button "HIGH" [ref=f1e357] [cursor=pointer]
                    • cell [ref=f1e359]:
                      • button "Scan lscr.io/linuxserver/bookstack:latest" [ref=f1e360]
                  • row [ref=f1e361]:
                    • cell [ref=f1e362]:
                      • button "lscr.io/linuxserver/bookstack@sha256:13dc508fb46aa7d2b726b6c872e4903892bda68391ac948a5603d3ca60f0937e" [ref=f1e363]
                    • cell [ref=f1e364]:
                      • button "6H14 fixable" [ref=f1e365]:
                        • generic [ref=f1e366]: 6H
                        • generic [ref=f1e367]: 14 fixable
                    • cell "23h ago" [ref=f1e368]
                    • cell [ref=f1e369]:
                      • button "HIGH" [ref=f1e370] [cursor=pointer]
                    • cell [ref=f1e372]:
                      • button "Scan lscr.io/linuxserver/bookstack@sha256:13dc508fb46aa7d2b726b6c872e4903892bda68391ac948a5603d3ca60f0937e" [ref=f1e373]
                  • row [ref=f1e374]:
                    • cell [ref=f1e375]:
                      • button "lscr.io/linuxserver/bazarr:latest" [ref=f1e376]
                    • cell [ref=f1e377]:
                      • button "2H1 fixable" [ref=f1e378]:
                        • generic [ref=f1e379]: 2H
                        • generic [ref=f1e380]: 1 fixable
                    • cell "23h ago" [ref=f1e381]
                    • cell [ref=f1e382]:
                      • button "HIGH" [ref=f1e383] [cursor=pointer]
                    • cell [ref=f1e385]:
                      • button "Scan lscr.io/linuxserver/bazarr:latest" [ref=f1e386]
                  • row [ref=f1e387]:
                    • cell [ref=f1e388]:
                      • button "lscr.io/linuxserver/jackett:latest" [ref=f1e389]
                    • cell [ref=f1e390]:
                      • button "1H1 fixable" [ref=f1e391]:
                        • generic [ref=f1e392]: 1H
                        • generic [ref=f1e393]: 1 fixable
                    • cell "23h ago" [ref=f1e394]
                    • cell [ref=f1e395]:
                      • button "HIGH" [ref=f1e396] [cursor=pointer]
                    • cell [ref=f1e398]:
                      • button "Scan lscr.io/linuxserver/jackett:latest" [ref=f1e399]
                  • row [ref=f1e400]:
                    • cell [ref=f1e401]:
                      • button "saelix/sencho:pr-1603" [ref=f1e402]
                    • cell [ref=f1e403]:
                      • button "3H4 fixable" [ref=f1e404]:
                        • generic [ref=f1e405]: 3H
                        • generic [ref=f1e406]: 4 fixable
                    • cell "23h ago" [ref=f1e407]
                    • cell [ref=f1e408]:
                      • button "HIGH" [ref=f1e409] [cursor=pointer]
                    • cell [ref=f1e411]:
                      • button "Scan saelix/sencho:pr-1603" [ref=f1e412]
                  • row [ref=f1e413]:
                    • cell [ref=f1e414]:
                      • button "lscr.io/linuxserver/prowlarr:latest" [ref=f1e415]
                    • cell [ref=f1e416]:
                      • button "1H1 fixable" [ref=f1e417]:
                        • generic [ref=f1e418]: 1H
                        • generic [ref=f1e419]: 1 fixable
                    • cell "23h ago" [ref=f1e420]
                    • cell [ref=f1e421]:
                      • button "HIGH" [ref=f1e422] [cursor=pointer]
                    • cell [ref=f1e424]:
                      • button "Scan lscr.io/linuxserver/prowlarr:latest" [ref=f1e425]
                  • row [ref=f1e426]:
                    • cell [ref=f1e427]:
                      • button "saelix/sencho:pr-1600" [ref=f1e428]
                    • cell [ref=f1e429]:
                      • button "3H4 fixable" [ref=f1e430]:
                        • generic [ref=f1e431]: 3H
                        • generic [ref=f1e432]: 4 fixable
                    • cell "23h ago" [ref=f1e433]
                    • cell [ref=f1e434]:
                      • button "HIGH" [ref=f1e435] [cursor=pointer]
                    • cell [ref=f1e437]:
                      • button "Scan saelix/sencho:pr-1600" [ref=f1e438]
                  • row [ref=f1e439]:
                    • cell [ref=f1e440]:
                      • button "saelix/sencho:pr-1609" [ref=f1e441]
                    • cell [ref=f1e442]:
                      • button "3H4 fixable" [ref=f1e443]:
                        • generic [ref=f1e444]: 3H
                        • generic [ref=f1e445]: 4 fixable
                    • cell "23h ago" [ref=f1e446]
                    • cell [ref=f1e447]:
                      • button "HIGH" [ref=f1e448] [cursor=pointer]
                    • cell [ref=f1e450]:
                      • button "Scan saelix/sencho:pr-1609" [ref=f1e451]
                  • row [ref=f1e452]:
                    • cell [ref=f1e453]:
                      • button "saelix/sencho:pr-1608" [ref=f1e454]
                    • cell [ref=f1e455]:
                      • button "3H4 fixable" [ref=f1e456]:
                        • generic [ref=f1e457]: 3H
                        • generic [ref=f1e458]: 4 fixable
                    • cell "23h ago" [ref=f1e459]
                    • cell [ref=f1e460]:
                      • button "HIGH" [ref=f1e461] [cursor=pointer]
                    • cell [ref=f1e463]:
                      • button "Scan saelix/sencho:pr-1608" [ref=f1e464]
                  • row [ref=f1e465]:
                    • cell [ref=f1e466]:
                      • button "saelix/sencho:pr-1610" [ref=f1e467]
                    • cell [ref=f1e468]:
                      • button "3H4 fixable" [ref=f1e469]:
                        • generic [ref=f1e470]: 3H
                        • generic [ref=f1e471]: 4 fixable
                    • cell "23h ago" [ref=f1e472]
                    • cell [ref=f1e473]:
                      • button "HIGH" [ref=f1e474] [cursor=pointer]
                    • cell [ref=f1e476]:
                      • button "Scan saelix/sencho:pr-1610" [ref=f1e477]