Prepare 2.3.0 release candidate
Some checks failed
test / startup (macos-latest) (push) Has been cancelled
test / startup (ubuntu-latest) (push) Has been cancelled
test / shellcheck (push) Has been cancelled
test / docs (push) Has been cancelled

This commit is contained in:
m1ngsama 2026-05-24 15:38:44 +08:00
parent 16c1974e1a
commit 3507945b78
13 changed files with 94 additions and 93 deletions

26
BETA.md
View file

@ -1,23 +1,23 @@
# Beta Testing # 2.3.0 Release Candidate Testing
This branch is the v3 beta candidate. The goal is to prove that the Space This branch is the 2.3.0 release candidate. The goal is to prove that the Space
layout can serve as a long-term project loop for experienced Vim users, not layout can serve as the project loop for experienced Vim users, not just that
just that the mappings work in isolation. Do not tag or publish it as `v3.0.0` the mappings work in isolation. Do not tag or publish it as `2.3.0` until the
until the checklist below is closed. checklist below is closed.
Inside Vim, run `:ChopsticksBeta` for the compact checklist, Inside Vim, run `:ChopsticksBeta` for the compact checklist,
`:ChopsticksBetaLog` for editable local notes, and `:ChopsticksBetaSession` `:ChopsticksBetaLog` for editable local notes, and `:ChopsticksBetaSession`
to append a new session block. Run `:ChopsticksHelp` or `:help chopsticks` to append a new session block. Run `:ChopsticksHelp` or `:help chopsticks`
for the native Vim reference. for the native Vim reference.
## Install the beta ## Install the release candidate
Existing checkout: Existing checkout:
```bash ```bash
cd ~/.vim cd ~/.vim
git fetch origin git fetch origin
git checkout release/v3-candidate git checkout release/2.3.0
git pull --ff-only git pull --ff-only
vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!' vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!'
``` ```
@ -25,7 +25,7 @@ vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!'
Fresh checkout: Fresh checkout:
```bash ```bash
git clone --branch release/v3-candidate https://github.com/m1ngsama/chopsticks.git ~/.vim git clone --branch release/2.3.0 https://github.com/m1ngsama/chopsticks.git ~/.vim
ln -sf ~/.vim/.vimrc ~/.vimrc ln -sf ~/.vim/.vimrc ~/.vimrc
vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!' vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!'
``` ```
@ -42,9 +42,9 @@ reloads chopsticks after saving it.
## Daily test loop ## Daily test loop
Use the beta for real editing, not only demos. A session should exercise the Use the release candidate for real editing, not only demos. A session should
trained loop until it either feels automatic or exposes friction. For each exercise the trained loop until it either feels automatic or exposes friction.
session, record: For each session, record:
- The task: project navigation, code edit, grep, git, LSP, Markdown, SSH. - The task: project navigation, code edit, grep, git, LSP, Markdown, SSH.
- The first key you tried when you got stuck. - The first key you tried when you got stuck.
@ -52,7 +52,7 @@ session, record:
- Any mapping that felt slow, awkward, surprising, or too easy to mistype. - Any mapping that felt slow, awkward, surprising, or too easy to mistype.
- Any documentation line that was wrong, missing, or redundant. - Any documentation line that was wrong, missing, or redundant.
`:ChopsticksBetaLog` opens `${XDG_CONFIG_HOME:-~/.config}/chopsticks-beta.md` `:ChopsticksBetaLog` opens `${XDG_CONFIG_HOME:-~/.config}/chopsticks-2.3.0.md`
by default. Set `g:chopsticks_beta_log` before loading chopsticks to use a by default. Set `g:chopsticks_beta_log` before loading chopsticks to use a
different path. Use `:ChopsticksBetaSession` at the start of each real editing different path. Use `:ChopsticksBetaSession` at the start of each real editing
session so every test has a timestamped block. session so every test has a timestamped block.
@ -84,7 +84,7 @@ file, edit Markdown, and use a machine with missing optional tools.
- `scripts/test.sh quick` and `scripts/test.sh vim` pass locally. - `scripts/test.sh quick` and `scripts/test.sh vim` pass locally.
- The README GIF has been regenerated from `.github/demo.tape` after any public - The README GIF has been regenerated from `.github/demo.tape` after any public
key change. key change.
- The beta has been tested on macOS and over SSH on Linux. - The release candidate has been tested on macOS and over SSH on Linux.
## Roll back ## Roll back

View file

