Skip to content

Releases: ficaa1/micko

v0.8.1

Choose a tag to compare

@github-actions github-actions released this 02 Oct 13:41
cfdcb6b
  • Notifications. W on the list watches the selected or marked workflows
    and notifies on each phase change and on deletion. Watches carry across
    namespace switches. notifications.suspended: true adds a notification
    whenever any workflow becomes suspended. The notifications config
    section picks desktop, bell, terminal (OSC 9) and sound. 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

Choose a tag to compare

@github-actions github-actions released this 01 Oct 13:37
e05032b
  • 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-only turns them off for a session and
    shows READ ONLY in the header. --allow-actions is 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.
  • --debug writes 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 under scripts/perf.
  • micko --version and the header name the commit a release or
    make build was built from. The injected value was ignored, so a tree
    with uncommitted changes said unknown.
  • The archive's DURATION column is wide enough for unfinished, which it
    used to cut to unfinish….
  • micko installs with mise:
    mise use -g github:ficaa1/micko.

v0.7.1

Choose a tag to compare

@ficaa1 ficaa1 released this 01 Oct 12:29
  • 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

Choose a tag to compare

@ficaa1 ficaa1 released this 01 Oct 12:29
  • 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: floor in 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: true still perches him, and perch says so outright; any other
    value is a config error. :mascot now moves him from his perch to the
    floor to off.

v0.6.0

Choose a tag to compare

@ficaa1 ficaa1 released this 01 Oct 12:29
  • 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 in cmd/micko,
    the module path github.com/ficaa1/micko, the release archives
    (micko_<version>_<os>_<arch>.tar.gz), the Homebrew formula
    (ficaa1/tap/micko), the header, --version and 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
    reads MICKO_E2E and MICKO_E2E_CONFIG.
  • Mićko, my eastern rosella, is the mascot. He is off by default; turn him
    on with mascot: true at the top of the config file, --mascot, or the
    :mascot command, 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

Choose a tag to compare

@ficaa1 ficaa1 released this 01 Oct 12:29
  • 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 with redactValues: true
    at the top of the config file or on a profile, or with --redact-values;
    v still 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 a now
    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, i shows the node info panel
    and enter opens the pod's log.
  • 1 to 9 jump to a detail section by its position, and T jumps to the
    Timeline. T on 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. y copies the explanation as text for an incident
    channel.
  • X jumps to the Explain section in the detail pane, and X on 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. s puts 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. E jumps 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
    s order 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: space folds or unfolds, left folds or climbs to the
    parent, right unfolds. Folds survive refreshes, and earlier retry
    attempts start folded.
  • i opens 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 that v hides or reveals.
    It sits to the right on a wide terminal and under the tree otherwise.
  • / finds a node by name; n and N step through the matches, opening
    folds on the way. While the find input is open every letter types, q
    included, and esc clears the find before it leaves the workflow.
  • Added skins. default keeps 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; auto picks a dark or
    light skin from the terminal's background colour. Choose one with skin:
    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_COLOR still 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, tab completes the highlighted one, and enter
    runs exactly what was typed. wf shows the workflow list, ns [name] and
    profile [name] (or ctx) switch namespace and profile or open their
    pickers, all toggles all namespaces, and help and q do what their keys
    do. Namespace and profile names complete after a space, and ctrl+p and
    ctrl+n recall earlier commands. A word that names no command is reported
    in the footer, never run as a near match.
  • Added an all-namespaces view: 0 on the workflow list, or :all. The list
    shows every workflow the token may read with a NAMESPACE column, the header
    reads ns: all, the filter also matches namespace/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, with n and 0 for 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. i opens
    an info panel with the next five runs, the policy, the history limits, the
    last and active runs and the arguments, whose values v hides or reveals. enter
    lists the workflows the cron workflow started, and esc returns. Both the
    v3.5 schedule field and the v3.6+ schedules list 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. i opens
    an info panel with the arguments (values follow redactValues, with their
    defaults and allowed values), each template and its type, the service
    account and the labels, and enter lists the workflows submitted from the
    template. Cluster templates belong to no namespace, so n and 0 say 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
    enter opens 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. L turns the labels
    off and on.
  • w in 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, WARN or
    DEBUG, after any timestamps, or a JSON line with a level or severity
    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 or esc shows every line.
  • ctrl+t in 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:...
Read more

v0.3.1

Choose a tag to compare

@ficaa1 ficaa1 released this 01 Oct 12:29
  • Added the profile picker. Started with no --profile and no --server,
    argo-tui opens it instead of connecting to whichever profile the config file
    names last, and P reopens 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 install needs. 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-tap formula 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-tui downloads from the release, so it
    starts working when the repository becomes public.
  • Added docs/demo.tape and the README recording it produces. make demo
    records it locally; the demo workflow records it on a runner with a pinned
    vhs toolchain, which is the path that needs nothing installed.

v0.2.1

Choose a tag to compare

@ficaa1 ficaa1 released this 01 Oct 12:29
  • Fixed the detail view never refreshing on its own: a superseded reply left
    it marked as loading, so only r showed 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, and confirmed requires 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.