pending.nvim/spec
Barrett Ruth 6b23e6810e feat: add <C-a> / <C-x> keymaps for priority increment/decrement (#114)
* feat(s3): create bucket interactively during auth when unconfigured

Problem: when a user runs `:Pending s3 auth` with no bucket configured,
auth succeeds but offers no way to create the bucket. The user must
manually run `aws s3api create-bucket` and update their config.

Solution: add `util.input()` coroutine-aware prompt wrapper and a
`create_bucket()` flow in `s3.lua` that prompts for bucket name and
region, handles the `us-east-1` LocationConstraint quirk, and logs a
config snippet on success. Called automatically from `auth()` when
`sync.s3.bucket` is absent.

* ci: typing

* feat(parse): add `parse_duration_to_days` for duration string conversion

Problem: The archive command accepted only a bare integer for days,
inconsistent with the `+Nd`/`+Nw`/`+Nm` duration syntax used elsewhere.

Solution: Add `parse_duration_to_days()` supporting `Nd`, `Nw`, `Nm`,
and bare integers. Returns nil on invalid input for caller error handling.

* feat(archive): duration syntax and confirmation prompt

Problem: `:Pending archive` accepted only a bare integer for days and
silently deleted tasks with no confirmation, risking accidental data loss.

Solution: Accept duration strings (`7d`, `3w`, `2m`) via
`parse.parse_duration_to_days()`, show a `vim.ui.input` confirmation
prompt before removing tasks, and skip the prompt when zero tasks match.

* feat: add `<C-a>` / `<C-x>` keymaps for priority increment/decrement

Problem: Priority could only be cycled with `g!` (0→1→2→3→0), with no
way to directly increment or decrement.

Solution: Add `adjust_priority()` with clamping at 0 and `max_priority`,
exposed as `increment_priority()` / `decrement_priority()` on `<C-a>` /
`<C-x>`. Includes `<Plug>` mappings and vimdoc.

* fix(s3): use parenthetical defaults in bucket creation prompts

Problem: `util.input` with `default` pre-filled the input field, and
the success message said "Add to your config" ambiguously.

Solution: Show defaults in prompt text as `(default)` instead of
pre-filling, and clarify the message to "Add to your pending.nvim
config".

* ci: format
2026-03-08 20:49:05 -04:00
..
archive_spec.lua feat(archive): duration syntax and confirmation prompt (#113) 2026-03-08 20:28:06 -04:00
complete_spec.lua refactor(config): remove legacy gcal top-level config key (#51) 2026-02-26 22:53:51 -05:00
diff_spec.lua fix(diff): preserve due/rec when absent from buffer line (#68) 2026-03-05 12:46:54 -05:00
edit_spec.lua refactor: organize tests and dry (#49) 2026-02-26 20:03:42 -05:00
filter_spec.lua refactor: organize tests and dry (#49) 2026-02-26 20:03:42 -05:00
gtasks_spec.lua feat(sync): diff metadata preservation, auth unification, and sync quality improvements (#74) 2026-03-05 22:40:19 -05:00
helpers.lua test: add store, parse, and diff specs 2026-02-24 15:10:09 -05:00
icons_spec.lua refactor(icons): ascii defaults, checkbox overlays, and cleanup (#57) 2026-03-04 18:44:41 -05:00
oauth_spec.lua fix(oauth): resolve re-auth deadlock and improve flow robustness (#87) 2026-03-06 15:47:42 -05:00
parse_spec.lua feat(archive): duration syntax and confirmation prompt (#113) 2026-03-08 20:28:06 -04:00
recur_spec.lua feat: omnifunc completion, recurring tasks, expanded date syntax (#27) 2026-02-25 13:27:52 -05:00
s3_spec.lua feat: add <C-a> / <C-x> keymaps for priority increment/decrement (#114) 2026-03-08 20:49:05 -04:00
status_spec.lua refactor: organize tests and dry (#49) 2026-02-26 20:03:42 -05:00
store_spec.lua feat(buffer): persist fold state across sessions (#94) 2026-03-07 20:18:34 -05:00
sync_spec.lua feat: auth backend (#111) 2026-03-08 19:53:42 -04:00
sync_util_spec.lua feat(sync): s3 backend (#112) 2026-03-08 20:20:16 -04:00
textobj_spec.lua feat: text objects and motions for the pending buffer (#39) 2026-02-26 16:28:58 -05:00
views_spec.lua feat: auth backend (#111) 2026-03-08 19:53:42 -04:00