@ -1,6 +1,6 @@
# Changelog # Changelog
## 3.0.0-beta.1 — 2026-05-23 ## 2.3.0 — 2026-05-24
### Breaking ### Breaking
@ -17,7 +17,7 @@
### Added ### Added
- Canonical QWERTY/CapsLock-friendly Space leader layout: - Canonical QWERTY/CapsLock-friendly Space leader layout:
`SPC SPC`, `SPC /`, `SPC ,`, `SPC w`, `SPC qx`, `SPC rr`, `SPC SPC`, `SPC /`, `SPC ,`, `SPC w`, `SPC q`, `SPC rr`,
`SPC gs`, `SPC gl`, `SPC ca`, `SPC cr`, `SPC cf`, and `SPC ?` `SPC gs`, `SPC gl`, `SPC ca`, `SPC cr`, `SPC cf`, and `SPC ?`
- Native LSP motions in the default layout: `gd`, `gr`, `gI`, `gy`, `K`, - Native LSP motions in the default layout: `gd`, `gr`, `gI`, `gy`, `K`,
`[d`, and `]d` `[d`, and `]d`
@ -28,9 +28,9 @@
- `:ChopsticksConfig` and `:ChopsticksReload` for editing local preferences - `:ChopsticksConfig` and `:ChopsticksReload` for editing local preferences
without touching the managed `.vimrc` without touching the managed `.vimrc`
- `:ChopsticksBeta`, `:ChopsticksBetaLog`, and `:ChopsticksBetaSession` for - `:ChopsticksBeta`, `:ChopsticksBetaLog`, and `:ChopsticksBetaSession` for
guided beta testing and local session notes guided release-candidate testing and local session notes
- Dedicated modules for buffers, utilities, files, runner, quickfix, status, - Dedicated modules for buffers, utilities, files, runner, quickfix, status,
cheat sheet, tutor, beta testing, and help cheat sheet, tutor, release-candidate testing, and help
- Split test runner: `scripts/test.sh` now dispatches to - Split test runner: `scripts/test.sh` now dispatches to
`scripts/test-quick.sh` and `scripts/test-vim.sh` `scripts/test-quick.sh` and `scripts/test-vim.sh`

View file

@ -9,8 +9,8 @@ check git, and ask Vim which keys are active.
## Install ## Install
These commands install the stable `main` branch. For beta testing this branch, These commands install current `main`. For the 2.3.0 release-candidate
use [BETA.md](BETA.md). checklist and rollback steps, use [BETA.md](BETA.md).
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash
@ -60,7 +60,8 @@ SPC ? show the active keymap
``` ```
Esc back to Normal Esc back to Normal
SPC w save SPC w save
SPC qx save + quit SPC q quit current window
:x / ZZ save + quit
:q! force quit :q! force quit
SPC ? cheat sheet (toggle sidebar) SPC ? cheat sheet (toggle sidebar)
SPC fc edit local preferences SPC fc edit local preferences
@ -167,5 +168,5 @@ The `SPC ?` cheat sheet follows your active profile, so `minimal` users only see
keys for features that are actually loaded. keys for features that are actually loaded.
Inside Vim, `:help chopsticks` opens the same reference after helptags are Inside Vim, `:help chopsticks` opens the same reference after helptags are
available. See [README](README.md) for the full reference. For beta testing and available. See [README](README.md) for the full reference. For release-candidate
rollback, see [BETA.md](BETA.md). testing and rollback, see [BETA.md](BETA.md).

View file

