# Changelog
> Note: you can run `echo ${JOVIAL_VERSION}` in terminal to see what version you used now.
## `jovial.zsh-theme@v2.6.0`
> **Breaking**: minimum supported zsh is now **5.3** —
> relies on `add-zle-hook-widget` (zsh 5.3+)
### Feat
- **automatic light / dark theme** by detecting the terminal background color
([OSC 11](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html)),
falling back to dark; works over **SSH** and inside **Docker**
- new `JOVIAL_PALETTE_DARK` / `JOVIAL_PALETTE_LIGHT` palettes; the legacy
`JOVIAL_PALETTE` still works as an override slot, migrated into both
- preset `JOVIAL_THEME_MODE=light|dark` to skip detection entirely;
the `COLORFGBG` env hint is preferred whenever the terminal exports it;
non-interactive / tty-less shells only ever do env checks
- detection is fast and safe: the query is sent at theme source time and
collected at first prompt, so its round-trip overlaps `~/.zshrc`;
typed-ahead input survives; a reply arriving late is swallowed by a zle
guard and the palette self-corrects on the spot
- dev-env version tag colors moved into palette keys:
`dev-env.node` / `dev-env.golang` / `dev-env.python` / `dev-env.php`
- **first paint budget** (`JOVIAL_THEME_DETECT_TIMEOUT`, default `0.3`s),
a hard cap on how long the first prompt may wait: the background reply,
git check and dev-env probe race **in parallel** within one shared window —
parts finished in time render synchronously on the first prompt, the rest
joins via async rerender, so a slow `git status` or a mute terminal can
delay the first prompt by at most the budget, never stacked
- added a [Taskfile](https://taskfile.dev)-driven test & preview stack under
`dev/` (unit / integration / e2e / preview, see `dev/README.md`), with the
same `task` entry points running locally, in the isolated docker e2e
container, and on GitHub CI (which uploads the
[vhs](https://github.com/charmbracelet/vhs) previews as artifacts)
## `jovial.zsh-theme@v2.5.5`
### Fix
- override to `TERM=xterm-256color` when original is 'TERM=xterm' for default colorful compatibility
### `jovial.plugin@v1.2.1`
- fix: resolve **Locale** issue where the host lacks `en_US.UTF-8` but use another UTF-8 locale. `jovial.plugin` will no longer change the locale in such cases.
## `jovial.zsh-theme@v2.5.4`
### Fix
- fix git status hint for `git am` (apply a series of patches)
### `jovial.plugin@v1.2.0`
- feat: exchange position of args for `gcmt` function (git commit with modified time) for more **intuitively**
- fix: keep committer date when `gfbi`, show signature when `glti`
## `jovial.zsh-theme@v2.5.3`
### Feat
- git status in prompt work with submodules now
### `jovial.plugin@v1.1.9`
- support update submodules in git fetch and checkout function `gfco`
- adjust comments of functions, design to show comments in `where xxx` or `which xxx`
- remove functions `stree` (support by official), and `py2venv` (migrated to `venv --py2`)
## `jovial.zsh-theme@v2.5.2`
### Feat
- support show python3 version in prompt
### `jovial.plugin@v1.1.8`
- add variable `GIT_REMOTE` to support in git fetch function `gfco` and `gfbi`
## v2.5.1
### Fix
- migrate `path` part in `JOVIAL_AFFIXES` config named to `current-dir`,
to fix the bug that causes responsive style error due to `path` part.
example in `.zshrc`:
```diff
- JOVIAL_AFFIXES[path]='%1~'
+ JOVIAL_AFFIXES[current-dir]='%1~'
```
## v2.5.0 [_@deprecated_]
### Feat
- support the ability to override the prompt for `path` part in `.zshrc`.
example in `.zshrc`:
```zsh
# @deprecated use `JOVIAL_AFFIXES[current-dir]` in v2.5.1
JOVIAL_AFFIXES[path]='%1~'
```
## v2.4.0
### Feat
- support the ability to override the prompt parts for `hostname` and `username` in `.zshrc`.
example:
```zsh
JOVIAL_AFFIXES[hostname]='MacbookPro'
JOVIAL_AFFIXES[username]='zthxxx'
```
## v2.3.1
### Chore
- will no longer override var `TERM=xterm-256color` except in default `screen` command. [#23](https://github.com/zthxxx/jovial/issues/23)
## v2.3.0
### Feat & Docs
- add docs for support use with [`antigen`](https://github.com/zsh-users/antigen)
- no need setopt in .zshrc anymore for manually install like antigen
## v2.2.1
### Fix
- fix reset style (`sgr_reset`) in manually used without `oh-my-zsh` or `zmodload zsh/colors`
## v2.2.0
### Style
- add default color for typing-pointer and customization, darken the normal color
## v2.1.4
### Fix
- fix progress display miss in git rebase interactive
## v2.1.3
### Fix
- fix async job rerun with wrong edge case
## v2.1.2
### Chore
- set xterm 256 color mode by default, for out-of-the-box effect in [gnu/screen](https://www.gnu.org/software/screen/) or [tmux](https://github.com/tmux/tmux)
## v2.1.1
### Fix
- remove read stdin for block subprocess,
we found this cause zpty callback blocked in zsh v5.3
## v2.1.0
### Perf
- refactor to asynchronous update git status, now it's so fast in render and interaction. (4ms pre render)
### Feat
- pin last command execute elapsed time (same as exit code).
- support custom order and affixes of each prompt parts.
- remove dependencies on `autoload -U colors` or `FG[$color]` / `BG[$color]` settings anymore, in manually load theme.
### Fix
- fix bug that rerender will eat previous line
## v2.0.3
### Fix
- force declare theme variables to global scope, compatible with use `source ` in function
- support `.zshrc` as symlink in install script
- fix `rev-parse-find` function when cwd at ~/xxx/
### Chore
- remove useless git cli params in theme, and remove plugin macos in installer
- always reinstall `zsh-history-enquirer` by npm
## v2.0.0
### Feat
- support easy to custom jovial's colors and symbols
### Refactor
- refactor installer, more readable logs and support proxy env
- adjust code style, reduce subprocess call for performance
- rename osx plugin to macos, follows oh-my-zsh updated
### BREAKING CHANGE
There are some breaking changes for customization,
some customized variables and functions renamed:
- variable `JOVIAL_ARROW` => `JOVIAL_SYMBOL[arrow]`
- function `_jov_type_tip_pointer` => `@jov.typing-pointer`,
- and now, arrows could replace with variables `JOVIAL_SYMBOL[arrow.git-clean]` and `JOVIAL_SYMBOL[arrow.git-dirty]`
- some keys in ` JOVIAL_PROMPT_PRIORITY` renamed, `git_info` => `git-info`, `dev_env` => `dev-env`