Skip to content

Releases

Limon 1.4.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 16:31
292fbad

Added

  • limon config k8s_ns=1 adds the current namespace to the Kubernetes badge,
    e.g. (k8s:kind-dev/default), matching what kube-ps1 shows. A context with
    no namespace set shows default.
  • limon config k8s_danger='*prod*,*-prd' takes comma-separated,
    case-insensitive globs and shows a red ⚠ badge (! with ascii=1)
    whenever the current context matches one, so a production cluster stands
    out the same way LIMON_ENV=prod does.

Changed

  • The k8s=1 badge no longer forks kubectl to find the context. It reads
    the files in $KUBECONFIG (or ~/.kube/config) in pure bash, following
    kubectl's merge rules, and only falls back to kubectl for a kubeconfig
    written as JSON or flow-style YAML. The 2s cache now also covers "no
    context", so the fallback forks at most once every 2 seconds. kube-ps1's
    KUBE_PS1_NAMESPACE is used alongside KUBE_PS1_CONTEXT when it is set.

Fixed

  • limon upgrade beta / limon upgrade dev failed with "remote branch
    'origin/dev' not found" on installs made by get-limon.sh. Its shallow
    --depth 1 clone only tracks master, so a plain fetch never brought in
    other branches. Limon now fetches the channel's branch explicitly and adds
    it to the remote's tracked branches, and reports a branch that is genuinely
    missing on the remote separately from a network failure.

Install

curl -fsSL https://raw.githubusercontent.com/faridrasidov/limon/master/get-limon.sh | bash

Or download an archive below and run bash limon-1.4.0/install.sh.
Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

Limon 1.3.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 13:11
fe9be98

Added

  • Two opt-in, ble.sh-only editor extras, both off by default and zero cost
    unless enabled: limon config highlight=1 turns on ble.sh's already-bundled
    syntax highlighting (colors commands as you type), and limon config fzf=1
    sources ble.sh's vendored fzf key bindings (Ctrl+R history, Ctrl+T file,
    Alt+C cd) when fzf is installed. Both apply immediately in the current
    shell; ble.sh has no silent unbind, so turning fzf back off needs a new
    shell to fully clear its keys (the same limitation limon off already has).

Changed

  • The git segment no longer forks git at all in a directory that is not a
    repository (a home directory, /tmp, ...). It now checks for a .git entry
    by walking up from $PWD in pure bash before deciding whether to fork, and
    caches that "no repo here" result the same way it already cached a
    repo's branch and status. Process-spawn cost dominates prompt render time on
    small or loaded machines, so this removes the single biggest cost of
    limon config git=full (the default) for the common case of sitting outside
    a repo.
  • limon bench's "most cost is the git status call" tip now only prints when
    the benchmark actually ran inside a repository, since that fork no longer
    happens, and dominates nothing, outside one.

Install

curl -fsSL https://raw.githubusercontent.com/faridrasidov/limon/master/get-limon.sh | bash

Or download an archive below and run bash limon-1.3.0/install.sh.
Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

Limon 1.2.2

Choose a tag to compare

@github-actions github-actions released this 22 Sep 10:41
0bdf0fe

Changed

  • The git segment no longer forks git at all in a directory that is not a
    repository (a home directory, /tmp, ...). It now checks for a .git entry
    by walking up from $PWD in pure bash before deciding whether to fork, and
    caches that "no repo here" result the same way it already cached a
    repo's branch and status. Process-spawn cost dominates prompt render time on
    small or loaded machines, so this removes the single biggest cost of
    limon config git=full (the default) for the common case of sitting outside
    a repo.
  • limon bench's "most cost is the git status call" tip now only prints when
    the benchmark actually ran inside a repository, since that fork no longer
    happens, and dominates nothing, outside one.

Install

curl -fsSL https://raw.githubusercontent.com/faridrasidov/limon/master/get-limon.sh | bash

Or download an archive below and run bash limon-1.2.2/install.sh.
Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

Limon 1.2.1

Choose a tag to compare

@github-actions github-actions released this 21 Sep 09:07
18d1e9d