@ -20,15 +20,14 @@
--- ---
Stable install from `main`: Install current `main`:
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash
``` ```
This branch is a v3 beta candidate, not a tagged stable release. Use Current `main` is preparing the 2.3.0 release. Use [BETA.md](BETA.md) for the
[BETA.md](BETA.md) instead of the stable install command when testing the Space release-candidate checklist, rollback steps, and Space keymap test loop.
keymap before promotion.
--- ---
@ -79,8 +78,8 @@ chopsticks gives you a production-ready Vim config in one command. Pure VimScrip
## Install ## Install
These commands install the stable `main` branch. For beta testing this branch, These commands install current `main`. For the 2.3.0 release-candidate
use [BETA.md](BETA.md). checklist and rollback steps, use [BETA.md](BETA.md).
```bash ```bash
curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash
@ -156,9 +155,9 @@ for the active keymap, `:ChopsticksHelp` / `:help chopsticks` for full native
Vim help, `:ChopsticksConfig` for local preferences, and `:ChopsticksStatus` Vim help, `:ChopsticksConfig` for local preferences, and `:ChopsticksStatus`
for tool/LSP health. for tool/LSP health.
`QUICKSTART.md` is the 5-minute path; this README is the full reference. `QUICKSTART.md` is the 5-minute path; this README is the full reference.
During the beta, `:ChopsticksBeta` opens the in-editor test checklist, During release-candidate testing, `:ChopsticksBeta` opens the in-editor
`:ChopsticksBetaLog` opens editable local notes, and `:ChopsticksBetaSession` checklist, `:ChopsticksBetaLog` opens editable local notes, and
appends a timestamped session block. `:ChopsticksBetaSession` appends a timestamped session block.
``` ```
SPC SPC fuzzy find file gd go to definition SPC SPC fuzzy find file gd go to definition
@ -166,7 +165,7 @@ SPC / ripgrep project K hover docs
SPC e toggle file sidebar SPC rr run current file SPC e toggle file sidebar SPC rr run current file
Ctrl-h/l enter/leave sidebar Ctrl-hjkl windows Ctrl-h/l enter/leave sidebar Ctrl-hjkl windows
SPC gs git status SPC cf format SPC gs git status SPC cf format
SPC w save SPC qq quit SPC w save SPC q quit
Esc exit insert mode SPC ? cheat sheet Esc exit insert mode SPC ? cheat sheet
:ChopsticksConfig local prefs :ChopsticksReload reload :ChopsticksConfig local prefs :ChopsticksReload reload
``` ```
@ -212,7 +211,7 @@ Esc exit insert mode SPC ? cheat sheet
### Survival ### Survival
`SPC w` save | `SPC W` save all | `SPC qq` quit | `SPC qx` save and quit | `SPC fc` local config | `SPC fV` reload | `SPC ?` cheat sheet | `:ChopsticksHelp` full help | `:ChopsticksTutor` practice | `:ChopsticksStatus` diagnostics `SPC w` save | `SPC W` save all | `SPC q` quit | `:x` / `ZZ` save and quit | `SPC fc` local config | `SPC fV` reload | `SPC ?` cheat sheet | `:ChopsticksHelp` full help | `:ChopsticksTutor` practice | `:ChopsticksStatus` diagnostics
</details> </details>
@ -317,7 +316,7 @@ For Markdown LSP, install or select `marksman` first.
├── status.vim :ChopsticksStatus diagnostics ├── status.vim :ChopsticksStatus diagnostics
├── cheatsheet.vim SPC ? and :ChopsticksCheatSheet ├── cheatsheet.vim SPC ? and :ChopsticksCheatSheet
├── tutor.vim :ChopsticksTutor guided practice ├── tutor.vim :ChopsticksTutor guided practice
├── beta.vim :ChopsticksBeta test guide ├── beta.vim :ChopsticksBeta release checklist
├── help.vim :ChopsticksHelp native Vim help ├── help.vim :ChopsticksHelp native Vim help
└── tools.vim compatibility placeholder └── tools.vim compatibility placeholder
``` ```

View file

@ -5,10 +5,10 @@ CONTENTS *chopsticks-contents
1. What chopsticks solves...............|chopsticks-why| 1. What chopsticks solves...............|chopsticks-why|
2. First five minutes...................|chopsticks-start| 2. First five minutes...................|chopsticks-start|
3. Canonical Space layout...............|chopsticks-v3-space| 3. Canonical Space layout...............|chopsticks-space|
4. Commands.............................|chopsticks-commands| 4. Commands.............................|chopsticks-commands|
5. Profiles and local config............|chopsticks-profiles| 5. Profiles and local config............|chopsticks-profiles|
6. Beta testing.........................|chopsticks-beta| 6. Release testing......................|chopsticks-release-test|
7. Troubleshooting......................|chopsticks-troubleshooting| 7. Troubleshooting......................|chopsticks-troubleshooting|
============================================================================== ==============================================================================
@ -41,11 +41,11 @@ Daily loop:
s + 2ch jump on screen gd / gr definition / references s + 2ch jump on screen gd / gr definition / references
K hover docs SPC rr run current file K hover docs SPC rr run current file
SPC gs git status SPC cf format SPC gs git status SPC cf format
SPC w save SPC qq quit SPC w save SPC q quit
< <
============================================================================== ==============================================================================
CANONICAL SPACE LAYOUT *chopsticks-v3-space* CANONICAL SPACE LAYOUT *chopsticks-space*
Default layout: Space leader, comma localleader. Default layout: Space leader, comma localleader.
@ -85,9 +85,9 @@ User-facing commands:
:ChopsticksTutor guided practice :ChopsticksTutor guided practice
:ChopsticksCheatSheet active keymap reference :ChopsticksCheatSheet active keymap reference
:ChopsticksStatus health diagnostics :ChopsticksStatus health diagnostics
:ChopsticksBeta beta checklist :ChopsticksBeta release checklist
:ChopsticksBetaLog editable beta notes :ChopsticksBetaLog editable release notes
:ChopsticksBetaSession append a timestamped beta note block :ChopsticksBetaSession append a timestamped release note block
< <
LSP commands come from vim-lsp: LSP commands come from vim-lsp:
@ -131,19 +131,19 @@ Optional habits:
< <
============================================================================== ==============================================================================
BETA TESTING *chopsticks-beta* RELEASE TESTING *chopsticks-release-test*
For the v3 beta candidate, record real editing friction instead of abstract For the 2.3.0 release candidate, record real editing friction instead of
opinions: abstract opinions:
> >
:ChopsticksBeta compact beta checklist :ChopsticksBeta compact release checklist
:ChopsticksBetaLog open editable local notes :ChopsticksBetaLog open editable local notes
:ChopsticksBetaSession append a new session block :ChopsticksBetaSession append a new session block
< <
Default beta log: Default release log:
> >
${XDG_CONFIG_HOME:-~/.config}/chopsticks-beta.md ${XDG_CONFIG_HOME:-~/.config}/chopsticks-2.3.0.md
< <
Exit criteria before a stable release: Exit criteria before a stable release:
@ -174,7 +174,7 @@ Common fixes:
Need full docs :help chopsticks Need full docs :help chopsticks
Need local config :ChopsticksConfig Need local config :ChopsticksConfig
Changed local config :ChopsticksReload Changed local config :ChopsticksReload
Need beta notes :ChopsticksBetaSession Need release notes :ChopsticksBetaSession
Slow large file Syntax, undo, swap, and ALE are auto-reduced Slow large file Syntax, undo, swap, and ALE are auto-reduced
============================================================================== ==============================================================================

