Responsive table output (CR-0038) + profile/installer fixes - #25
Merged
Merged
Conversation
Table columns now carry a Priority (1 essential .. 5 reference) and a Shrink mode (truncate, left-truncate, wrap, never). When a table is wider than the terminal, planColumns() drops priority-5 opaque ID columns first, wraps/truncates priority-4/3 columns, drops priority-4 if that still isn't enough, truncates priority-2 as a last resort, and falls back to a vertical PROPERTY: VALUE layout if priority-1 columns alone overflow. Wrapped columns are display-reordered to the right so their extra lines never misalign columns after them. A stderr hint names any dropped columns. Adaptation only applies on a TTY table render; --output csv/json/yaml, non-TTY output, and the markdown/gh themes always render in full. New --width/--wide flags, IICS_WIDTH env var, and config style.responsiveTables control it (see docs/documentation/output.md). Un-annotated columns get inferred defaults; agent, activitylog, user, connection, objects, and package get explicit Priority/Shrink annotations. ADR-0001 records the column-dropping decision. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmS8X3rkRwN5D6nNfiGpXK
CR-0038's responsive-table heuristic infers priority 4 (wrap, reordered last) for any column with no Width set. profile list's NAME, DEFAULT, REGION, ENDPOINT, and USERNAME columns had no Width, so on a TTY they were all reordered to the end (widest first) behind KEYCHAIN, which looked like a column-order regression and made KEYCHAIN easy to miss as "not printing". Annotate all profile list columns explicitly and reorder to NAME, USERNAME, ENDPOINT, POD (region), DEFAULT, KEYCHAIN - matches what was requested and keeps the order stable regardless of terminal width. Docs updated to match. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmS8X3rkRwN5D6nNfiGpXK
profile list left KEYCHAIN blank for profiles storing the password plainly in the config file, indistinguishable at a glance from a column that failed to render. Show "no" explicitly. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmS8X3rkRwN5D6nNfiGpXK
DownloadFile now accepts an optional DownloadProgressFunc callback, invoked after each chunk with cumulative bytes written and the server-reported content length (-1 when unknown, e.g. chunked encoding). agent installer-download's new --progress flag wires this to a throttled (5/sec) carriage-return-updated stderr line showing bytes transferred, percentage when known, and transfer rate. Default behavior (no --progress) is unchanged; the callback is nil. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmS8X3rkRwN5D6nNfiGpXK
Replace the free-text "win64/linux64" prompt in installer-info and installer-download with promptSelect's numbered menu, consistent with the rest of the interactive UI. Cancel via 0, Enter, or 'q' (promptSelect now accepts 'q'/'Q' as a cancel key alongside the existing 0/Enter). Both commands print "Canceled." and exit 0 when the prompt is canceled, matching the convention used elsewhere (e.g. pickAgent). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmS8X3rkRwN5D6nNfiGpXK
jbrazda
added a commit
that referenced
this pull request
Sep 11, 2026
Confirmed complete by the developer after merge (PR #25) and green CI. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NmS8X3rkRwN5D6nNfiGpXK
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PROPERTY: VALUElayout if even the essential columns don't fit. New--width/--wideflags,IICS_WIDTHenv var, and configstyle.responsiveTables. Never applies to non-TTY output,--output csv|json|yaml, or themarkdown/ghthemes. Seedocs/adr/0001-responsive-table-column-dropping.mdanddocs/documentation/output.md.profile listcolumn order was being disrupted by the new responsive-table heuristic (columns without an explicitWidthwere reordered as wrap-priority). Pinned explicit column priorities and reordered to NAME, USERNAME, ENDPOINT, POD, DEFAULT, KEYCHAIN. KEYCHAIN now showsyes/noinstead of blank for plaintext-password profiles.--progressflag onagent installer-downloadprints a live, throttled download progress line to stderr (bytes transferred, percentage when known, transfer rate).--osprompt ininstaller-info/installer-downloadis now a numbered selection menu instead of free text; cancel via0, Enter, orq.Testing
go build ./...,go vet ./...,gofmt -s -w .,golangci-lint run ./...all cleango test ./...passing, new tests added ininternal/outputandinternal/clientprofile listcolumn order/keychain display,installer-download --progressagainst a local file server, and the--osselection menu (includingqcancel)Docs
docs/documentation/output.md(new),docs/documentation/profile.md,docs/documentation/agent.md,README.md,docs/adr/0001-responsive-table-column-dropping.mddocs/ChangeRequests/pending/CR-0038-responsive-table-output.mdcompletions/regenerated