feat(ui): condense panels and let the window shrink to 720p

Make the job details and settings views more compact and remove the tall
minimum that prevented resizing the window shorter:

- Lay job metadata out in two columns and stack rows with a negative-gap
  compactVBoxLayout, roughly halving the block height.
- Wrap the settings form in a vertical scroll so it no longer dictates
  the window minimum (AppTabs sizes to the tallest tab), and tighten its
  rows with the same compact layout.
- Shrink the command-output scroll minimum height so the details pane can
  get shorter; long output still scrolls.
- Size the "Selected job activity" panel to exactly maxJobActivityRows
  using widget.List's own content-height formula, so all three rows show
  without a scrollbar regardless of theme or DPI.

Together these drop the minimum window height from ~891px to ~570px.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
mixeme
2026-06-25 01:34:47 +03:00
parent 5cdb9414b2
commit 21d78ea010
4 changed files with 95 additions and 22 deletions
+4 -4
View File
@@ -23,10 +23,10 @@ const minJobsSidebarWidth float32 = 400
// view; this panel is a quick at-a-glance summary anchored below the output.
const maxJobActivityRows = 3
// jobActivityHeight is the fixed height reserved for the activity panel at the
// bottom of the details pane, sized for maxJobActivityRows rows so the command
// output above it can claim the remaining vertical space.
const jobActivityHeight float32 = 120
// detailRowSpacing is the (negative) gap applied between metadata rows in the
// details panel. Pulling rows together overlaps the labels' built-in vertical
// padding, tightening the block so it fits comfortably on 720p screens.
const detailRowSpacing float32 = -8
// newJobsView builds the Jobs tab: list sidebar, details panel, and toolbar.
// It returns the assembled panel and a refresh function the caller invokes