View file

@ -1223,7 +1223,8 @@ echo ""
echo -e "${BOLD} First steps inside Vim${NC}" echo -e "${BOLD} First steps inside Vim${NC}"
echo -e " ${CYAN}SPC ?${NC} Open cheat sheet — your map of every keybinding" echo -e " ${CYAN}SPC ?${NC} Open cheat sheet — your map of every keybinding"
echo -e " ${CYAN}Esc${NC} Exit insert mode → back to Normal" echo -e " ${CYAN}Esc${NC} Exit insert mode → back to Normal"
echo -e " ${CYAN}SPC qx${NC} Save and quit" echo -e " ${CYAN}SPC q${NC} Quit current window"
echo -e " ${CYAN}:x${NC} / ${CYAN}ZZ${NC} Save and quit"
echo -e " ${CYAN}:q!${NC} + Enter Emergency quit without saving" echo -e " ${CYAN}:q!${NC} + Enter Emergency quit without saving"
if [[ $CONFIG_PROFILE != "minimal" ]]; then if [[ $CONFIG_PROFILE != "minimal" ]]; then
echo -e " ${CYAN}:LspInstallServer${NC} Install LSP for current filetype" echo -e " ${CYAN}:LspInstallServer${NC} Install LSP for current filetype"

View file

@ -1,6 +1,6 @@
" beta.vim — in-editor beta test guide " beta.vim — in-editor release-candidate checklist
let g:chopsticks_beta_label = get(g:, 'chopsticks_beta_label', '3.0.0-beta.1') let g:chopsticks_beta_label = get(g:, 'chopsticks_beta_label', '2.3.0')
function! s:OpenBetaGuide() abort function! s:OpenBetaGuide() abort
let l:name = '__ChopsticksBeta__' let l:name = '__ChopsticksBeta__'
@ -15,12 +15,12 @@ function! s:OpenBetaGuide() abort
setlocal nowrap nonumber norelativenumber signcolumn=no setlocal nowrap nonumber norelativenumber signcolumn=no
let l:lines = [ let l:lines = [
\ ' chopsticks beta q close', \ ' chopsticks 2.3.0 q close',
\ ' ─────────────────────────────', \ ' ─────────────────────────────',
\ '', \ '',
\ ' goal', \ ' goal',
\ ' Prove this can be a long-term project loop.', \ ' Prove this can be the long-term project loop.',
\ ' Record real editing friction, not abstract taste.', \ ' Record real editing friction before release.',
\ '', \ '',
\ ' daily loop', \ ' daily loop',
\ ' SPC SPC find file', \ ' SPC SPC find file',
@ -49,8 +49,8 @@ function! s:OpenBetaGuide() abort
\ ' quick/vim tests pass locally and over SSH', \ ' quick/vim tests pass locally and over SSH',
\ '', \ '',
\ ' files', \ ' files',
\ ' BETA.md full beta checklist and rollback', \ ' BETA.md release checklist and rollback',
\ ' :ChopsticksBetaLog editable local beta notes', \ ' :ChopsticksBetaLog editable local release notes',
\ ' :ChopsticksBetaSession append a new session block', \ ' :ChopsticksBetaSession append a new session block',
\ ' QUICKSTART.md five-minute path', \ ' QUICKSTART.md five-minute path',
\ ' README.md complete reference', \ ' README.md complete reference',
@ -71,7 +71,7 @@ function! s:BetaLogPath() abort
let l:xdg = !empty($XDG_CONFIG_HOME) && $XDG_CONFIG_HOME =~# '^/' let l:xdg = !empty($XDG_CONFIG_HOME) && $XDG_CONFIG_HOME =~# '^/'
\ ? $XDG_CONFIG_HOME \ ? $XDG_CONFIG_HOME
\ : '~/.config' \ : '~/.config'
return expand(l:xdg . '/chopsticks-beta.md') return expand(l:xdg . '/chopsticks-2.3.0.md')
endfunction endfunction
function! s:SessionBlock() abort function! s:SessionBlock() abort
@ -96,9 +96,9 @@ function! s:EnsureBetaLog(path) abort
if !filereadable(l:path) if !filereadable(l:path)
call writefile([ call writefile([
\ '# chopsticks beta log', \ '# chopsticks 2.3.0 release log',
\ '', \ '',
\ 'Use :ChopsticksBeta for the checklist. Keep one session block per real editing session.', \ 'Use :ChopsticksBeta for the release checklist. Keep one session block per real editing session.',
\ ] + s:SessionBlock(), l:path) \ ] + s:SessionBlock(), l:path)
endif endif
endfunction endfunction

View file

@ -147,8 +147,8 @@ function! s:CheatSheet() abort
\ ' ── survival ──────────────', \ ' ── survival ──────────────',
\ ' SPC w save', \ ' SPC w save',
\ ' SPC W save all', \ ' SPC W save all',
\ ' SPC qq quit', \ ' SPC q quit',
\ ' SPC qx save + quit', \ ' :x / ZZ save + quit',
\ ' Esc exit insert', \ ' Esc exit insert',
\ ' SPC fc edit local config', \ ' SPC fc edit local config',
\ ' SPC fv edit vimrc', \ ' SPC fv edit vimrc',
@ -158,9 +158,9 @@ function! s:CheatSheet() abort
\ ' :ChopsticksReload reload config', \ ' :ChopsticksReload reload config',
\ ' :ChopsticksTutor practice', \ ' :ChopsticksTutor practice',
\ ' :ChopsticksStatus health', \ ' :ChopsticksStatus health',
\ ' :ChopsticksBeta beta test guide', \ ' :ChopsticksBeta release checklist',
\ ' :ChopsticksBetaLog beta notes', \ ' :ChopsticksBetaLog release notes',
\ ' :ChopsticksBetaSession new beta note', \ ' :ChopsticksBetaSession new release note',
\ ]) \ ])
call s:OpenCheatSheet(l:lines) call s:OpenCheatSheet(l:lines)
@ -280,9 +280,9 @@ function! s:CheatSheet() abort
\ ' :ChopsticksReload reload config', \ ' :ChopsticksReload reload config',
\ ' :ChopsticksTutor practice', \ ' :ChopsticksTutor practice',
\ ' :ChopsticksStatus health', \ ' :ChopsticksStatus health',
\ ' :ChopsticksBeta beta test guide', \ ' :ChopsticksBeta release checklist',
\ ' :ChopsticksBetaLog beta notes', \ ' :ChopsticksBetaLog release notes',
\ ' :ChopsticksBetaSession new beta note', \ ' :ChopsticksBetaSession new release note',
\ ]) \ ])
call s:OpenCheatSheet(l:lines) call s:OpenCheatSheet(l:lines)

