Commit graph

675 commits

Author SHA1 Message Date
dba122380b docs(upstream): triage stevearc/oil.nvim#349 as not actionable
Problem: upstream issue #349 requests a ranger-style Miller columns
layout. This is a fundamentally different navigation paradigm from
oil's buffer-as-filesystem model.

Solution: mark as not actionable and point to `mini.files`, which
stevearc himself recommended as the purpose-built alternative.
2026-03-16 17:23:00 -04:00
4d5d166f87
doc: update install instructions
Some checks are pending
quality / changes (push) Waiting to run
quality / Lua Format Check (push) Blocked by required conditions
quality / Lua Lint Check (push) Blocked by required conditions
quality / Lua Type Check (push) Blocked by required conditions
quality / Markdown Format Check (push) Blocked by required conditions
test / Test (Neovim nightly) (push) Waiting to run
test / Test (Neovim stable) (push) Waiting to run
2026-03-16 15:57:35 -04:00
Barrett Ruth
bf461f6844
feat(columns): per-character permission column highlights (#375) (#146)
Problem: the permissions column rendered as a monolithic unstyled
string, making it hard to scan `rwx` bits at a glance.

Solution: add per-character highlight groups for permission characters
following the `eza`/`lsd` convention. All groups link to standard
Neovim highlights so every colorscheme works out of the box.
2026-03-16 15:53:23 -04:00
Barrett Ruth
7b16324c5a
docs: add highlight-opened-file recipe (#450) (#145)
Problem: users wanted a visual indicator on the originating file when
opening a directory listing from a file buffer.

Solution: add `oil-recipe-highlight-opened-file` recipe that uses
`OilReadPost` to flash an extmark highlight on the cursor entry for
1.5 seconds after render.
2026-03-16 15:21:40 -04:00
Barrett Ruth
9ee6f2824e
docs(upstream): consolidate #85 into #121 (#144)
Problem: upstream issue #85 (git status column) was still marked open.
This is tracked by our git integration issue #121.

Solution: mark as consolidated into #121, alongside the previously
consolidated #571.
2026-03-16 15:06:40 -04:00
Barrett Ruth
ab2358e45b
docs(upstream): consolidate #655, #667, #736 into #142 (#143)
Problem: three upstream requests (#655, #667, #736) all target the
same architectural change — rendering columns as extmark virtual text
instead of inline buffer text.

Solution: create canonical issue #142 and consolidate all three.
2026-03-16 14:56:13 -04:00
Barrett Ruth
20e814af9f
docs(upstream): cite git status extensions for #571 (#141) 2026-03-16 14:47:15 -04:00
Barrett Ruth
e4743a968d
docs(upstream): mark #571 not actionable (#140)
Problem: upstream issue #571 (callback before `highlight_filename`)
was still marked open. The underlying use case is per-directory git
status, which existing extensions already solve.

Solution: mark as not actionable.
2026-03-16 14:43:16 -04:00
Barrett Ruth
bb7e5e9dad
docs(upstream): mark #466 not actionable (#139)
Problem: upstream issue #466 (select into window on right) was still
marked open despite being trivially solvable with a custom action.

Solution: mark as not actionable. Users can write their own action
using `oil.select()` and window layout inspection.
2026-03-16 14:34:06 -04:00
Barrett Ruth
136c11db71
docs(ssh): expand SSH adapter documentation (#525) (#138)
Problem: the `:help oil-adapter-ssh` section was only 10 lines covering
URL format and server requirements. Users had no guidance on how the
adapter works, how to configure `extra_scp_args`, or how to troubleshoot
connection issues.

Solution: expand the section with architecture overview (persistent SSH
connection, `scp` for file transfer, no local mount), configuration
(`extra_scp_args`, `~/.ssh/config`), limitations (no third-party plugin
integration, no cross-adapter moves), and troubleshooting tips.
2026-03-16 14:29:20 -04:00
Barrett Ruth
7372c98e2b
docs(upstream): mark #738 not actionable (#137)
Problem: upstream issue #738 (allow changing mtime/atime via time
column) was still marked open despite requiring disproportionate
implementation effort (reverse strftime parser, new mutator action
type, per-adapter `utime` support) with zero community demand.

Solution: mark as not actionable. Purpose-built tools like `touch -t`
already handle the underlying need.
2026-03-16 14:19:42 -04:00
Barrett Ruth
b41a62ad1d
fix(view): prevent backspace from deleting into prefix area (#135)
Problem: in insert mode, `<BS>`, `<C-h>`, `<C-w>`, and `<C-u>` could
delete backwards past the name column boundary into the icon/permissions/ID
prefix, corrupting the line and breaking the parser.

Solution: add buffer-local insert-mode expr keymaps that compute the name
column boundary (cached per line) and return no-op when the cursor is
already at or before it. `<C-u>` emits exactly enough `<BS>` keys to
delete back to the boundary, never past it.

Closes #133
2026-03-15 13:39:32 -04:00
Barrett Ruth
348bea3895
docs(upstream): mark #479 not actionable (#134)
* docs(upstream): track #254 in canola.nvim#129

Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.

* docs(upstream): mark #449 not actionable

Problem: Issue #449 (LSP rename failing on TypeScript files) was listed
as `open` despite being a configuration issue.

Solution: Mark as `not actionable`. The LSP rename times out on large
TypeScript projects; increasing `lsp_file_methods.timeout_ms` resolves
it. stevearc confirmed this in the issue thread.

* docs(upstream): mark #416 fixed via cherry-picked #725

Problem: Issue #416 (case-sensitive keymap comparison preventing
remaps) was listed as `open` despite being fixed by the keymap
normalization in PR #725.

Solution: Mark as `fixed — cherry-picked (#725)`. The
`nvim_replace_termcodes` normalization in `config.lua` resolves
case variants like `<c-e>` and `<C-e>` to the same key.

* docs(upstream): mark #479 not actionable

Problem: Issue #479 (harpoon integration recipe) was listed as `open`
despite being a stale documentation request from 2024 with zero
engagement.

Solution: Mark as `not actionable — no demand, stale`.
2026-03-15 12:59:35 -04:00
Barrett Ruth
a0bbc41eea
docs(upstream): mark #416 fixed via cherry-picked #725 (#132)
* docs(upstream): track #254 in canola.nvim#129

Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.

* docs(upstream): mark #449 not actionable

Problem: Issue #449 (LSP rename failing on TypeScript files) was listed
as `open` despite being a configuration issue.

Solution: Mark as `not actionable`. The LSP rename times out on large
TypeScript projects; increasing `lsp_file_methods.timeout_ms` resolves
it. stevearc confirmed this in the issue thread.

* docs(upstream): mark #416 fixed via cherry-picked #725

Problem: Issue #416 (case-sensitive keymap comparison preventing
remaps) was listed as `open` despite being fixed by the keymap
normalization in PR #725.

Solution: Mark as `fixed — cherry-picked (#725)`. The
`nvim_replace_termcodes` normalization in `config.lua` resolves
case variants like `<c-e>` and `<C-e>` to the same key.
2026-03-15 12:57:44 -04:00
Barrett Ruth
3a7e9f015d
docs(upstream): mark #449 not actionable (#131)
* docs(upstream): track #254 in canola.nvim#129

Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.

* docs(upstream): mark #449 not actionable

Problem: Issue #449 (LSP rename failing on TypeScript files) was listed
as `open` despite being a configuration issue.

Solution: Mark as `not actionable`. The LSP rename times out on large
TypeScript projects; increasing `lsp_file_methods.timeout_ms` resolves
it. stevearc confirmed this in the issue thread.
2026-03-15 12:54:54 -04:00
Barrett Ruth
75b630776f
docs(upstream): track #254 in canola.nvim#129 (#130)
Problem: Issue #254 (highlights lost during mid-edit) was listed as
`open`. Investigation shows a decoration provider approach can solve
this despite stevearc's extmark limitation assessment.

Solution: Created barrettruth/canola.nvim#129 with full technical
analysis and proposed `nvim_set_decoration_provider` approach. Mark
#254 as `tracked in #129`.
2026-03-15 12:53:36 -04:00
Barrett Ruth
7234be3f5c
docs(upstream): mark #570 not actionable (#128)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.

* docs(upstream): mark #707 as duplicate of #117

Problem: Issue #707 (move file/dir into new dir by renaming) was listed
as `open` despite being identical to #117. The associated draft PR #708
is already tracked separately in the PRs table.

Solution: Update status to `duplicate of #117`.

* docs(upstream): consolidate owner/group issues into #126

Problem: Three upstream issues (#436, #599, #684) all request the same
feature — owner/group columns in the directory listing.

Solution: Create canonical tracking issue barrettruth/canola.nvim#126
and mark all three as `consolidated into #126`.

* docs(upstream): mark #570 not actionable

Problem: Issue #570 (`c0`/`d0` deletes concealed entry ID prefix,
causing rename to be parsed as delete+create) was listed as `open`.

Solution: Mark as `not actionable — blocked on Neovim extmark API`.
Neovim provides no mechanism to protect concealed extmark text from
operator-pending motions. The intended rename workflow uses `cw`/`ciw`
within the constrained cursor region.
2026-03-15 12:46:57 -04:00
Barrett Ruth
a7f1c1480c
docs(upstream): consolidate owner/group issues into #126 (#127)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.

* docs(upstream): mark #707 as duplicate of #117

Problem: Issue #707 (move file/dir into new dir by renaming) was listed
as `open` despite being identical to #117. The associated draft PR #708
is already tracked separately in the PRs table.

Solution: Update status to `duplicate of #117`.

* docs(upstream): consolidate owner/group issues into #126

Problem: Three upstream issues (#436, #599, #684) all request the same
feature — owner/group columns in the directory listing.

Solution: Create canonical tracking issue barrettruth/canola.nvim#126
and mark all three as `consolidated into #126`.
2026-03-15 12:38:55 -04:00
Barrett Ruth
38680670df
docs(upstream): mark #707 as duplicate of #117 (#125)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.

* docs(upstream): mark #707 as duplicate of #117

Problem: Issue #707 (move file/dir into new dir by renaming) was listed
as `open` despite being identical to #117. The associated draft PR #708
is already tracked separately in the PRs table.

Solution: Update status to `duplicate of #117`.
2026-03-15 12:32:46 -04:00
Barrett Ruth
faa3676f46
docs(upstream): mark #675 as duplicate of #117 (#124)
* docs(upstream): mark #617 fixed via cherry-picked #618

Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.

* docs(upstream): mark #675 as duplicate of #117

Problem: Issue #675 (move file into folder by renaming) was listed as
`open` despite being a duplicate of #117, the primary tracking issue
for move-by-rename (46 upvotes). Upstream already closed #675 as such.

Solution: Update status to `duplicate of #117`.
2026-03-15 12:29:24 -04:00
Barrett Ruth
3cec3c798d
docs(upstream): mark #617 fixed via cherry-picked #618 (#123)
Problem: Issue #617 (filetype-based icon detection) was still listed as
`open` in the upstream tracker despite being addressed by PR #618.

Solution: Update status to `fixed — cherry-picked (#618)`. Verified
with manual testing that `use_slow_filetype_detection` correctly detects
shebangs in extensionless files.
2026-03-15 12:29:06 -04:00
Barrett Ruth
75dbb03c34
docs(upstream): mark #675 as duplicate of #117 (#122)
Problem: Issue #675 (move file into folder by renaming) is an exact
duplicate of #117, which is the original request with ~20 comments,
stevearc acknowledgment, and a linked POC PR #708.

Solution: Update `doc/upstream.md` to mark #675 as a duplicate of #117.
2026-03-15 11:03:11 -04:00
Barrett Ruth
e2cd1e66cf
refactor: revert canola namespace to oil and remove vim.g config (#120)
Some checks failed
quality / changes (push) Has been cancelled
test / Test (Neovim nightly) (push) Has been cancelled
test / Test (Neovim stable) (push) Has been cancelled
quality / Lua Format Check (push) Has been cancelled
quality / Lua Lint Check (push) Has been cancelled
quality / Lua Type Check (push) Has been cancelled
quality / Markdown Format Check (push) Has been cancelled
* refactor: revert module namespace from canola back to oil

Problem: the canola rename creates unnecessary friction for users
migrating from stevearc/oil.nvim — every `require('oil')` call and
config reference must change.

Solution: revert all module paths, URL schemes, autocmd groups,
highlight groups, and filetype names back to `oil`. The repo stays
`canola.nvim` for identity; the code is a drop-in replacement.

* refactor: remove `vim.g.oil` declarative config

Problem: the `vim.g.oil` configuration path was added prematurely.
It adds a second config entrypoint before the plugin has stabilized
enough to justify it.

Solution: remove `vim.g.oil` support from `plugin/oil.lua`,
`config.setup()`, docs, and tests. Users configure via
`require("oil").setup({})`.
2026-03-10 22:49:56 -04:00
Barrett Ruth
9298b48c5d
feat(api): add get_current_url() for adapter-agnostic URL access (#119)
Problem: `get_current_dir()` returns nil for non-local adapters (SSH,
S3, trash), leaving users with no public API to get the current
buffer's location.

Solution: add `get_current_url()` which returns the full canola URL
for any adapter, or nil if not in a canola buffer.

Based on: stevearc/oil.nvim#646
2026-03-10 22:21:52 -04:00
Barrett Ruth
9d29243faf
docs(upstream): mark #382 not actionable (#118)
docs(upstream): mark #382 not actionable (#482)

Problem: upstream issue #382 requests relative paths in the window
title, but this is already solved by the `get_win_title` callback
added in stevearc/oil.nvim#482.

Solution: mark the issue as not actionable in the tracker.
2026-03-10 22:21:42 -04:00
Barrett Ruth
c6d41c6d75
docs(upstream): mark #431 as duplicate of #525 (#117)
Problem: upstream issue #431 (SSH adapter documentation) is a
duplicate of #525 which covers the same request with more detail.

Solution: mark as duplicate of #525.
2026-03-09 19:25:31 -04:00
Barrett Ruth
a36c4f7fd2
docs(upstream): mark #332 not actionable (#116)
Problem: upstream issue #332 (buffer not fixed to floating window via
ctrl-o jumplist) is unresolved in our tracker.

Solution: mark as not actionable. Cannot reproduce — ctrl-o in the
float navigates back through oil directories, does not escape to file
buffers. Reported on nvim 0.10.0-dev (2023).
2026-03-09 19:20:12 -04:00
Barrett Ruth
b349d69c6d
docs(upstream): mark #435 fixed (#115)
Problem: upstream issue #435 (LSP semantic token errors on preview)
is unresolved in our tracker.

Solution: mark as fixed. Upstream PR #467 (scratch buffer previews)
was merged Nov 2024 and is already in our codebase.
2026-03-09 19:08:39 -04:00
Barrett Ruth
343f86d761
docs(upstream): revert #623 to open (#114)
Problem: #623 was marked not actionable as a cross-plugin issue, but
oil's nonstandard buffer opening (`bufadd` + manual `buflisted` +
`vim.cmd.buffer()`) may be the root cause.

Solution: revert status to open for further investigation.
2026-03-09 19:05:18 -04:00
Barrett Ruth
1d45ae35be
docs(upstream): mark #200 not actionable (#113)
Problem: upstream issue #200 (highlights not working when opening a
file) is unresolved in our tracker.

Solution: mark as not actionable. Reported on nvim 0.9.4, no recent
reports, cannot reproduce on current versions.
2026-03-09 18:59:39 -04:00
Barrett Ruth
a2445dc743
fix(ci): detect untracked upstream items regardless of number (#112)
Problem: the digest script filtered by `number > last_number`, so any
upstream item with a number below the highest tracked entry was silently
skipped.

Solution: collect the set of all tracked numbers from `doc/upstream.md`
and filter by `number not in tracked` instead. For merged PRs, also
filter by the fork's creation date via `GITHUB_REPOSITORY` to avoid
pulling in ancient pre-fork history.
2026-03-09 18:56:44 -04:00
Barrett Ruth
5a8cbf10ff
docs(upstream): mark #637 not actionable (#111)
Problem: upstream issue #637 (inconsistent symlink resolution) is
unresolved in our tracker.

Solution: mark as not actionable. Reporter confirmed the issue does
not reproduce on stable neovim (v0.11.2), only on nightly.
2026-03-09 18:45:22 -04:00
Barrett Ruth
68c4a1b0c7
docs(upstream): mark #636 not actionable (#110)
Problem: upstream issue #636 (Telescope picker opens file in wrong
split) is unresolved in our tracker.

Solution: mark as not actionable. Cannot reproduce with default
Telescope configuration — file correctly opens in the active canola
split. Likely user-specific Telescope config or window picker plugin.
2026-03-09 18:12:30 -04:00
Barrett Ruth
c7b905137c
fix: make parent action a no-op at filesystem root (#109)
Problem: at the filesystem root (`/`), `actions.parent` triggers a
full `vim.cmd.edit()` and async re-render cycle even though the parent
of `/` is `/`.

Solution: in `canola.open()`, return early when `parent_url` equals
the current buffer name.

Closes #108.
2026-03-09 18:05:04 -04:00
Barrett Ruth
39374ee99b
fix(select): redraw screen after buffer switch (#106)
* fix(select): redraw screen after buffer switch

Problem: `select` opens files inside a `vim.schedule_wrap` callback
from `normalize_url`. Scheduled `FileType` autocmds (e.g. treesitter
parsing) queue onto the same batch, blocking the screen update. The
oil buffer stays visible until the heavy work finishes.

Solution: call `vim.cmd.redraw()` after the buffer switch to flush
the screen before any queued scheduled callbacks run. Matches the
behavior of plain `:e`.

* docs(upstream): mark #699 fixed (#106)
2026-03-09 17:40:19 -04:00
Barrett Ruth
03c2ac4bd5
docs(upstream): mark #609 not actionable (#105)
docs(upstream): mark #609 not actionable (#105)

Problem: upstream issue #609 (cursor not placed on file when jumped
via Snacks.nvim picker) is confirmed Windows-only by multiple
reporters. stevearc cannot reproduce on Linux.

Solution: mark as not actionable in the upstream tracker.
2026-03-09 17:17:40 -04:00
Barrett Ruth
c42c087ffb
docs(upstream): revert #736 to open (#104) 2026-03-08 19:12:32 -04:00
Barrett Ruth
7b140a7f40
docs(upstream): mark #736 not actionable (#103) 2026-03-08 19:08:31 -04:00
Barrett Ruth
21d9ef0c1d
docs(upstream): mark #685 not actionable (#102) 2026-03-08 19:08:17 -04:00
Barrett Ruth
f7970e1c1c
docs(upstream): mark #671 not actionable (#101) 2026-03-08 19:08:03 -04:00
Barrett Ruth
514d12a437
docs(upstream): mark #668 not actionable (#100) 2026-03-08 19:07:51 -04:00
Barrett Ruth
379c72a2bc
docs(upstream): mark #665 not actionable (#99) 2026-03-08 19:06:14 -04:00
Barrett Ruth
725dec0185
docs(upstream): mark #294 not actionable (#98) 2026-03-08 19:05:58 -04:00
Barrett Ruth
70364d1667
docs(upstream): mark #276 not actionable (#97) 2026-03-08 19:05:37 -04:00
Barrett Ruth
01a7b891ad
docs(upstream): mark #226 not actionable (#96) 2026-03-08 19:05:21 -04:00
Barrett Ruth
3249bbfaa7
docs(upstream): mark #207 fixed (#94) 2026-03-08 16:03:05 -04:00
Barrett Ruth
425a53d2fa
fix(view): constrain cursor in insert mode (#93)
Problem: `constrain_cursor` only fired on `CursorMoved` and
`ModeChanged`, so arrow key navigation in insert mode could move
the cursor into the concealed ID prefix area.

Solution: add `CursorMovedI` to the autocmd event list. The
`constrain_cursor()` function is already mode-agnostic.
2026-03-08 16:02:09 -04:00
Barrett Ruth
c972bbe9c4
docs(upstream): mark #359 not actionable (#92) 2026-03-08 16:00:31 -04:00
Barrett Ruth
ac48ce20f5
docs(upstream): collapse issue sections into single table (#91)
Problem: issues were split across four separate sections by status,
requiring moves between sections on every status change.

Solution: merge all issues into one `## Issues` table sorted by number
with an inline status column. Update digest script heading and row
format to match.
2026-03-08 15:52:25 -04:00
Barrett Ruth
0424ab3e65
fix(ci): update digest script for reorganized upstream tracker (#90)
Problem: the upstream digest script referenced old section headings
(`## Open upstream PRs`, `## Upstream issues`) and a 3-column issue
row format that no longer exist after the tracker reorganization.

Solution: update headings to `## Upstream PRs` and `## Issues — open`,
and change issue row format to the new 2-column layout.
2026-03-08 15:44:32 -04:00