Repository navigation
Releases: ficaa1/micko
Releases · ficaa1/micko
Release list
v0.8.1
- Notifications.
Won the list watches the selected or marked workflows
and notifies on each phase change and on deletion. Watches carry across
namespace switches.notifications.suspended: trueadds a notification
whenever any workflow becomes suspended. Thenotificationsconfig
section picksdesktop,bell,terminal(OSC 9) andsound. With
terminal-notifier installed, banners come from micko and a click brings
the terminal forward. - The list filter remembers the last 50 filters for the session. In
/,
up and down step through history, down clears the filter, and tab completes
fields, labels and values. A picker shows longer lists of completions and
keeps the highlighted value visible in short panes. - The raw view pans across long lines with h/l or the arrow keys, and w
toggles wrapping. Log lines pan too, with their source labels kept fixed. - The summary pans and wraps long lines, and v hides or reveals masked
label values. Resizing or masking values keeps the scroll position within
the visible content. - Install with Nix using
nix profile install github:ficaa1/micko/stable.
The stable channel follows verified releases. Supported platforms are
Linux x86_64 and ARM64, and macOS ARM64. - Release downloads include Windows x86_64 and ARM64 binaries.
v0.8.0
- Workflow actions are on by default. Resume, suspend, retry, resubmit,
stop, terminate and delete no longer need--allow-actions; each still
asks for confirmation, with the typed-name gate for terminate and the
final screen for delete.--read-onlyturns them off for a session and
showsREAD ONLYin the header.--allow-actionsis still accepted and
does nothing. The demo still writes nothing. - The header badge appears only for a read-only session. A session that
can act no longer gets a coloured badge for it. - Opening a workflow shows the Nodes tab first.
- An open workflow follows the watch. Watch events for it were dropped, so
the detail view changed only when the poll came round. - A watch on a quiet namespace stays open. It used to end after 10 seconds
without an event and fall back to a relist. - Less traffic while the watch is live: the list and the open workflow are
polled once a minute to catch what a watch can miss, instead of every
interval. Without a live watch the poll keeps its interval. - The events section draws only the rows on screen, skips the rebuild for
other workflows' events, and resumes its streams when you come back to it
from another section of the same workflow, instead of replaying every pod
event in the namespace. A busy namespace no longer makes keys lag. --debugwrites the timing of every request, and spans for the waits you
see: the first list, all namespaces, opening a workflow, the first log
line and opening a kind. docs/performance.md
explains the fields and the scripts underscripts/perf.micko --versionand the header name the commit a release or
make buildwas built from. The injected value was ignored, so a tree
with uncommitted changes saidunknown.- The archive's DURATION column is wide enough for
unfinished, which it
used to cut tounfinish…. - micko installs with mise:
mise use -g github:ficaa1/micko.
v0.7.1
- Mićko hops. On the floor he now watches you from a little way off, and
when he wants a kiss he turns, crouches and hops over to his mirror in two
hops, feet tucked, then hops back. His hops follow a damped spring
(harmonica) and redraw the screen only while he is in the air, a few
frames a hop. He needs a row of air to hop into, so on the floor he costs
the pane four rows; to keep the help overlay whole on an 80x40 terminal,
its last line, about--allow-actions, joined the Actions line.
v0.7.0
- Mićko moves. Perched, he spends most of his time resting his beak on the
pane, blinks every few seconds, dozes off now and then, and about once a
minute lifts his head to look left toward the pane's title and right past
its count before settling back down. His feet stay put, so he never
shifts along the border, and the pane does not move. He only redraws the
screen when he changes pose, and not at all while he is off. - Mićko can sit on the floor.
mascot: floorin the config file, or
--mascot=floor, sits him in the pane's bottom-right corner beside his
mirror, with his feet on the bottom border. He watches you, blinks, bobs
his head and flicks his tail, and about once a minute turns to kiss
himself in the mirror. His rows are the pane's last three, so the list
never runs under him and the pane stays where it is with him off.
mascot: truestill perches him, andperchsays so outright; any other
value is a config error.:mascotnow moves him from his perch to the
floor to off.
v0.6.0
- argo-tui is now micko, after Mićko, my eastern rosella, so it is no longer
mistaken for a tool for Argo CD. The binary, the command incmd/micko,
the module pathgithub.com/ficaa1/micko, the release archives
(micko_<version>_<os>_<arch>.tar.gz), the Homebrew formula
(ficaa1/tap/micko), the header,--versionand the User-Agent
(micko/<version>) all carry the new name. The config file moves to
~/.config/micko/config.yaml(or$XDG_CONFIG_HOME/micko/), and the
action journal to~/.local/state/micko/actions.jsonl; files under
argo-tui/are no longer read, so move them there. The end-to-end gate
readsMICKO_E2EandMICKO_E2E_CONFIG. - Mićko, my eastern rosella, is the mascot. He is off by default; turn him
on withmascot: trueat the top of the config file,--mascot, or the
:mascotcommand, which toggles him for the session. On a terminal of
80×40 or larger he then perches on the pane's top border on every screen,
so the pane starts three rows lower and stays put between screens. He
takes his colours from the skin and draws as plain text under
NO_COLOR. The help overlay drops three blank lines so it still fits
whole on a perched 80×40 terminal, and with Mićko on it is signed with his
wordmark when the pane has room.
v0.5.0
- Parameter and output values are now shown by default. The redaction they
used to open with hid what a reader opens a workflow to see. A cluster
whose parameters carry secrets can turn it back on withredactValues: true
at the top of the config file or on a profile, or with--redact-values;
vstill hides or reveals them for the session. - A Timeline section, after Nodes, draws the workflow as a Gantt chart: pods
and approval gates as bars coloured by phase on a time axis whose ticks
step in seconds, minutes, hours or days as the run requires, with anow
line while the workflow runs. Groups are brackets over the time they took,
shading marks the time a step waited before it started, and◆marks the
critical path, the chain of work that set the end time. Rows follow the
pipeline order and folds of the Nodes tab,ishows the node info panel
andenteropens the pod's log. 1to9jump to a detail section by its position, andTjumps to the
Timeline.Ton the workflow list opens the selected workflow straight on
its Timeline.- The help overlay is tighter, so it fits a 40-row, 80-column terminal whole.
- An Explain section, after Timeline, says why a workflow ended the way it
did, from what the workflow records and nothing else: no network service,
no model, the same answer every time. Each finding is a card with a
severity, a headline, its evidence and a next step. It finds the node
that failed first on its own, explains exhausted retries, out-of-memory
kills, well-known exit codes, image pull errors and pods that never
started, deadlines and rejected specs, lists what did not run because of
the failure, and reports the exit handler, a gate waiting for a person, a
run past its estimate, a workflow the controller has not started, and
steps that needed a retry in a run that succeeded. For a failed pod it
reads the end of the log and quotes the lines that matter; a log that is
gone is said so.ycopies the explanation as text for an incident
channel. Xjumps to the Explain section in the detail pane, andXon the
workflow list opens the selected workflow straight on it.- An Events section, after Explain, streams the Kubernetes events about the
workflow and its pods while it is open: age, type (as a glyph and a word),
reason, the workflow or the node, count and message.sputs warnings
first and/filters. A dropped stream reconnects with back-off, and a
permission error or a server without Argo's event stream is said on the
status line.Ejumps to it in the detail pane and opens the selected
workflow on it from the list. The demo serves synthetic events. - The detail tab strip closes up, and then shows the tabs around the active
one, when the terminal is too narrow for all of them. - The Nodes tab reads like the pipeline it shows. Steps are listed under
their Steps node in group order instead of as a staircase of step groups;
DAG tasks are listed in dependency order with what each waits for
(← extract), so a join appears once; retry attempts nest under their
Retry node; and the exit handler is its own labelled tree. The default
sorder follows the pipeline, and start time, name and phase remain. - Each node row now carries its run: the template on a wide terminal, the
duration (elapsed while it runs), a timing bar that places it on the
workflow's clock, and the message. Structural nodes are tagged with their
type, a Retry node shows its retry count and a failing pod its exit code.
Above the tree, a progress line shows the workflow's progress with a bar,
a count of the work by state, and the elapsed time against the estimate. - Subtrees fold:
spacefolds or unfolds,leftfolds or climbs to the
parent,rightunfolds. Folds survive refreshes, and earlier retry
attempts start folded. iopens a node info panel with everything the workflow says about the
node under the cursor: times, pod and host, exit code, resource usage,
flags, and inputs and outputs, with parameter values thatvhides or reveals.
It sits to the right on a wide terminal and under the tree otherwise./finds a node by name;nandNstep through the matches, opening
folds on the way. While the find input is open every letter types,q
included, andescclears the find before it leaves the workflow.- Added skins.
defaultkeeps the terminal's own 16-colour palette; the
truecolor skins are catppuccin-mocha, catppuccin-latte, gruvbox-dark,
gruvbox-light, nord, dracula, tokyo-night, solarized-dark, solarized-light,
one-dark, rose-pine, rose-pine-dawn and monokai;autopicks a dark or
light skin from the terminal's background colour. Choose one withskin:
in the config file, per profile, or with--skin, which also works in the
demo. An unknown name stops the program at startup and lists the valid
ones.NO_COLORstill gives plain text. - The screen chrome is drawn with more care. The header band shows the
program, server and namespace in separate styles and the safety mode as a
badge, louder when actions are enabled. Footer keys stand out from their
descriptions. The selected row is a bar across the pane, the list colours
only the phase cell and mutes the times and message, table heads and tree
connectors are styled, and the detail tabs, pickers, action pane, help
overlay and log annotations use the same palette. Truecolor skins round
the border corners. The text on screen is unchanged: every phase keeps its
glyph and word. - Added a command palette.
:opens it on every route; typing ranks the
commands and their aliases,tabcompletes the highlighted one, andenter
runs exactly what was typed.wfshows the workflow list,ns [name]and
profile [name](orctx) switch namespace and profile or open their
pickers,alltoggles all namespaces, andhelpandqdo what their keys
do. Namespace and profile names complete after a space, andctrl+pand
ctrl+nrecall earlier commands. A word that names no command is reported
in the footer, never run as a near match. - Added an all-namespaces view:
0on the workflow list, or:all. The list
shows every workflow the token may read with a NAMESPACE column, the header
readsns: all, the filter also matchesnamespace/name, and detail, logs
and actions use each row's own namespace. A token that may not list
cluster-wide, or a server started for one managed namespace, gets that
reason on the pane instead of an empty list. - Added a cron workflow list:
:cron(or:cwf,:cronworkflows). It
shows each CronWorkflow's schedules, time zone, suspend state, active runs,
last run, next run and concurrency policy, soonest next run first and
suspended ones last, withnand0for the namespace as on the workflow
list. Next run times are computed from the schedule the way the controller
reads it, in the object's time zone and across daylight-saving changes; a
schedule the controller would refuse shows?with the reason.iopens
an info panel with the next five runs, the policy, the history limits, the
last and active runs and the arguments, whose valuesvhides or reveals.enter
lists the workflows the cron workflow started, andescreturns. Both the
v3.5schedulefield and the v3.6+scheduleslist are read. The demo has
four cron workflows, one of them owning the demo's hourly ETL runs. - Added workflow template and cluster workflow template lists:
:tmpl(or
:wftmpl,:workflowtemplates) and:cwftmpl(or
:clusterworkflowtemplates). They show each template's entrypoint, how many
templates and parameters it defines, its age and its description.iopens
an info panel with the arguments (values followredactValues, with their
defaults and allowed values), each template and its type, the service
account and the labels, andenterlists the workflows submitted from the
template. Cluster templates belong to no namespace, sonand0say so
instead of switching. The demo has the templates its workflows name, and a
cluster template its hello-world run came from. - Added an archived workflow list:
:aw(or:archived). It lists the
workflow archive with the workflow list's columns, the newest 300 runs, and
enteropens a run in the detail pane from the archive, marked as archived.
Archived runs are not refreshed and cannot be acted on, and their log pane
says when nothing came back because the pods are gone. A server without an
archive gets "the workflow archive is not enabled on this server" instead of
an error. - A list that fails before anything was collected now says so on the pane
instead of reading as a namespace with no workflows. - The demo has a second namespace,
demo-ml, with a hyperparameter sweep in
progress and a finished batch inference run. - Workflow-wide logs now label each line with the step that wrote it, or the
pod when the step is not known, coloured per source.Lturns the labels
off and on. win the log pane wraps long lines and keeps the line you were reading in
place. Search highlights carry across the wrapped lines.- A log line that starts with a level word such as
ERROR,WARNor
DEBUG, after any timestamps, or a JSON line with alevelorseverity
field, has that word coloured. The rest of the line is untouched. &in the log pane shows only the lines matching the/search, and says
how many of the retained lines that is.&again orescshows every line.ctrl+tin the log pane reopens the stream with server timestamps on or
off. The retained lines stay, and a marker shows where the new stream
starts.- The list filter now reads a small query language. Spaces separate terms
that must all match,|offers alternatives,!negates,/.../is a
regular expression and~a fuzzy match.phase=,age<,dur>,
`label:...
v0.3.1
- Added the profile picker. Started with no
--profileand no--server,
argo-tui opens it instead of connecting to whichever profile the config file
names last, andPreopens it at any time. Switching profile is a full
reconnection: every in-flight request is canceled, the snapshot is dropped
and the port-forward is closed before the next one starts. - Added an empty state to the profile picker: with no config file it shows the
path to write, a profile that connects, and--demo. - The workflow list's MESSAGE column now takes all the width the fixed columns
leave, instead of a fixed share that stopped short of the pane edge. - Licensed under the GNU General Public License version 3.
- CI now builds and tests on macOS as well as Linux, so the platform argo-tui
is used on is the platform it is checked on. - The module is now
github.com/ficaa1/argo-tui, which is the path
go installneeds. The old path could never be fetched. While the
repository is private no proxy can read either path. - A binary built without an injected commit now reports the revision Go
recorded, instead of "unknown". A build from a dirty tree still says
"unknown", because it matches no commit. - Releases now update the
ficaa1/homebrew-tapformula from the checksums the
release job produced, so the formula can never name a build the job did not
verify.brew install ficaa1/tap/argo-tuidownloads from the release, so it
starts working when the repository becomes public. - Added
docs/demo.tapeand the README recording it produces.make demo
records it locally; thedemoworkflow records it on a runner with a pinned
vhs toolchain, which is the path that needs nothing installed.
v0.2.1
- Fixed the detail view never refreshing on its own: a superseded reply left
it marked as loading, so onlyrshowed a new phase. - Fixed a late reply retiring the cancel function of the request that
replaced it, which left that request running with nothing able to stop it. - Fixed a real run reading the demo's frozen clock, which held every age and
stale timer at the moment of start. - Fixed an unbounded second copy of every log line held beside the bounded
buffer, and a watch that added workflows past the snapshot cap. - Fixed a data race on the watch request, and an unavailable managed endpoint
falling back to a port the operating system had already released. - Added a deadline to every non-streaming request, so a stalled response body
can no longer hold the refresh open. Log and watch streams keep none. - Fixed action outcomes claiming more than was observed: a check that failed
before anything was sent now reports REFUSED, andconfirmedrequires the
expected end state. - Added sorting to the nodes tab with
s, and stopped hiding running nodes
under a skipped parent. - Fixed log tailing, which never asked the server to follow the stream.
- Fixed the end-to-end and connected test suites, neither of which could fail.