View file

@ -106,8 +106,7 @@ endif
if g:chopsticks_space_keymaps if g:chopsticks_space_keymaps
nnoremap <leader>w :w<cr> nnoremap <leader>w :w<cr>
nnoremap <leader>W :wa<cr> nnoremap <leader>W :wa<cr>
nnoremap <leader>qq :q<cr> nnoremap <leader>q :q<cr>
nnoremap <leader>qx :x<cr>
nnoremap <silent> <leader>uh :noh<cr> nnoremap <silent> <leader>uh :noh<cr>

View file

@ -77,7 +77,7 @@ function! s:BetaLogPath() abort
let l:xdg = !empty($XDG_CONFIG_HOME) && $XDG_CONFIG_HOME =~# '^/' let l:xdg = !empty($XDG_CONFIG_HOME) && $XDG_CONFIG_HOME =~# '^/'
\ ? $XDG_CONFIG_HOME \ ? $XDG_CONFIG_HOME
\ : '~/.config' \ : '~/.config'
return expand(l:xdg . '/chopsticks-beta.md') return expand(l:xdg . '/chopsticks-2.3.0.md')
endfunction endfunction
function! s:LocalConfigPath() abort function! s:LocalConfigPath() abort
@ -99,7 +99,7 @@ function! s:ChopsticksStatus() abort
call add(l:lines, '') call add(l:lines, '')
if !empty(get(g:, 'chopsticks_beta_label', '')) if !empty(get(g:, 'chopsticks_beta_label', ''))
call add(l:lines, '── beta ──') call add(l:lines, '── release candidate ──')
call add(l:lines, ' candidate ' . g:chopsticks_beta_label) call add(l:lines, ' candidate ' . g:chopsticks_beta_label)
call add(l:lines, ' keymap ' . (get(g:, 'chopsticks_space_keymaps', 0) ? 'space' : 'classic')) call add(l:lines, ' keymap ' . (get(g:, 'chopsticks_space_keymaps', 0) ? 'space' : 'classic'))
call add(l:lines, ' log ' . s:BetaLogPath()) call add(l:lines, ' log ' . s:BetaLogPath())

View file

