165 Commits
Author SHA1 Message Date
NicolasGB e066efb140 refactor(terminal): Centralize default keybinds 2026-07-29 18:32:55 +02:00
Nicolas GBandGitHub 15f842fb3d feat(log): Implement squash --interactive from the log buffer (#145) 2026-07-24 19:48:30 +02:00
Nicolas GBandGitHub 3d10ae14be fix(status): Make restoring files available in visual mode (#144) 2026-07-24 17:47:24 +02:00
NicolasGB cf11a4ffec feat(assets): Add jj.nvim logo 2026-07-24 17:41:00 +02:00
Nicolas GBandGitHub 76efdf514f fix(ui): correctly extract the cmd on floating buffers (#142) 2026-07-16 12:33:49 -07:00
NicolasGB 2cbb69a914 fix(bookmarks): Strip ?? from bookmarks too 2026-07-13 10:45:32 +02:00
NicolasGB 2af8f0d80a fix(log): Correctly pass revsets to the new command from visual mode 2026-07-13 10:41:52 +02:00
Nicolas GBandGitHub 0cbccf3e3c fix(log): Correctly compute highlights and selection of changes independently of the display format of the log buffer (#140) 2026-07-10 12:48:49 +02:00
Björn SteinbrinkandGitHub b5fe23351a fix(picker): status picker crash on renamed files (#139) 2026-07-10 12:45:57 +02:00
Nicolas GBandGitHub b7c17af6d2 fix(cmd): Parse default commands through a json template to avoid manual parsing through regex (#137) 2026-07-10 09:06:28 +02:00
Nicolas GBandGitHub b3ac14928c support: Setup bmac (#136) 2026-07-08 15:27:16 +02:00
Nicolas GBandGitHub 7f2786ff16 refactor!: Migrate runners cmd from string to argv (#134)
Migrate command execution to structured argv lists across the plugin, replacing shell-string command construction with `vim.system` argv execution. The runner API now exposes argv-based execution as the default path:

   - `runner.execute_command` -> `runner.execute`
   - `runner.execute_command_async` -> `runner.execute_async`
   - `runner.execute_command_raw` -> `runner.execute_raw`
   - `runner.execute_command_raw_async` -> `runner.execute_raw_async`
   - `runner.execute_command_sync` was removed; use `runner.execute` and handle the result directly

BREAKING CHANGES:
   - `cmd.new({ args = ... })` now requires `args` as `string[]` argv tokens, not a single string.
   - `cmd.log({ ... })` now uses `raw_flags` as `string[]` for raw passthrough flags; `raw = "..."` is no longer supported.
   - Direct users of `jj.core.runner` must migrate from the old `execute_command*` string helpers to the new argv-based `execute*` helpers.
2026-07-07 18:25:30 +02:00
NicolasGB c724290141 fix(filesets): Correclty escape filesets in different commands to avoid
special characters breaking jj's parsing
2026-06-30 12:45:40 +02:00
NicolasGB db06e9a73c fix(tests): Update an old test to match correct new behavior 2026-06-30 12:45:40 +02:00
Björn SteinbrinkandGitHub f217b16699 feat(picker): Add picker to navigate conflict sections (#131) 2026-06-23 09:59:42 +02:00
ca6d751de6 fix(file): show files added since the diffed revision as empty instead of erroring (#130)
Co-authored-by: Roman Konoval <roman@jiko.io>
2026-06-23 09:52:02 +02:00
Nicolas GBandGitHub cffc74128a fix(picker): Reformat the file history picker (#127) v0.7.1 2026-06-18 20:24:29 +02:00
Nicolas GBandGitHub 30d740024d feat(picker): Fallback to vim.ui.select in all pickers (#126) 2026-06-18 20:08:58 +02:00
Nicolas GBandGitHub af14ce8eda feat(picker): Add a conflict picker (#119) 2026-06-18 20:03:27 +02:00
NicolasGB aa3e98af26 fix(terminal): pass argv to native resolve
Pass raw command arguments to the interactive floating terminal instead
    of a shell-escaped string.

    This fixes native `jj resolve` exiting immediately when opened without
    an external tool.
2026-06-18 17:50:38 +02:00
Nicolas GBandGitHub 7fc91fe6d2 feat(resolve): add resolve command and log integration (#125)
Add first-class conflict resolution support to jj.nvim.

   - add `jj.cmd.resolve` to run `jj resolve` in a floating terminal or via an
     external tool
   - add `:J resolve` with support for `-r/--revision`, `--tool`,
     `--external/--ext`, and positional filesets
   - integrate resolve into the log buffer with the `gr` mapping and optional
     `resolve_strategies` picker
   - add `utils.is_change_conflicted()` and avoid opening resolve when the
     selected revision has no conflicts
   - document resolve usage, config, and keymaps in the README
   - add tests for resolve arg parsing and conflict detection helpers
v0.7.0
2026-06-16 19:06:33 +02:00
Nicolas GBandGitHub 9f2a76d079 feat(push): Add the possibility to push to arbitrary remotes through the vim command (#124) 2026-06-16 18:46:46 +02:00
Lars HansenandGitHub 6409ab0a66 fix(encoding): preserve UTF-16/32 content in jj file reads and diffs (#122)
Use raw command output for jj file reads, add encoding-aware decode/encode
handling, preserve buffer encoding settings across revision buffers, and add
tests for BOMs, endianness, and roundtrip behavior.
2026-06-16 18:35:27 +02:00
Nicolas GBandGitHub 33179e2f15 feat(duplicate): Add a duplication mode (#118) 2026-06-08 09:09:28 +02:00
Björn SteinbrinkandGitHub 8696843752 fix(picker): run jj without pager to avoid spurious "(END)" marker (#120) 2026-06-03 10:40:27 +02:00
Nicolas GBandGitHub 3e151d43c8 feat(browse): fix windows url opening (#116) 2026-06-03 09:42:48 +02:00
larpiandGitHub 688616db52 feat(push): add the deleted option for the push operation (#117) 2026-06-03 09:21:10 +02:00
NicolasGB f30eefeaf3 fix(describe): Allow for empty descriptions in the editor 2026-05-26 15:41:11 +02:00
NicolasGB 71f640be45 feat(status,highlights): Handle renamed files in restore and picker flows
- Improve status-line parsing to support top-level and nested rename 
        syntaxes, so actions no longer include trailing braces in paths.
    - Update the Snacks status picker integration to pass structured 
        rename/status metadata and use git_status formatting, preserving 
        icons/highlighting while showing rename pairs correctly.
    - Also tighten renamed-line highlighting in the editor buffer for consistent jjRenamed behavior.
2026-05-19 18:05:17 +02:00
Nicolas GBandGitHub 5558c22471 feat(editor): Add the possibility to configure a window for the editor like in the terminal allowing for "hsplit"/"vsplit"/"tab"/"floating" (#114) 2026-05-19 18:04:44 +02:00
b3d449ad41 fix(status): pass --no-pager to jj status (#113)
Co-authored-by: Tejas Sanap <tejas.sanap@beacon.io>
2026-05-19 11:25:46 +02:00
Nicolas GBandGitHub fbfff97a18 fix(config): correctly initialize default config and propagate it accordingly to the given submodules (#111) 2026-05-15 06:28:00 -07:00
Björn SteinbrinkandGitHub 5a0b756570 feat(picker): add <C-d> keybinding to open file and run Jdiff (#110)
In the status picker, pressing Ctrl-d opens the selected file in the
current window and immediately runs :Jdiff, so the diff view follows
without a second step.
2026-05-15 06:14:24 -07:00
Lars HansenandGitHub f5d11a3098 fix(diff): correctly relativize paths for diffing current buffer (#108) 2026-05-06 09:34:26 +02:00
larpiandGitHub a2d194d49e feat(log): add bookmark deletion command (#106) 2026-05-05 17:25:13 +02:00
NicolasGB 46932e5410 feat(log/summary): Add o keymap from the summary that allows users to
do the equivalent of `Jtabedit` of the file in under the cursor
2026-04-28 17:52:34 +02:00
NicolasGB 167c206521 feat(diff): Make both codediff/diffview work with the new Jedit
command to allow diffing agianst arbitrary revisions in buffer
2026-04-26 19:25:17 +02:00
53a3196210 Feat: Add file module with Jread, Jedit, Jsplit , Jvsplit and Jtabedit similar to fugitive's (#105)
Co-authored-by: NicolasGB <ngou0210@gmail.com>
2026-04-26 09:50:26 -07:00
NicolasGB 2dbe2c73c5 fix(terminal): make cursor_render_delay optional in the typesystem v0.6.0 2026-04-07 10:44:02 +02:00
NicolasGB cbfcdbbf36 fix(terminal): Correctly reset position on floating terminal 2026-04-07 10:31:35 +02:00
Jonas ElhsandGitHub 46141a282e feat!(terminal): unify terminal window behavior and centralize sizing config (#102)
- add terminal.window.type support (hsplit, vsplit, floating, tab)
- add terminal.window.split_size for split-based layouts
- rename floating size options to terminal.window.floating_width/floating_height
- validate terminal window ratios during setup
- make terminal.run/run_floating merge default keymaps internally
- remove cmd.split width/height sizing in favor of terminal.window config
- improve floating/log buffer state handling and refresh behavior
- update README examples and configuration docs

BREAKING CHANGE: terminal sizing/config moved to terminal.window.*.
Removed cmd.split.width/cmd.split.height.
Renamed terminal.window.width/height to terminal.window.floating_width/floating_height
2026-04-07 10:31:12 +02:00
NicolasGB 578c5f15df feat(diff): Now diff command supports <rev1>..<rev2> format 2026-04-04 15:50:52 +02:00
Naoki MizunoandGitHub a6e163bcc3 feat(log/keymap): add keymaps to move on revision in log buffer (#100) 2026-03-19 11:06:53 +01:00
Naoki MizunoandGitHub 6580bb93ba docs(readme): update default config section (#99) 2026-03-18 09:41:45 +01:00
Nicolas GBandGitHub 61f123f518 fix(utils): Now getting the commit_id of a revset forces it being unique (#98)
This will raise an error, as expected, when trying to diff with a revset that has multiple commits associated
2026-03-17 12:11:14 +01:00
NicolasGB 29e4cd054e fix(bookmark): Always move bookmars with -B to allow the user moving
it forward and backwards seemlessly
2026-03-17 11:34:40 +01:00
NicolasGB d471a03685 docs(readme): Document the bookmark track native usage 2026-03-12 18:10:06 +01:00
NicolasGB 3b6f46b9f6 docs(readme): Document the new editor.auto_insert config option 2026-03-12 18:04:39 +01:00
NicolasGB d357409268 feat(log): Add change_revset keybind to change the current log revset
being displayed in the log command
2026-03-12 18:04:39 +01:00
NicolasGB 80caa923c2 feat(cmd): Implement the bookmark forget as a native function 2026-03-12 18:04:39 +01:00