Fixed

  • Alt+Backspace deletes the previous path component or word again. The bundled
    ble.sh bound it to copy-backward-sword, which copied instead of deleting
    and ignored /; Limon now binds it to kill-backward-cword in its own
    ble.sh instance only (#11).

Install

curl -fsSL https://raw.githubusercontent.com/faridrasidov/limon/master/get-limon.sh | bash

Or download an archive below and run bash limon-1.2.1/install.sh.
Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

Limon 1.2.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 14:18
564729a

Upgrade notes

  • Bash 4.4 or newer is now required. Limon's native timer uses Bash 4.4's
    PS0 support so it no longer needs a global DEBUG trap.
  • Release archives are about 2.3 MB larger because they bundle the
    architecture-independent ble.sh runtime. No compiler, platform-specific
    binary, or runtime download is required.

Added

  • Fish/Zsh-style inline ghost autosuggestions for command history, commands,
    paths, and programmable completions. Right Arrow or End accepts the full
    suggestion; Ctrl+Right accepts one word; Tab remains normal completion.
  • Autosuggestions are enabled by default and can be controlled with
    autosuggest=0|1, autosuggest_delay=0..2000, and
    autosuggest_color=auto|0..255.
  • Limon reuses an already-loaded ble.sh session or loads its bundled pinned
    copy. limon status and limon health report the editor, hook provider, and
    bash-completion state.
  • PTY coverage for rendering and accepting a real history suggestion, plus
    lifecycle tests for scalar and array PROMPT_COMMAND values.

Changed

  • The command timer and prompt renderer use ble.sh's public PREEXEC and
    PRECMD hooks when its editor is active. The native fallback uses PS0 and
    a composable PROMPT_COMMAND entry.
  • Bash 5.1+ preserves PROMPT_COMMAND as an array. Bash 4.4-5.0 uses an exact,
    removable scalar prefix and does not restore a stale startup snapshot.
  • The bundled editor enables only ghost suggestions: syntax highlighting,
    completion menus, EOF markers, and other visual ble.sh defaults are disabled.
  • limon off disables every Limon-owned editor feature and hook. A bundled
    ble.sh runtime already sourced into the current Bash process stays resident
    but inert until that shell exits; ble.sh does not support a silent full
    unload back into Readline.
  • The installer no longer forces TERM=xterm-256color and now safely quotes
    installed paths written to .bashrc.

Fixed

  • limon off removes only Limon-owned hooks and restores an existing ble.sh
    configuration without detaching a user-owned editor.
  • Existing DEBUG traps are no longer replaced by Limon, fixing compatibility
    with debuggers and other shell frameworks.

Install

curl -fsSL https://raw.githubusercontent.com/faridrasidov/limon/master/get-limon.sh | bash

Or download an archive below and run bash limon-1.2.0/install.sh.
Verify a download with sha256sum -c SHA256SUMS --ignore-missing.

Limon 1.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Sep 10:47
3da5902

Upgrade notes

  • Bash 4.0 or newer is now required, and Limon checks for it at startup
    instead of failing somewhere deep in the script. macOS ships Bash 3.2 as
    /bin/bash; install a current one with brew install bash and use that
    shell. Limon never fully worked on 3.2 — it installed the prompt but silently
    failed to persist config options — so this names a broken setup rather than
    dropping a working one.
  • LIMON_* configuration options are no longer exported into child processes.
    Nothing documented relied on this, but a script reading e.g. $LIMON_GIT_MODE
    from a subprocess started by your shell will no longer see it.
  • timer_threshold now rejects values it used to accept silently. If your
    config has a non-numeric value there, Limon falls back to the 2 second
    default and limon config timer_threshold=... will tell you why.

Added

  • A dependency-free test suite (bash tests/run.sh) and CI running it on Bash
    4.4, 5.0 and 5.2 alongside ShellCheck and a prompt render-time guard.
  • limon bench --breakdown reports per-segment render timings, so a slowdown
    can be attributed instead of guessed at.
  • Sub-second command timer: durations now render as 1.4s, 2m 05s or
    1h 02m 05s. Bash 4 has no fork-free high-resolution clock, so those shells
    keep whole-second timing rather than paying a date call before every
    command.
  • timer_threshold accepts fractions, e.g. limon config timer_threshold=0.5.
  • LIMON_SOURCE_ONLY=1 loads Limon's functions without parsing a subcommand or
    installing the prompt, for testing and debugging.

Changed

  • Prompt rendering is roughly 70 times faster — about 21 ms per prompt down to
    about 0.3 ms. The theme file was being re-validated and re-sourced on every
    keypress, and every prompt segment was assembled through a subshell. Themes
    are now cached, and the segments no longer fork.
  • limon reload re-sources Limon, so a shell left open across limon upgrade
    picks up the new code instead of silently running the old prompt renderer.
  • Default host_color is now off, so Limon uses the selected theme's host
    color unless you enable automatic hostname coloring with
    limon config host_color=auto.
  • Default show_root is now 0, so the ROOT warning banner is opt-in with
    limon config show_root=1.

Fixed

  • limon config max_path=N with a small N could hang the shell on every
    prompt. The path-shortening loop could never make progress, so the prompt
    never returned.
  • limon off left its DEBUG trap installed, so Limon's timing hook kept
    running on every command in a shell you had turned Limon off in. The trap is
    now disarmed. Note that Bash does not let a sourced script see the caller's
    DEBUG trap, so limon off cannot restore a trap you had set before
    limon on — it clears Limon's instead of putting yours back.
  • Limon failed with "unbound variable" errors in shells using set -u.
  • Limon exported a shell function named main into every child process, where
    a script calling main before defining it would run Limon's prompt renderer
    instead of its own entry point.
  • Command timing starts only when Bash is about to run a real command, so idle
    time spent sitting at the prompt is no longer counted as command duration.
  • On Bash 4, where timing has whole-second resolution, the timer rendered
    1.0s — claiming a precision the measurement did not have. It now shows 1s.

Install

curl -fsSL https://raw.githubusercontent.com/faridrasidov/limon/master/get-limon.sh | bash

Or download an archive below and run bash limon-1.1.0/install.sh.
Verify a download with sha256sum -c SHA256SUMS --ignore-missing.