@ -38,15 +38,16 @@ function! s:ChopsticksTutor() abort
\ ' 2. survival', \ ' 2. survival',
\ ' Esc Normal mode', \ ' Esc Normal mode',
\ ' SPC w save', \ ' SPC w save',
\ ' SPC qx save and quit', \ ' SPC q quit',
\ ' :x / ZZ save and quit',
\ ' SPC fc edit local config', \ ' SPC fc edit local config',
\ ' SPC fV reload config', \ ' SPC fV reload config',
\ ' :ChopsticksHelp full help', \ ' :ChopsticksHelp full help',
\ ' :ChopsticksConfig local config', \ ' :ChopsticksConfig local config',
\ ' :ChopsticksReload reload config', \ ' :ChopsticksReload reload config',
\ ' :ChopsticksStatus health check', \ ' :ChopsticksStatus health check',
\ ' :ChopsticksBeta beta checklist', \ ' :ChopsticksBeta release checklist',
\ ' :ChopsticksBetaLog beta notes', \ ' :ChopsticksBetaLog release notes',
\ ' :ChopsticksBetaSession new note', \ ' :ChopsticksBetaSession new note',
\ '', \ '',
\ ' 3. find and switch', \ ' 3. find and switch',
@ -118,8 +119,8 @@ function! s:ChopsticksTutor() abort
\ ' :ChopsticksConfig local config', \ ' :ChopsticksConfig local config',
\ ' :ChopsticksReload reload config', \ ' :ChopsticksReload reload config',
\ ' :ChopsticksStatus health check', \ ' :ChopsticksStatus health check',
\ ' :ChopsticksBeta beta checklist', \ ' :ChopsticksBeta release checklist',
\ ' :ChopsticksBetaLog beta notes', \ ' :ChopsticksBetaLog release notes',
\ ' :ChopsticksBetaSession new note', \ ' :ChopsticksBetaSession new note',
\ ' README.md full reference', \ ' README.md full reference',
\ ' QUICKSTART.md 5-minute path', \ ' QUICKSTART.md 5-minute path',

View file

