Commit Graph
22 Commits
Author SHA1 Message Date
james.maesandClaude Sonnet 5.5 34758a9b20 chore(deps): TypeScript 7.0.2 and @types/node 26.6.6
Supersedes the Dependabot PRs for both. TypeScript 7 stops loading all
@types packages implicitly, so the base tsconfig names node; @types/node 26
rejects an undefined assertion message, fixed in one conformance test.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-01 16:26:47 -06:00
james.maesandClaude Fable 5.1 e4de04e510 feat(tui): splash screen and profile picker on start (#21)
QRun-IO/ci-policy: ci / fork-guard (push) Skipped
QRun-IO/ci-policy: ci / gradle-0 (push) Skipped
QRun-IO/ci-policy: ci / java-docker-1 (push) Skipped
QRun-IO/ci-policy: ci / java-maven-2 (push) Skipped
QRun-IO/ci-policy: ci / node-3 (push) Skipped
QRun-IO/ci-policy: ci / source-config-5 (push) Skipped
QRun-IO/ci-policy: ci / not-enrolled (push) Skipped
QRun-IO/ci-policy: Shared Node CI / gate (push) Canceled after 0s
QRun-IO/ci-policy: Shared Node CI / secrets (push) Canceled after 0s
QRun-IO/ci-policy: ci / ci-result (push) Canceled after 0s
QRun-IO/ci-policy: Shared Node CI / verify (push) Canceled after 2m13s
QRun-IO/ci-policy: ci / node-4 (push) Canceled after 2m12s
qqq ui opens on a splash (Query animated beside the qqq wordmark, version line, boot status line). With several profiles and none named, the Servers picker asks which to connect to (last used preselected, asynchronous probes, n adds, Esc quits with a hint); one profile or --profile/QQQ_PROFILE/--server connects straight away; no profiles opens the add form. Sign-in failures stay on the splash with retry, choose another, add, or quit. --no-splash, QQQ_UI_NO_SPLASH=1 or ui.splash off restores the old sign-in screen first. Behaviour change: with several profiles and a default set, the TUI now asks instead of connecting to the default.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:58:17 -06:00
james.maesandClaude Fable 5.1 4f96ab0c03 feat(tui): Shift+F1–F10 bank with a second key-bar row (#20)
⇧F1 Keys, ⇧F2 Servers, ⇧F3 SQL, ⇧F4 Bulk, ⇧F5 Metadata, ⇧F6 Views, ⇧F7 Copy, ⇧F8 Export, ⇧F9 History, ⇧F10 Assistant; keys that do not apply are dimmed and explain why. Two bar rows from 30 lines (:fkeys one|two|auto), or the Shift row swapped in for 2 s after a Shift+F press; clicks on the Shift row work. Key decoding covers xterm modifier forms, kitty codes and legacy VT220/rxvt numbering; a guarded stdin rewrite delivers Shift+F3, which OpenTUI 0.8.1 otherwise drops as a cursor-position reply.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:42:23 -06:00
james.maesandClaude Fable 5.1 9e6cad281c feat: Save as PDF through the download flow; Content or Screen prints; app header and footer (#19)
Save as PDF… is the first printer-picker entry and saves through the download flow (file dialog or silent download folder, stamped names, overwrite confirmation); :print pdf; qqq print … --to-file [path]. On non-record, non-grid screens Ctrl+P asks Print what? (Content: panels as titled sections without sidebar, title bar, key lines or borders; Screen: the terminal as drawn). Every document carries the app header (instance, breadcrumb, server, user, time) and footer (client and server, filter/sort line, Page n of m), rendered by qbit-printing 2.2 (printingRenderToPdf).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:34:21 -06:00
james.maesandClaude Fable 5.1 1d7e0af3cc fix(tui): screen saver counts signed-in sessions; Query art from the real logo (#18)
The Online tile reads the session store's storedSession table first (active sessions and distinct users), falls back to you plus collaboration presence, never says 'nobody around' while signed in, and the saver and lock keep the presence lease. The Query mascot is regenerated at three sizes from the qrun.io/query hero SVG in the logo's indigo (packages/tui/scripts/gen-query-art.mjs), with landmark tests per size.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:30:14 -06:00
james.maesandClaude Fable 5.1 650f1d33db fix(tui): render assistant answers; F12 toggles the panel (#17)
A shared markdown renderer in core handles entities, headings, lists, bold/code and pipe tables for assistant answers; links render as 'label ↗' numbered once per target (Tab, Enter, u); the CLI prints the same blocks as sub-tables. F12 toggles the Assistant panel on every screen, keeping the conversation, context and draft; Esc hides; Ctrl+G, :ask and a click on 12Ask do the same; the F-key bar gains 11/12Ask at 120+ columns.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:19:36 -06:00
james.maesandClaude Fable 5.1 f180a12750 fix(cli): broken-pipe exits are quiet on every path; deterministic EPIPE tests (#16)
isBrokenPipe also covers ECONNRESET, ERR_STREAM_DESTROYED and ERR_STREAM_WRITE_AFTER_END; an uncaughtException handler exits 0 on a broken pipe; io.out/io.err go through safeWrite; the top-level catch exits 0 immediately. The tests close the read end before the first write and after the first chunk of a 5,000-record answer.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:13:24 -06:00
james.maesandClaude Fable 5.1 924fddae25 packaging: qqq 1.0.0 checksums; update-packaging refuses missing or zero sums (#15)
docs/packaging carries the real sha256 sums from the cli-v1.0.0 release. scripts/update-packaging.mjs now parses shasum lines strictly, requires 64 lowercase hex and non-zero sums for every target, validates both files before writing anything, and exits 1 with nothing written otherwise; covered by scripts/update-packaging.test.mjs (npm test runs test:scripts).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 13:03:32 -06:00
james.maesandClaude Fable 5.1 1bc4ddd0be release: qqq 1.0.0 (#11)
qqq 1.0.0: the command-line client and the full-screen terminal UI (qqq ui) for QQQ applications over the UI API (/qqq/v1), with @qrun-io/qqq-cli 1.0.0, @qrun-io/qqq-core 1.0.0, @qrun-io/qqq-ui-api-client 1.8.0 and @qrun-io/qqq-ui-api-conformance 1.6.0 going final together. Squash of the release/1.0.0 branch at 79ba68e (the branch is kept with the full signed history; the tags v1.8.0 and cli-v1.0.0 point at that commit, which is what the released binaries were built from). See CHANGELOG.md [1.0.0] and docs/release-notes/1.0.0.md.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-11-01 12:49:06 -06:00
james.maesandCodex 603c09035b ci: adopt managed orb 0.8 patch track (#8)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 15:55:30 -05:00
james.maesandCodex 9294d3ee6b ci: adopt shared orb 0.7.17 (#7)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 14:17:41 -05:00
james.maesandCodex ff248b62c2 ci: adopt central orb 0.7.12 and stable gates (#6)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 08:49:28 -05:00
james.maesandCodex 2f193c088b ci: adopt shared orb 0.7.11 (#5)
Co-authored-by: Codex <noreply@openai.com>
2026-10-21 00:53:13 -05:00
james.maesandCodex 18723ae8c2 ci: centralize CLI verification and package publishing (#4)
Co-authored-by: Codex <noreply@openai.com>
2026-10-20 19:50:29 -05:00
james.maes 9816569a3d Merge pull request #1 from QRun-IO/feature/initial-cli
feat: reference CLI, generated UI API client, mock and conformance suite
v1.6.0-rc.1
2026-10-15 13:46:04 -05:00
james.maesandClaude Opus 5.5 77bc4badce chore: target QQQ 4.1.0-RC.15 (UI API 1.6.0)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:27:10 -05:00
james.maesandClaude Opus 5.5 6df221e110 fix(conformance): jobs not enabled on a server is a skip, not a failure
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:25:45 -05:00
james.maesandClaude Opus 5.5 628c86d605 ci: CircleCI build and test
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:20:50 -05:00
james.maesandClaude Opus 5.5 754eed4fe7 feat(client): generate from the merged UI API 1.6.0 document (core, esb, health and eight qbit extensions)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:20:26 -05:00
james.maesandClaude Opus 5.5 7669b55b2a chore: LF line endings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:47:21 -05:00
james.maesandClaude Opus 5.5 ea79ddeb78 feat: reference CLI, generated UI API client, conformance suite and dev IdP
- @qrun-io/qqq-ui-api-client: typed client generated (openapi-typescript +
  openapi-fetch) from the merged UI API document; device-flow sign-in, refresh,
  UiApiError (BasicErrorResponseV1), SSE reader
- @qrun-io/qqq-cli: qqq login/whoami/apps/tables/query/get/run/jobs/tail,
  only through /qqq/v1 with Authorization: Bearer
- @qrun-io/qqq-ui-api-conformance: black-box suite + qqq-dev-idp
- scripts/merge-spec.mjs, Prism mock, CI and GitHub Packages publish workflows

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 11:47:12 -05:00
james.maes 1e5b832116 Initial commit 2026-10-15 10:56:15 -05:00