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
layout can serve as a long-term project loop for experienced Vim users, not
just that the mappings work in isolation. Do not tag or publish it as `v3.0.0`
until the checklist below is closed.
This branch is the 2.3.0 release candidate. The goal is to prove that the Space
layout can serve as the project loop for experienced Vim users, not just that
the mappings work in isolation. Do not tag or publish it as `2.3.0` until the
checklist below is closed.
Inside Vim, run `:ChopsticksBeta` for the compact checklist,
`:ChopsticksBetaLog` for editable local notes, and `:ChopsticksBetaSession`
to append a new session block. Run `:ChopsticksHelp` or `:help chopsticks`
for the native Vim reference.
## Install the beta
## Install the release candidate
Existing checkout:
```bash
cd ~/.vim
git fetch origin
git checkout release/v3-candidate
git checkout release/2.3.0
git pull --ff-only
vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!'
```
@ -25,7 +25,7 @@ vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!'
Fresh checkout:
```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
vim -Nu ~/.vimrc -n -es +'PlugInstall --sync' +'qa!'
```
@ -42,9 +42,9 @@ reloads chopsticks after saving it.
## Daily test loop
Use the beta for real editing, not only demos. A session should exercise the
trained loop until it either feels automatic or exposes friction. For each
session, record:
Use the release candidate for real editing, not only demos. A session should
exercise the trained loop until it either feels automatic or exposes friction.
For each session, record:
- The task: project navigation, code edit, grep, git, LSP, Markdown, SSH.
- 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 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
different path. Use `:ChopsticksBetaSession` at the start of each real editing
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.
- The README GIF has been regenerated from `.github/demo.tape` after any public
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

View file

@ -1,6 +1,6 @@
# Changelog
## 3.0.0-beta.1 — 2026-05-23
## 2.3.0 — 2026-05-24
### Breaking
@ -17,7 +17,7 @@
### Added
- 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 ?`
- Native LSP motions in the default layout: `gd`, `gr`, `gI`, `gy`, `K`,
`[d`, and `]d`
@ -28,9 +28,9 @@
- `:ChopsticksConfig` and `:ChopsticksReload` for editing local preferences
without touching the managed `.vimrc`
- `: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,
cheat sheet, tutor, beta testing, and help
cheat sheet, tutor, release-candidate testing, and help
- Split test runner: `scripts/test.sh` now dispatches to
`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
These commands install the stable `main` branch. For beta testing this branch,
use [BETA.md](BETA.md).
These commands install current `main`. For the 2.3.0 release-candidate
checklist and rollback steps, use [BETA.md](BETA.md).
```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
SPC w save
SPC qx save + quit
SPC q quit current window
:x / ZZ save + quit
:q! force quit
SPC ? cheat sheet (toggle sidebar)
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.
Inside Vim, `:help chopsticks` opens the same reference after helptags are
available. See [README](README.md) for the full reference. For beta testing and
rollback, see [BETA.md](BETA.md).
available. See [README](README.md) for the full reference. For release-candidate
testing and rollback, see [BETA.md](BETA.md).

View file

@ -20,15 +20,14 @@
---
Stable install from `main`:
Install current `main`:
```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
[BETA.md](BETA.md) instead of the stable install command when testing the Space
keymap before promotion.
Current `main` is preparing the 2.3.0 release. Use [BETA.md](BETA.md) for the
release-candidate checklist, rollback steps, and Space keymap test loop.
---
@ -79,8 +78,8 @@ chopsticks gives you a production-ready Vim config in one command. Pure VimScrip
## Install
These commands install the stable `main` branch. For beta testing this branch,
use [BETA.md](BETA.md).
These commands install current `main`. For the 2.3.0 release-candidate
checklist and rollback steps, use [BETA.md](BETA.md).
```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`
for tool/LSP health.
`QUICKSTART.md` is the 5-minute path; this README is the full reference.
During the beta, `:ChopsticksBeta` opens the in-editor test checklist,
`:ChopsticksBetaLog` opens editable local notes, and `:ChopsticksBetaSession`
appends a timestamped session block.
During release-candidate testing, `:ChopsticksBeta` opens the in-editor
checklist, `:ChopsticksBetaLog` opens editable local notes, and
`:ChopsticksBetaSession` appends a timestamped session block.
```
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
Ctrl-h/l enter/leave sidebar Ctrl-hjkl windows
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
:ChopsticksConfig local prefs :ChopsticksReload reload
```
@ -212,7 +211,7 @@ Esc exit insert mode SPC ? cheat sheet
### 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>
@ -317,7 +316,7 @@ For Markdown LSP, install or select `marksman` first.
├── status.vim :ChopsticksStatus diagnostics
├── cheatsheet.vim SPC ? and :ChopsticksCheatSheet
├── tutor.vim :ChopsticksTutor guided practice
├── beta.vim :ChopsticksBeta test guide
├── beta.vim :ChopsticksBeta release checklist
├── help.vim :ChopsticksHelp native Vim help
└── tools.vim compatibility placeholder
```

View file