@ -42,7 +42,7 @@ check_docs() {
done done
done done
grep -Fq '*chopsticks.txt*' doc/chopsticks.txt grep -Fq '*chopsticks.txt*' doc/chopsticks.txt
grep -Fq '*chopsticks-v3-space*' doc/chopsticks.txt grep -Fq '*chopsticks-space*' doc/chopsticks.txt
grep -Fq 'command! ChopsticksHelp' modules/help.vim grep -Fq 'command! ChopsticksHelp' modules/help.vim
grep -Fq 'command! ChopsticksConfig' modules/utilities.vim grep -Fq 'command! ChopsticksConfig' modules/utilities.vim
grep -Fq 'command! ChopsticksReload' modules/utilities.vim grep -Fq 'command! ChopsticksReload' modules/utilities.vim

View file

@ -53,7 +53,7 @@ check_vim() {
vim -u "$TMP_ROOT/chopsticks path/.vimrc" -i NONE -es -N \ vim -u "$TMP_ROOT/chopsticks path/.vimrc" -i NONE -es -N \
-c 'ChopsticksHelp' \ -c 'ChopsticksHelp' \
-c 'if expand("%:t") !=# "chopsticks.txt" | cquit | endif' \ -c 'if expand("%:t") !=# "chopsticks.txt" | cquit | endif' \
-c 'if search("chopsticks-v3-space", "n") == 0 | cquit | endif' \ -c 'if search("chopsticks-space", "n") == 0 | cquit | endif' \
-c 'qa!' 2>&1 -c 'qa!' 2>&1
XDG_CONFIG_HOME="$EMPTY_XDG" vim -u NONE -i NONE -es -N \ XDG_CONFIG_HOME="$EMPTY_XDG" vim -u NONE -i NONE -es -N \
@ -101,11 +101,11 @@ check_vim() {
grep -Fq 'OK vim-lsp stack (installed)' "$TMP_ROOT/status-default.txt" grep -Fq 'OK vim-lsp stack (installed)' "$TMP_ROOT/status-default.txt"
grep -Fq 'help :ChopsticksHelp :ChopsticksTutor SPC ?' "$TMP_ROOT/status-default.txt" grep -Fq 'help :ChopsticksHelp :ChopsticksTutor SPC ?' "$TMP_ROOT/status-default.txt"
grep -Fq 'commands :ChopsticksConfig :ChopsticksReload' "$TMP_ROOT/status-default.txt" grep -Fq 'commands :ChopsticksConfig :ChopsticksReload' "$TMP_ROOT/status-default.txt"
grep -Fq 'candidate 3.0.0-beta.1' "$TMP_ROOT/status-default.txt" grep -Fq 'candidate 2.3.0' "$TMP_ROOT/status-default.txt"
grep -Fq 'keymap space' "$TMP_ROOT/status-default.txt" grep -Fq 'keymap space' "$TMP_ROOT/status-default.txt"
grep -Fq 'commands :ChopsticksBeta :ChopsticksBetaLog' "$TMP_ROOT/status-default.txt" grep -Fq 'commands :ChopsticksBeta :ChopsticksBetaLog' "$TMP_ROOT/status-default.txt"
grep -Fq ':ChopsticksBetaSession' "$TMP_ROOT/status-default.txt" grep -Fq ':ChopsticksBetaSession' "$TMP_ROOT/status-default.txt"
grep -Fq 'chopsticks-beta.md' "$TMP_ROOT/status-default.txt" grep -Fq 'chopsticks-2.3.0.md' "$TMP_ROOT/status-default.txt"
grep -Fq 'python (:LspInstallServer in a python file)' "$TMP_ROOT/status-default.txt" grep -Fq 'python (:LspInstallServer in a python file)' "$TMP_ROOT/status-default.txt"
grep -Fq 'LSP actions are buffer-local and start after a server attaches.' "$TMP_ROOT/status-default.txt" grep -Fq 'LSP actions are buffer-local and start after a server attaches.' "$TMP_ROOT/status-default.txt"
grep -Fq 'Open that filetype and run :LspInstallServer once.' "$TMP_ROOT/status-default.txt" grep -Fq 'Open that filetype and run :LspInstallServer once.' "$TMP_ROOT/status-default.txt"
@ -268,9 +268,9 @@ check_vim() {
-c 'source .vimrc' \ -c 'source .vimrc' \
-c 'if mapleader !=# "\<Space>" || maplocalleader !=# "," | cquit | endif' \ -c 'if mapleader !=# "\<Space>" || maplocalleader !=# "," | cquit | endif' \
-c 'if maparg(",ff", "n") !=# "" || maparg(",w", "n") !=# "" || maparg(",mt", "n") !=# "" || maparg(",gp", "n") !=# "" || maparg("<Space>gp", "n") !=# "" | cquit | endif' \ -c 'if maparg(",ff", "n") !=# "" || maparg(",w", "n") !=# "" || maparg(",mt", "n") !=# "" || maparg(",gp", "n") !=# "" || maparg("<Space>gp", "n") !=# "" | cquit | endif' \
-c 'if maparg("<Space>f", "n") !=# "" || maparg("<Space>q", "n") !=# "" || maparg("<Space>u", "n") !=# "" || maparg("<Space>c", "n") !=# "" || maparg("<Space>x", "n") !=# "" || maparg("<Space>wm", "n") !=# "" || maparg("<Space>w+", "n") !=# "" || maparg("<Space>w-", "n") !=# "" | cquit | endif' \ -c 'if maparg("<Space>f", "n") !=# "" || maparg("<Space>u", "n") !=# "" || maparg("<Space>c", "n") !=# "" || maparg("<Space>x", "n") !=# "" || maparg("<Space>wm", "n") !=# "" || maparg("<Space>w+", "n") !=# "" || maparg("<Space>w-", "n") !=# "" | cquit | endif' \
-c 'if maparg("<Space><Space>", "n") !~# "SmartFiles" || maparg("<Space>ff", "n") !~# "SmartFiles" || maparg("<Space>,", "n") !~# "Buffers" || maparg("<Space>bd", "n") !~# "Bclose" | cquit | endif' \ -c 'if maparg("<Space><Space>", "n") !~# "SmartFiles" || maparg("<Space>ff", "n") !~# "SmartFiles" || maparg("<Space>,", "n") !~# "Buffers" || maparg("<Space>bd", "n") !~# "Bclose" | cquit | endif' \
-c 'if maparg("<Space>w", "n") !~# ":w" || maparg("<Space>W", "n") !~# ":wa" || maparg("<Space>qq", "n") !~# ":q" || maparg("<Space>qx", "n") !~# ":x" || maparg("<Space>fc", "n") !~# "ChopsticksConfig" || maparg("<Space>fV", "n") !~# "ChopsticksReload" || maparg("<Space>U", "n") !~# "UndotreeToggle" || maparg("<Space>fs", "n") !=# "" || maparg("<Space>bu", "n") !=# "" | cquit | endif' \ -c 'if maparg("<Space>w", "n") !~# ":w" || maparg("<Space>W", "n") !~# ":wa" || maparg("<Space>q", "n") !~# ":q" || maparg("<Space>qq", "n") !=# "" || maparg("<Space>qx", "n") !=# "" || maparg("<Space>fc", "n") !~# "ChopsticksConfig" || maparg("<Space>fV", "n") !~# "ChopsticksReload" || maparg("<Space>U", "n") !~# "UndotreeToggle" || maparg("<Space>fs", "n") !=# "" || maparg("<Space>bu", "n") !=# "" | cquit | endif' \
-c 'if maparg("<Space>gl", "n") !~# "Git log" || maparg("<Space>gC", "n") !~# "Commits" | cquit | endif' \ -c 'if maparg("<Space>gl", "n") !~# "Git log" || maparg("<Space>gC", "n") !~# "Commits" | cquit | endif' \
-c 'qa!' 2>&1 -c 'qa!' 2>&1
@ -310,9 +310,9 @@ check_vim() {
grep -Fq ':ChopsticksConfig local config' "$TMP_ROOT/cheat-default.txt" grep -Fq ':ChopsticksConfig local config' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksReload reload config' "$TMP_ROOT/cheat-default.txt" grep -Fq ':ChopsticksReload reload config' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksTutor practice' "$TMP_ROOT/cheat-default.txt" grep -Fq ':ChopsticksTutor practice' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksBeta beta test guide' "$TMP_ROOT/cheat-default.txt" grep -Fq ':ChopsticksBeta release checklist' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksBetaLog beta notes' "$TMP_ROOT/cheat-default.txt" grep -Fq ':ChopsticksBetaLog release notes' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksBetaSession new beta note' "$TMP_ROOT/cheat-default.txt" grep -Fq ':ChopsticksBetaSession new release note' "$TMP_ROOT/cheat-default.txt"
if grep -Eq 'Ctrl\\+p find file|Ctrl\\+hjkl navigate splits|Ctrl\\+s save|jk exit insert|SPC fs save|SPC cd definition|SPC ck hover|SPC wm|SPC w\\+/-|\\[g \\]g LSP diagnostics' "$TMP_ROOT/cheat-default.txt"; then if grep -Eq 'Ctrl\\+p find file|Ctrl\\+hjkl navigate splits|Ctrl\\+s save|jk exit insert|SPC fs save|SPC cd definition|SPC ck hover|SPC wm|SPC w\\+/-|\\[g \\]g LSP diagnostics' "$TMP_ROOT/cheat-default.txt"; then
cat "$TMP_ROOT/cheat-default.txt" cat "$TMP_ROOT/cheat-default.txt"
exit 1 exit 1
@ -428,24 +428,24 @@ check_vim() {
-c 'silent %print' \ -c 'silent %print' \
-c 'redir END' \ -c 'redir END' \
-c 'qa!' 2>&1 -c 'qa!' 2>&1
grep -Fq 'chopsticks beta' "$TMP_ROOT/beta-guide.txt" grep -Fq 'chopsticks 2.3.0' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'Prove this can be a long-term project loop.' "$TMP_ROOT/beta-guide.txt" grep -Fq 'Prove this can be the long-term project loop.' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'Record real editing friction, not abstract taste.' "$TMP_ROOT/beta-guide.txt" grep -Fq 'Record real editing friction before release.' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'no private wiki is needed to remember the daily loop' "$TMP_ROOT/beta-guide.txt" grep -Fq 'no private wiki is needed to remember the daily loop' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'window/sidebar navigation beats native <C-w> only' "$TMP_ROOT/beta-guide.txt" grep -Fq 'window/sidebar navigation beats native <C-w> only' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'SPC ? active cheat sheet' "$TMP_ROOT/beta-guide.txt" grep -Fq 'SPC ? active cheat sheet' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'BETA.md full beta checklist and rollback' "$TMP_ROOT/beta-guide.txt" grep -Fq 'BETA.md release checklist and rollback' "$TMP_ROOT/beta-guide.txt"
grep -Fq ':ChopsticksBetaLog editable local beta notes' "$TMP_ROOT/beta-guide.txt" grep -Fq ':ChopsticksBetaLog editable local release notes' "$TMP_ROOT/beta-guide.txt"
grep -Fq ':ChopsticksBetaSession append a new session block' "$TMP_ROOT/beta-guide.txt" grep -Fq ':ChopsticksBetaSession append a new session block' "$TMP_ROOT/beta-guide.txt"
beta_log="$TMP_ROOT/beta log/chopsticks-beta.md" beta_log="$TMP_ROOT/release log/chopsticks-2.3.0.md"
XDG_CONFIG_HOME="$EMPTY_XDG" vim -u NONE -i NONE -es -N \ XDG_CONFIG_HOME="$EMPTY_XDG" vim -u NONE -i NONE -es -N \
-c "let g:chopsticks_beta_log = '$beta_log'" \ -c "let g:chopsticks_beta_log = '$beta_log'" \
-c 'source .vimrc' \ -c 'source .vimrc' \
-c 'ChopsticksBetaLog' \ -c 'ChopsticksBetaLog' \
-c 'if expand("%:p") !~# "chopsticks-beta.md" || &l:filetype !=# "markdown" | cquit | endif' \ -c 'if expand("%:p") !~# "chopsticks-2.3.0.md" || &l:filetype !=# "markdown" | cquit | endif' \
-c 'qa!' 2>&1 -c 'qa!' 2>&1
grep -Fq '# chopsticks beta log' "$beta_log" grep -Fq '# chopsticks 2.3.0 release log' "$beta_log"
grep -Fq 'First key tried when stuck:' "$beta_log" grep -Fq 'First key tried when stuck:' "$beta_log"
printf '%s\n' '- keep-existing-note' >> "$beta_log" printf '%s\n' '- keep-existing-note' >> "$beta_log"
XDG_CONFIG_HOME="$EMPTY_XDG" vim -u NONE -i NONE -es -N \ XDG_CONFIG_HOME="$EMPTY_XDG" vim -u NONE -i NONE -es -N \