Problem: issues #288 and #726 had their justifications in the
description column instead of the status column, leaving the status
as bare `not actionable` with no reason.
Solution: move justifications into the status column and replace
descriptions with the actual upstream issue titles.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
* 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`.
* 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): 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.
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 #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.
* 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 #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): 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`.
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.
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.
* 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({})`.
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
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.
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.
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).
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.
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.
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.
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.
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.
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.
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.
* 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)
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.
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.
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.