feat(gui): Export logs button on the logs sensor card (#555) #607

Merged
p13marc merged 1 commit from logs/558-gui-log-export into master 2026-07-24 07:25:37 +00:00
p13marc commented 2026-07-24 07:19:48 +00:00 (Migrated from github.com)

Why

The log-bundle export (#555) shipped fully working on the bus — the logs
sensor advertises a logbundle artifact kind and produces a zstd bundle over
@blob — but there was no way to trigger it from the GUI. artifact_section
matched KindAdvert::LogBundle in a no-op arm (=> {}), so no button rendered.
Operators had nowhere to extract logs short of driving @rpc/logs/artifact/request
by hand with zenctl.

What

Render an "Export logs (zstd)" button for the LogBundle advert in the
per-sensor artifact section — the same surface that already shows Report /
Snapshot / Capture (via sensors.rs), so it appears right on the logs sensor's
card. It:

  • requests a whole-store bundle (no selectors; the sensor clamps to its
    configured logbundle line/byte caps),
  • rides the existing blob download path (temp dir + manifest filename) —
    identical lifecycle to the debug-report download,
  • shows the advertised max_lines cap in its label when the sensor sets one.

The richer filter-prefilled Export driven from the Logs feed (#554) layers on
top of this same request path and stays a follow-up.

Changes

  • zensight-common: re-export LogBundleFormat.
  • zensight/src/view/artifact_fetch.rs: the LogBundle button + logbundle
    wording in ArtifactFetch::label().

Verification

  • cargo clippy -p zensight -p zensight-common --all-targets -D warnings clean.
  • cargo fmt --check clean.
  • cargo test -p zensight-common (100) + -p zensight --lib artifact (6) pass.

🤖 Generated with Claude Code

## Why The log-bundle export (#555) shipped fully working **on the bus** — the logs sensor advertises a `logbundle` artifact kind and produces a zstd bundle over `@blob` — but there was **no way to trigger it from the GUI**. `artifact_section` matched `KindAdvert::LogBundle` in a no-op arm (`=> {}`), so no button rendered. Operators had nowhere to extract logs short of driving `@rpc/logs/artifact/request` by hand with `zenctl`. ## What Render an **"Export logs (zstd)"** button for the `LogBundle` advert in the per-sensor artifact section — the same surface that already shows Report / Snapshot / Capture (via `sensors.rs`), so it appears right on the logs sensor's card. It: - requests a **whole-store** bundle (no selectors; the sensor clamps to its configured `logbundle` line/byte caps), - rides the **existing blob download path** (temp dir + manifest filename) — identical lifecycle to the debug-report download, - shows the advertised `max_lines` cap in its label when the sensor sets one. The richer **filter-prefilled** Export driven from the Logs feed (#554) layers on top of this same request path and stays a follow-up. ## Changes - `zensight-common`: re-export `LogBundleFormat`. - `zensight/src/view/artifact_fetch.rs`: the `LogBundle` button + `logbundle` wording in `ArtifactFetch::label()`. ## Verification - `cargo clippy -p zensight -p zensight-common --all-targets -D warnings` clean. - `cargo fmt --check` clean. - `cargo test -p zensight-common` (100) + `-p zensight --lib artifact` (6) pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
marcpardo/zensight!607
No description provided.