Commit Graph
24 Commits
Author SHA1 Message Date
thejoker.msk e897b4a89a feat(history): add Atuin context scopes 2026-08-14 13:30:10 +03:00
shemishtameshandshemishtamesh 89fcd6f830 feat(config): add cobra-probe-enabled toggle option and safeguard cobra probing (#133)
currently, every command that doesn't have a completion spec is assumed
to be a cobra cli and it gets ran with a `__complete` argument. for non
cobra clis this can cause problems if those non-cobra clis have
sideeffects even when ran with the `__complete` argument, and there is
no way to disable this.
one of these problems was solved at #111, but a full solution would
probably require actual sandboxing which is i think is an overkill just
for attempting to get suggestions for unrecognized commands. instead of
sandboxing, this pr adds a config option for allowing only selected
commands to be probed and disallowing the rest.
currently the default is still allowing all (`["*"]`) so default
behavior is the same, but it might be better to just have a long list of
known cobra clis as the default instead.

here's a demo of a side effect caused by the probing, in this case
"deleting" a file with rmtrash without actually trying to run the
command:

https://github.com/user-attachments/assets/5256d363-5291-42e8-bb4f-cf7467927246

---------

Co-authored-by: shemishtamesh <shemishtamail@gmail.com>
2026-08-11 19:24:47 +07:00
VERSE 0f173f78dc fix: exclude auto update changelog commit (#135)
- Exclude auto update changelog from bot commit in CHANGELOG and
releases
- Update full commands explain in readme
2026-08-09 21:44:44 +07:00
VERSE dd1fb156fc feat(history): atuin history support (#134)
closes #91

3 mode config atuin history
```toml
[core]
# 0 = off, 1 = atuin history only, 2 = atuin history + default history
atuin-history = 0
```
Default is Mode 0 (turn off), who uses atuin history has to config it
manually

Mode 1 = atuin only (as you can see only 11 commands):
<img width="1285" height="466" alt="image"
src="https://github.com/user-attachments/assets/ca520ec7-fb45-4403-8087-a4951ba8dba0"
/>

Mode 2 = combine shell history + atuin history (prefer atuin):
<img width="1261" height="469" alt="image"
src="https://github.com/user-attachments/assets/1558ad3e-38f3-4d6e-bc8e-cfc00ea9cb4b"
/>

Mode 0 = turn off atuin

---
Custom atuin db path if anyone's using their own path (leave empty to
use default from atuin)
```toml
atuin-db-path = ""
```

---

I also handled the search menu overlay of Atuin, IRIS won't show in this
mode, but you have to change the keybind between 2 tool cuz they're
using same keybind Ctrl + R, but I think using IRIS make it unnecessary
to use Atuin search mode (82b180c9610f75d41008a54dfde474c7f2cce015)


<img width="70%" alt="image"
src="https://github.com/user-attachments/assets/e0c62050-7e6e-4e37-a1cc-2bfb63e1e984"
/>

<i><b>Before (Menu layout completely broken)</b></i>

<img width="50%" alt="image"
src="https://github.com/user-attachments/assets/1e6d8de9-cde8-473d-8a42-4748c480c812"
/>

<i ><b>After handling (not shows anymore)</b></i>
2026-08-09 21:08:11 +07:00
VERSE 87b91c45d7 feat: update changelog (#131)
closes #130 

- CHANGELOG.md file for people who can view changelog from github
---
`iris changelog` command:
`iris changelog [version]` (e.g. iris changelog v0.5.1)
`iris changelog -n 3` (see changelog of 3 latest releaseas)

=> `iris changelog` looks just like CHANGELOG.md, grouped headers and
all. It only stops looking that way if we personally overwrite that
release's description with something else
=> With 1-hour local cache (invalidated on updater-channel change),
`--refresh` flag to bypass, graceful fallback to stale cache on GitHub
rate-limiting

---
- New auto update config
```toml
# 0 = off (default, notify only), 1 = auto-install, 2 = always confirm first
auto-update = 1
```

- New just debug-changelog and just debug-autoupdate recipes (fully
offline, mocked HTTP servers, no real network/config touched)
2026-08-07 17:16:18 +07:00
VERSE ce404335ed docs(readme): remove ⌘ 2026-08-06 13:42:53 +07:00
VERSE 994ff83675 docs(readme): small note in shell config and fix line space
Clarified IRIS's advantages over Fig and added note about auto-start configuration.
2026-08-05 00:17:49 +07:00
verse91 53f104577f docs: add auto-start setup instructions 2026-08-05 00:06:13 +07:00
VERSE 3a97efad18 docs(readme): add themes directory reference
Updated the themes directory reference in README
2026-08-04 15:16:35 +07:00
VERSE b5734b4e85 docs: theme config and list of theme templates (#116)
- Added theme configuration guide in README
- Added some theme templates
- Added list of theme templates in `themes/`
2026-08-04 15:15:21 +07:00
VERSE b79d25a082 docs(readme): add navigate-right config 2026-08-03 18:50:04 +07:00
M57 476ca3946b fix: update stale vendorHash after lipgloss v2 upgrade (#99)
Commit `efc49ba` (feat: upgrade to lipgloss v2, #94) changed
`go.mod`/`go.sum` (lipgloss v1 → v2, ~24 dependency version bumps) but
did not update `vendorHash` in `flake.nix`.

As a result `nix build .#iris` (and any consumer) fails with a
fixed-output derivation hash mismatch:

```
error: hash mismatch in fixed-output derivation 'iris-<rev>-go-modules.drv':
         specified: sha256-kBSMhUsuCKIjAXjGfl1WSjCX+tlGi9BTnkRu9ScW6M0=
            got:    sha256-KQNloP/Aj283YQ4d5LFu/2Pbb2HbVTZPhLK1fs4xvGw=
```

This one-line change updates `vendorHash` to the hash actually produced
by the module set at HEAD. Verified: `nix build .#iris` succeeds with
the corrected hash.

Run `nix flake update` afterwards to regenerate `flake.lock`.
2026-08-01 18:51:42 +07:00
VERSE 23bd718899 docs(readme): reorder badge and description 2026-07-31 23:21:30 +07:00
VERSE aba4dc9716 chore(readme): #2 repo of the day badge
Updated README to include Trendshift badge and reordered platform badges.
2026-07-31 22:41:32 +07:00
verse91 9786f14158 chore(aur): transfer the aur maintainer 2026-07-31 22:31:25 +07:00
verse91 85a9a7d55d fix(release): rename AUR package to iris-cli-bin due to upstream conflict 2026-07-31 17:48:27 +07:00
VERSEanduse-the-fork e09f4609f6 build: support pkg managers installation (#87)
closes #71, #84, #86
- AUR
- Homebrew
- Nix
- Debian (.deb)
- RPM (.rpm)
- Aqua
- ASDF

This is my first time doing this, so there might be mistakes. If you
can't download it through any pkg manager, please leave a comment or
open an issue

---------

Co-authored-by: use-the-fork <23747916+use-the-fork@users.noreply.github.com>
2026-07-31 17:16:31 +07:00
VERSE 4421d6e6a5 docs(readme): warning about potential conflicts 2026-07-31 10:55:54 +07:00
VERSE a885c7462a feat(config): ui width, auto exec, selection and navigation configs (#80)
closes #67

So I made an auto-exec confg `auto-exec = true`
(e32c0ba6ed69f3c764353e58b8fbacf160f37d5a) which means:
- If you want your command in the prompt to be executed right away, you
can set this = false (for example, you are typing `nvim ~/.conf` but
IRIS is suggesting `nvim ~/.config`, it will ignore the suggestion and
exec what you are typing, this is current default behavior)
- If you want to auto execute full command which is being suggested, you
can set this = true (this is the opposite of above, when you are typing
`nvim ~/.conf` but IRIS is suggesting `nvim ~/.config`, it will auto
exec `nvim ~/.config` instead, but sometime you want to exec what you
are typing instead of the suggestion right?, just press esc or shift tab
to hide the menu and it will)

---

Select keybinding to replace tab
(0dc01cba8c610e8d6fd8c50f6a71bdcc061a098f)
`select = "ctrl+y"`

Some users may love nvim keybinding or emacs, so I bring navigation
keybinding to be configurable (0dc01cba8c610e8d6fd8c50f6a71bdcc061a098f)
```
navigate-up = "ctrl+k"
navigate-down = "ctrl+j"
```
---

I also added a option for UI width
(dfa3b810a7be406fe4652b3886020f37bb166811)
`max-width = 80`
- If you configure `max-width` to be larger than the actual width of the
current terminal, Iris will automatically "compress" the window to match
the terminal's width (meaning it will never overflow and break the
interface)
- If you configure `max-width` too small (e.g 10), the interface will
have cramped text, making it look very bad. So, I've set a minimum safe
min limit of 40. If the configured value is smaller than this, Iris will
automatically use 40

Small note: If you set `max-width = 0` (or leave it blank), it will
automatically use Iris's default standard size of 76. SO you can
confidently customize it without fear of breaking the UI (I hope so
lmao)

---

Added a fallback to ensure Iris never crashes or loses shortcuts if the
user accidentally deletes keybinding configuration lines or
intentionally assigns empty strings " "
(f682c9bf623f3ed46ad0763221145604dbd91b07)

Fix typo `toggle_mode` to `toggle-mode`
(b39be6673e552735fa65a6c9807510c83b4d9cdd)

if you have a better config design, please tell me, I always listen to
your idea
2026-07-31 10:49:10 +07:00
Paolo Ricciuti 2573ad73b4 feat: add shell login option (#75)
Closes #72
2026-07-30 22:45:23 +07:00
VERSE 0049256844 docs: move user guide to top level readme (#70)
- I moved all information from user guide docs to top level readme so
now people can find information about IRIS easier and faster
- Also, some people always ask me how to uninstall while uninstall
subcommand already in IRIS, I've added to docs
- Corrected the way to install with go command
2026-07-30 13:27:35 +07:00
VERSE 078e5e817c docs: update docs (#43)
- macOS, Linux badge and AI suggestions showcase in README
- Update user guide and docs for development
2026-07-27 19:50:28 +07:00
VERSE 4728ca0c7f docs(readme): add showcase for kitty terminal (#33)
Updated alignment and added images to showcase section.
2026-07-05 19:56:40 +07:00
VERSE 24fddaccfe docs: introducing to iris (#11) 2026-07-03 11:37:20 +07:00