mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-10-09 00:49:41 +02:00
feat!: retire the sc tmux chooser in favour of codeman tui
scripts/tmux-chooser.sh is deleted. codeman tui replaces it and does the job better: sc numbered its entries globally but only accepted a single [1-9] keypress, so sessions 10+ were listed and unselectable, and it inferred nothing about what an agent was doing. The tui carries the server's real states, answers permission dialogs, and leaves an attach with one key. install.sh no longer creates the tmux-chooser symlink or the sc alias. It now sweeps both up instead, on update AND uninstall, so an update cannot leave a symlink pointing at a script this version stopped shipping. The alias removal is marker-owned: it matches the exact line the installer wrote, so someone's own 'alias sc=' for another tool is never touched, and it rewrites through 'cat >' so the profile keeps its mode and ownership. Verified against three profile shapes. BREAKING CHANGE: the 'sc' command and the 'tmux-chooser' symlink are gone. Use 'codeman tui' (and 'codeman tui --list' / 'codeman tui <n>').
This commit is contained in:
+26
-17
@@ -1072,21 +1072,28 @@ add_to_path() {
|
||||
success "Added to $profile"
|
||||
}
|
||||
|
||||
setup_sc_alias() {
|
||||
# The `sc` bash chooser was retired in favour of `codeman tui`, which reaches
|
||||
# sessions 10+, carries the server's real states and leaves an attach with one
|
||||
# key. Older installers wrote this alias, so take it back out.
|
||||
#
|
||||
# Marker-owned on purpose: it matches the exact line WE wrote, so a user's own
|
||||
# `alias sc=` for something entirely different is never touched. The rewrite
|
||||
# goes through `cat >` rather than `mv` so the profile keeps its own mode and
|
||||
# ownership.
|
||||
remove_sc_alias() {
|
||||
local profile
|
||||
profile=$(detect_shell_profile)
|
||||
[[ -f "$profile" ]] || return 0
|
||||
grep -qE "^alias sc='tmux-chooser'\$" "$profile" 2>/dev/null || return 0
|
||||
|
||||
# Check if alias already exists
|
||||
if [[ -f "$profile" ]] && grep -qE "^alias sc=" "$profile" 2>/dev/null; then
|
||||
info "Alias 'sc' already configured in $profile"
|
||||
return 0
|
||||
local tmp
|
||||
tmp=$(mktemp 2>/dev/null) || return 0
|
||||
if sed -e "/^alias sc='tmux-chooser'\$/d" \
|
||||
-e '/^# Codeman tmux session shortcut$/d' "$profile" > "$tmp" 2>/dev/null; then
|
||||
cat "$tmp" > "$profile"
|
||||
info "Removed the retired 'sc' alias from $profile (use: codeman tui)"
|
||||
fi
|
||||
|
||||
echo "" >> "$profile"
|
||||
echo "# Codeman tmux session shortcut" >> "$profile"
|
||||
echo "alias sc='tmux-chooser'" >> "$profile"
|
||||
|
||||
info "Added 'sc' alias for tmux-chooser"
|
||||
rm -f "$tmp"
|
||||
}
|
||||
|
||||
# ============================================================================
|
||||
@@ -2243,13 +2250,14 @@ main() {
|
||||
ln -sf "$INSTALL_DIR/dist/index.js" "$symlink_dir/codeman"
|
||||
info "Created symlink: $symlink_dir/codeman"
|
||||
|
||||
# Install tmux-chooser as 'tmux-chooser' command
|
||||
if [[ -f "$INSTALL_DIR/scripts/tmux-chooser.sh" ]]; then
|
||||
ln -sf "$INSTALL_DIR/scripts/tmux-chooser.sh" "$symlink_dir/tmux-chooser"
|
||||
info "Created symlink: $symlink_dir/tmux-chooser"
|
||||
# Add 'sc' alias for quick access
|
||||
setup_sc_alias
|
||||
# tmux-chooser/`sc` is retired; `codeman tui` replaces it. Sweep up what
|
||||
# an older installer left behind, so an update does not leave a symlink
|
||||
# pointing at a script this version no longer ships.
|
||||
if [[ -L "$symlink_dir/tmux-chooser" ]]; then
|
||||
rm -f "$symlink_dir/tmux-chooser"
|
||||
info "Removed the retired tmux-chooser symlink (use: codeman tui)"
|
||||
fi
|
||||
remove_sc_alias
|
||||
|
||||
# Add ~/.local/bin to PATH if not already there
|
||||
if [[ ":$PATH:" != *":$symlink_dir:"* ]]; then
|
||||
@@ -2620,6 +2628,7 @@ uninstall() {
|
||||
rm -f "$symlink_dir/tmux-chooser"
|
||||
success "Removed symlink: $symlink_dir/tmux-chooser"
|
||||
fi
|
||||
remove_sc_alias
|
||||
|
||||
# Remove install directory
|
||||
if [[ -d "$INSTALL_DIR" ]]; then
|
||||
|
||||
Reference in New Issue
Block a user