@ -5,10 +5,10 @@ CONTENTS *chopsticks-contents
1. What chopsticks solves...............|chopsticks-why|
2. First five minutes...................|chopsticks-start|
3. Canonical Space layout...............|chopsticks-v3-space|
3. Canonical Space layout...............|chopsticks-space|
4. Commands.............................|chopsticks-commands|
5. Profiles and local config............|chopsticks-profiles|
6. Beta testing.........................|chopsticks-beta|
6. Release testing......................|chopsticks-release-test|
7. Troubleshooting......................|chopsticks-troubleshooting|
==============================================================================
@ -41,11 +41,11 @@ Daily loop:
s + 2ch jump on screen gd / gr definition / references
K hover docs SPC rr run current file
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.
@ -85,9 +85,9 @@ User-facing commands:
:ChopsticksTutor guided practice
:ChopsticksCheatSheet active keymap reference
:ChopsticksStatus health diagnostics
:ChopsticksBeta beta checklist
:ChopsticksBetaLog editable beta notes
:ChopsticksBetaSession append a timestamped beta note block
:ChopsticksBeta release checklist
:ChopsticksBetaLog editable release notes
:ChopsticksBetaSession append a timestamped release note block
<
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
opinions:
For the 2.3.0 release candidate, record real editing friction instead of
abstract opinions:
>
:ChopsticksBeta compact beta checklist
:ChopsticksBeta compact release checklist
:ChopsticksBetaLog open editable local notes
: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:
@ -174,7 +174,7 @@ Common fixes:
Need full docs :help chopsticks
Need local config :ChopsticksConfig
Changed local config :ChopsticksReload
Need beta notes :ChopsticksBetaSession
Need release notes :ChopsticksBetaSession
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 " ${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}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"
if [[ $CONFIG_PROFILE != "minimal" ]]; then
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
let l:name = '__ChopsticksBeta__'
@ -15,12 +15,12 @@ function! s:OpenBetaGuide() abort
setlocal nowrap nonumber norelativenumber signcolumn=no
let l:lines = [
\ ' chopsticks beta q close',
\ ' chopsticks 2.3.0 q close',
\ ' ─────────────────────────────',
\ '',
\ ' goal',
\ ' Prove this can be a long-term project loop.',
\ ' Record real editing friction, not abstract taste.',
\ ' Prove this can be the long-term project loop.',
\ ' Record real editing friction before release.',
\ '',
\ ' daily loop',
\ ' SPC SPC find file',
@ -49,8 +49,8 @@ function! s:OpenBetaGuide() abort
\ ' quick/vim tests pass locally and over SSH',
\ '',
\ ' files',
\ ' BETA.md full beta checklist and rollback',
\ ' :ChopsticksBetaLog editable local beta notes',
\ ' BETA.md release checklist and rollback',
\ ' :ChopsticksBetaLog editable local release notes',
\ ' :ChopsticksBetaSession append a new session block',
\ ' QUICKSTART.md five-minute path',
\ ' README.md complete reference',
@ -71,7 +71,7 @@ function! s:BetaLogPath() abort
let l:xdg = !empty($XDG_CONFIG_HOME) && $XDG_CONFIG_HOME =~# '^/'
\ ? $XDG_CONFIG_HOME
\ : '~/.config'
return expand(l:xdg . '/chopsticks-beta.md')
return expand(l:xdg . '/chopsticks-2.3.0.md')
endfunction
function! s:SessionBlock() abort
@ -96,9 +96,9 @@ function! s:EnsureBetaLog(path) abort
if !filereadable(l:path)
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)
endif
endfunction

View file

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

View file

@ -106,8 +106,7 @@ endif
if g:chopsticks_space_keymaps
nnoremap <leader>w :w<cr>
nnoremap <leader>W :wa<cr>
nnoremap <leader>qq :q<cr>
nnoremap <leader>qx :x<cr>
nnoremap <leader>q :q<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 =~# '^/'
\ ? $XDG_CONFIG_HOME
\ : '~/.config'
return expand(l:xdg . '/chopsticks-beta.md')
return expand(l:xdg . '/chopsticks-2.3.0.md')
endfunction
function! s:LocalConfigPath() abort
@ -99,7 +99,7 @@ function! s:ChopsticksStatus() abort
call add(l:lines, '')
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, ' keymap ' . (get(g:, 'chopsticks_space_keymaps', 0) ? 'space' : 'classic'))
call add(l:lines, ' log ' . s:BetaLogPath())

View file

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

View file

@ -42,7 +42,7 @@ check_docs() {
done
done
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! ChopsticksConfig' 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 \
-c 'ChopsticksHelp' \
-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
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 'help :ChopsticksHelp :ChopsticksTutor SPC ?' "$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 'commands :ChopsticksBeta :ChopsticksBetaLog' "$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 '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"
@ -268,9 +268,9 @@ check_vim() {
-c 'source .vimrc' \
-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("<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>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 'qa!' 2>&1
@ -310,9 +310,9 @@ check_vim() {
grep -Fq ':ChopsticksConfig local 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 ':ChopsticksBeta beta test guide' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksBetaLog beta notes' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksBetaSession new beta note' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksBeta release checklist' "$TMP_ROOT/cheat-default.txt"
grep -Fq ':ChopsticksBetaLog release notes' "$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
cat "$TMP_ROOT/cheat-default.txt"
exit 1
@ -428,24 +428,24 @@ check_vim() {
-c 'silent %print' \
-c 'redir END' \
-c 'qa!' 2>&1
grep -Fq 'chopsticks beta' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'Prove this can be a 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 'chopsticks 2.3.0' "$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 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 '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 'BETA.md full beta checklist and rollback' "$TMP_ROOT/beta-guide.txt"
grep -Fq ':ChopsticksBetaLog editable local beta notes' "$TMP_ROOT/beta-guide.txt"
grep -Fq 'BETA.md release checklist and rollback' "$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"
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 \
-c "let g:chopsticks_beta_log = '$beta_log'" \
-c 'source .vimrc' \
-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
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"
printf '%s\n' '- keep-existing-note' >> "$beta_log"
XDG_CONFIG_HOME="$EMPTY_XDG" vim -u NONE -i NONE -es -N \