Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@ Read `README.md` and `docs/engineering-spec.md` before making non-trivial change
- Parse external data once at a boundary. Do not scatter defensive fallbacks through readers.
- Tests must not depend on real sleeps, wall-clock timing, real shell commands, or a real terminal.

## Quality Policy

- `./scripts/check` is the local definition of done for code changes. Run it before calling work done.
- Behavior changes should include automated coverage: a unit test, an integration test (e.g., `tests/cli.rs`), example-config validation (`tests/examples.rs`), or a documented reason why no automated test fits.
- Docs-only changes must leave the repo green under `./scripts/check`.
- Do not add new CI requirements or local-tool dependencies in this issue set — that belongs to future CI work.

## Current V1 Direction

- Rust binary.
Expand Down
56 changes: 56 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.1.0] - 2026-05-27

The first usable release of `hud`, a programmable terminal cockpit for getting
oriented, finding the next thing that needs attention, and jumping into action
from the keyboard.

### Added

- Static TOML config with panel definitions, actions, and timeout overrides.
- Command-backed panels with plain text, structured table (`table-json`), and
metrics gauge (`metrics-json`) output protocols.
- Manual refresh for the focused panel (`r`) and all panels (`R`).
- Vim-like keyboard navigation (`h`/`j`/`k`/`l`, arrow keys, `Tab`/`Shift-Tab`)
through the dashboard card grid.
- Drill-in from the dashboard into panel detail views (`Enter`).
- Row selection (`j`/`k`) in detail views for `table-json` panels.
- Configured row drill-in commands with `{{Column Name}}` template substitution
from the selected row.
- Fire-and-forget focused-panel actions, shown in the footer and triggered by
configured single-key shortcuts.
- Help/actions overlay (`?`) showing available keybindings and panel actions.
- Bounded command execution with a 120-second default timeout and per-panel
`timeout_secs` overrides.
- Visible error states for command failures, timeouts, and malformed structured
output — broken panels cannot crash the app.
- `--demo` flag for a zero-config tour of the cockpit loop.
- `--check-config` flag to validate a config file without opening the TUI.
- `--config` flag to load a specific TOML file.
- tmux popup integration via `display-popup -E`.
- Example configs: `dogfood.toml` and `kitchen-sink.toml`.
- Source-install path: `cargo install --git git@github.com:tnezdev/hud.git`.
- CI pipeline: `cargo fmt`, `cargo clippy`, and `cargo test` on every PR and
push to `main`.

### Known Limitations

- Manual refresh only — no background polling, intervals, or live tails.
- Local command model — all panel sources and actions run shell commands on
the same machine. No remote data sources, network adapters, or plugin host.
- No persistent state — no dismissals, action history, caching, or session
recall between runs.
- No plugin host — adding panel types or output protocols requires source
changes, not a plugin API.
- Structured protocols are intentionally small — `table-json` and
`metrics-json` cover the initial use cases; additional semantic components
are reserved for later releases.
- Single dashboard — no multi-page or tabbed layouts.

[0.1.0]: https://github.com/tnezdev/hud/releases/tag/v0.1.0
153 changes: 153 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,18 @@
name = "hud"
version = "0.1.0"
edition = "2024"
description = "A programmable terminal cockpit for getting oriented and jumping into action"
license = "MIT"
repository = "https://github.com/tnezdev/hud"
readme = "README.md"

[dependencies]
crossterm = "0.29.0"
ratatui = { version = "0.30.0", default-features = false, features = ["crossterm"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
toml = "1.1.2"

[dev-dependencies]
assert_cmd = "2.2.2"
predicates = "3.1.4"
21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Travis Nesland

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Loading
Loading