218 Commits

Author SHA1 Message Date
3cf4ff82a6 feat: highlight matches in interactive search (#2653)
* feat: highlight matches in interactive search

uses `norm` to do fzf-compatible matches when rendering history items
in the search panel to highlight the matching ranges of the item

this helps see _why_ certain history items have come up

note that this will never be 100% perfect as we search on a sqlite query
but it should be good enough in most cases

* fmt

* fix some clippy issues

* refactor to pass in a history_highlighter instead of search and engine

* improve the highlighting on the selected row

---------

Co-authored-by: Ellie Huxtable <ellie@atuin.sh>
2025-08-04 15:07:25 +00:00
c21cd16d4d fix: match logic of theme directory with settings directory, so ATUIN_CONFIG_DIR is respected (#2707) 2025-08-04 14:48:21 +02:00
515dd191e2 fix: Make status exit 1 if not logged in (#2843) 2025-08-04 14:42:00 +02:00
a730f60cc0 fix: honor timezone in inspector stats (#2853)
* fix: honor timezone in inspector stats

fixes: #2567

* docs: fix rustdoc warning about URL markup

* fix: pass timezone by value, as suggested by clippy (oops)
2025-08-04 14:40:02 +02:00
6d49fdb70e fix: clippy issues on Windows (#2856) 2025-08-04 14:39:12 +02:00
5614596c81 chore(release): prepare for release 18.8.0 (#2858) 2025-08-04 12:33:08 +02:00
6c31530c7a feat: add IDX_CACHE_ROLLOUT (#2850)
Only really useful for Atuin cloud

Given a % chance, either use the idx cache or use the old aggregation
query

This is to enable us to test rollout the idx cache, without breaking all
queries in weird ways. Can monitor for a change in http codes/etc, and
easily roll back.
2025-07-29 16:14:27 +02:00
59d2047a46 fix(build): enable sqlite feature for sqlite server (#2848) 2025-07-29 16:04:25 +02:00
cb157f7c40 fix: ensure the idx cache is cleaned on deletion, only insert if records are inserted (#2841) 2025-07-24 14:29:37 +02:00
0f381dd515 fix: use transaction for idx consistency checking (#2840) 2025-07-24 10:08:20 +02:00
576789335a feat: add inline_height_shell_up_key_binding option (#2817) 2025-07-23 13:31:15 +02:00
e7a8e040cc nushell: fix get -i deprecation (#2829)
Since https://github.com/nushell/nushell/pull/16007, the recommended
flag is `--optional`. To avoid compatibility issues, the builtin optional
access syntax is used instead, which is backwards-compatible.
2025-07-23 13:28:54 +02:00
e31d3e849d fix: Make login exit 1 if already logged in (#2832) 2025-07-23 13:25:54 +02:00
e0bff11073 feat: Support multi part commands (Fixes #2836) (#2837)
* feat: Support multi part commands

* fix: Clippy
2025-07-23 13:24:50 +02:00
d1726e52d6 feat: add info for 'official' plugins (#2835)
* feat: add info for 'official' plugins

* fix default features
2025-07-22 19:32:20 +02:00
84c267eada feat: command chaining (#2834)
* feat: command chaining

Allow for smart completion of commands ending in && or ||

* fmt
2025-07-22 19:32:10 +02:00
e7819d258a chore: update to rust 1.88 (#2815)
* chore: update to rust 1.88

* clippy + fmt

* update ci version

* update flake
2025-07-22 16:03:20 +02:00
875e339189 Update indicatif to 0.18.0 (#2833) 2025-07-21 22:05:38 +02:00
0eecc0b43d chore(release): prepare for release 18.7.1 (#2826) 2025-07-16 17:18:15 +01:00
403d4a1141 fix: add check for postgresql prefix (#2825)
thanks for the speedy fix!
2025-07-16 16:53:25 +01:00
2eeb0c79f6 chore(release): prepare for release 18.7.0 (#2823)
* chore(release): prepare for release 18.7.0

* lockfile
2025-07-16 14:47:25 +01:00
58e307bc6d fix: refuse "--dupkeep 0" (#2807)
People may think it would keep only one copy, but it didn't work that way.
2025-07-03 16:35:18 +01:00
7f868711f0 feat: Add sqlite server support for self-hosting (#2770)
* Move db_uri setting to DbSettings

* WIP: sqlite crate framework

* WIP: Migrations

* WIP: sqlite implementation

* Add sqlite3 to Docker image

* verified_at needed for user query

* chore(deps): bump debian (#2772)

Bumps debian from bookworm-20250428-slim to bookworm-20250520-slim.

---
updated-dependencies:
- dependency-name: debian
  dependency-version: bookworm-20250520-slim
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(doctor): mention the required ble.sh version (#2774)

References:

https://forum.atuin.sh/t/1047

* fix: Don't print errors in `zsh_autosuggest` helper (#2780)

Previously, this would result in long multi-line errors when typing,
making it hard to see the shell prompt:
```
$  Error: could not load client settings

Caused by:
   0: could not create config file
   1: failed to create file `/home/jyn/.config/atuin/config.toml`
   2: Required key not available (os error 126)

Location:
    atuin-client/src/settings.rs:675:54
 fError: could not load client settings

Caused by:
   0: could not create config file
   1: failed to create file `/home/jyn/.config/atuin/config.toml`
   2: Required key not available (os error 126)

Location:
    atuin-client/src/settings.rs:675:54
 faError: could not load client settings
```

Silence these in autosuggestions, such that they only show up when
explicitly invoking atuin.

* fix: `atuin.nu` enchancements (#2778)

* PR feedback

* Remove sqlite3 package

* fix(search): prevent panic on malformed format strings (#2776) (#2777)

* fix(search): prevent panic on malformed format strings (#2776)

- Wrap format operations in panic catcher for graceful error handling
- Improve error messages with context-aware guidance for common issues
- Let runtime-format parser handle validation to avoid blocking valid formats

Fixes crash when using malformed format strings by catching formatting
errors gracefully and providing actionable guidance without restricting
legitimate format patterns like {command} or {time}.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Satisfy cargo fmt

* test(search): add regression tests for format string panic (#2776)

- Add test for malformed JSON format strings that previously caused panics
- Add test to ensure valid format strings continue to work
- Prevent future regressions of the format string panic issue

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
Co-authored-by: jyn <github@jyn.dev>
Co-authored-by: Tyarel8 <98483313+Tyarel8@users.noreply.github.com>
Co-authored-by: Brian Cosgrove <cosgroveb@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-06-23 12:31:55 +01:00
306f5e1104 fix(search): prevent panic on malformed format strings (#2776) (#2777)
* fix(search): prevent panic on malformed format strings (#2776)

- Wrap format operations in panic catcher for graceful error handling
- Improve error messages with context-aware guidance for common issues
- Let runtime-format parser handle validation to avoid blocking valid formats

Fixes crash when using malformed format strings by catching formatting
errors gracefully and providing actionable guidance without restricting
legitimate format patterns like {command} or {time}.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Satisfy cargo fmt

* test(search): add regression tests for format string panic (#2776)

- Add test for malformed JSON format strings that previously caused panics
- Add test to ensure valid format strings continue to work
- Prevent future regressions of the format string panic issue

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-06-11 19:12:20 +01:00
2e26f34687 fix: atuin.nu enchancements (#2778) 2025-06-05 13:28:41 +01:00
jyn
2814c2031c fix: Don't print errors in zsh_autosuggest helper (#2780)
Previously, this would result in long multi-line errors when typing,
making it hard to see the shell prompt:
```
$  Error: could not load client settings

Caused by:
   0: could not create config file
   1: failed to create file `/home/jyn/.config/atuin/config.toml`
   2: Required key not available (os error 126)

Location:
    atuin-client/src/settings.rs:675:54
 fError: could not load client settings

Caused by:
   0: could not create config file
   1: failed to create file `/home/jyn/.config/atuin/config.toml`
   2: Required key not available (os error 126)

Location:
    atuin-client/src/settings.rs:675:54
 faError: could not load client settings
```

Silence these in autosuggestions, such that they only show up when
explicitly invoking atuin.
2025-06-05 13:26:37 +01:00
239e6fbe7c fix(doctor): mention the required ble.sh version (#2774)
References:

https://forum.atuin.sh/t/1047
2025-05-27 15:30:54 +01:00
87a963600c fix(api): Allow trailing slashes in sync_address (#2760) 2025-05-21 17:36:23 -07:00
f8145e6709 Formatting 2025-05-14 20:34:13 -07:00
593702c91c fix: clarify that HISTFILE, if used, must be exported (#2758) 2025-05-14 20:29:07 -07:00
c93991b5d0 chore: Allow setting script DB path (#2750)
* chore: Allow setting script DB path

* Rename scripts.database_path setting to scripts.db_path to match other crates
2025-05-13 08:29:04 -07:00
84589cab15 chore(release): prepare for release 18.6.1 (#2749) 2025-05-08 14:10:38 -07:00
f49599599e Revert "fix: selection vs render issue (#2706)" (#2748)
This reverts commit cd5d337b52.
2025-05-08 14:04:01 -07:00
45460d4c31 chore(release): prepare for release 18.6.0 (#2740)
Co-authored-by: Ellie Huxtable <ellie@mac.lan>
2025-05-06 16:18:21 -07:00
a1433e0cef feat: Implement KV as a write-through cache (#2732) 2025-05-06 08:36:32 -07:00
d5c3558b71 chore(deps): update minspan to 0.1.5 (#2729)
* update minspan to 0.1.3

had a correctness bug reported to 0.1.1, should probably update.

* Update Cargo.toml

* add Cargo.lock changes
2025-05-06 08:29:52 -07:00
100de6e463 chore(deps): Update postmark to 0.11 (#2730) 2025-05-01 15:18:21 +01:00
cd5d337b52 fix: selection vs render issue (#2706)
* fix: selection vs render issue

* render on continue too

* clippy

* fmt
2025-04-28 15:25:37 +01:00
dc7082d681 feat: sort atuin store status output (#2719)
Co-authored-by: printfn <printfn@users.noreply.github.com>
2025-04-28 15:17:13 +01:00
881f622ce3 chore(deps): bump unicode-width from 0.1.14 to 0.2.0 (#2722)
Bumps [unicode-width](https://github.com/unicode-rs/unicode-width) from 0.1.14 to 0.2.0.
- [Commits](https://github.com/unicode-rs/unicode-width/compare/v0.1.14...v0.2.0)

---
updated-dependencies:
- dependency-name: unicode-width
  dependency-version: 0.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-28 15:16:43 +01:00
10df8ff8d1 chore(release): prepare for release 18.6.0-beta.1 (#2723) 2025-04-28 14:32:07 +01:00
cab77ffc64 Revert "feat(zsh): try to go to the position in zsh's history (#1469)" (#2715)
This reverts commit 264da9e4e9.
2025-04-28 13:56:39 +01:00
5cd23537b0 feat(stats): add jj to default common subcommands (#2708) 2025-04-21 08:04:26 -07:00
07655e92b1 chore: fix typos (#2668)
Found via `typos --hidden --format brief`
2025-04-17 23:22:54 +01:00
d016e2c9be feat: delete duplicate history (#2697) 2025-04-17 23:21:25 +01:00
28ddb45e01 Update dependencies (#2695)
- Bump protox to 0.8
- Bump interim to 0.2
2025-04-16 12:25:39 +01:00
09fc76ed82 chore(release): prepare for release 18.5.0 (#2685)
* chore(release): prepare for release 18.5.0

* update workflow ubuntu version

* revert because dist checks lol
2025-04-08 17:05:12 +01:00
a62d27c5f1 feat: Add 'atuin scripts rm' and 'atuin scripts ls' aliases; allow reading from stdin (#2680)
* Add 'atuin scripts rm' and 'atuin scripts ls' aliases

* Allow creating new scripts from stdin
2025-04-08 14:47:15 +01:00
1f6031d84a chore(release): prepare for release 18.5.0-beta.3 (#2678) 2025-04-07 14:33:24 +01:00
f162d641a7 feat: support storing, syncing and executing scripts (#2644)
* feat: add atuin-scripts crate

* initial

* define record types

* wip

* wip

* mvp

* add show command, make stdin work

* rewrite execution to use shebang and script file ALWAYS

* rename show -> get, allow fetching script only

* fmt

* clippy

* a bunch of fixes to the edits

* update lock

* variables

* fmt

* clippy

* pr feedback

* fmt
2025-04-07 14:17:19 +01:00