From 34bb8fc22ac7b8149db194cb0e9440d41db6db86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Padez?= Date: Wed, 12 Aug 2026 17:07:28 +0000 Subject: [PATCH] put the superseded setup scripts in setup-old, and repair what the move broke MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scripts/setup/ is now what the new installer is being built in — machine-setup/ for the box, officer-setup.sh for the platform on top — and everything being replaced moved to scripts/setup-old/. It still works and is still what to run. Three things the move broke, and what each needed: starship.toml is not an old-setup artifact. os-user-shell.ts reads it at RUNTIME to seed a member's ~/.config/starship.toml when their Linux account is provisioned, and line 125 reads it inside a try whose catch returns "could not read the shell templates" — so account provisioning would have failed outright, not degraded. Moved back to scripts/setup/, which is where it belongs anyway (one file, both audiences) and which leaves the code correct with no edit. package.json's `setup` script pointed at a path that no longer exists. It now points at officer-setup.sh, where the installer is going, rather than at setup-old/ which is temporary. officer-setup.sh was created empty. An empty script exits 0, so `bun setup` would have reported success while doing nothing — worse than the broken path it replaced. It now explains that it is not written yet and exits 1, naming the setup-old script to run meanwhile. Also brought .tmux.conf and ufw-docker-rules.conf in beside machine-setup.sh, which reads both from SCRIPT_DIR and had been silently skipping them since the script was vendored. ssh-keys.zip deliberately stays out: it is key material, and *.zip is ignored. Comments in os-user-claude.ts, app-store/preflight.ts and two docs still name the old scripts/setup/setup.sh path. Left alone on purpose — repointing them at setup-old/ only to repoint them again when officer-setup.sh lands is churn. Co-Authored-By: Claude Opus 5 (1M context) --- package.json | 2 +- .../officer-set-display.sh | 0 scripts/{setup => setup-old}/setup-desktop.sh | 0 scripts/{setup => setup-old}/setup-dockers.sh | 0 .../{setup => setup-old}/setup-sidecars.sh | 0 scripts/{setup => setup-old}/setup.sh | 0 .../{setup => setup-old}/setup_mac_light.sh | 0 scripts/setup/machine-setup/.tmux.conf | 100 ++++++++++++++++++ .../setup/machine-setup/ufw-docker-rules.conf | 33 ++++++ scripts/setup/officer-setup.sh | 30 ++++++ 10 files changed, 164 insertions(+), 1 deletion(-) rename scripts/{setup => setup-old}/officer-set-display.sh (100%) rename scripts/{setup => setup-old}/setup-desktop.sh (100%) rename scripts/{setup => setup-old}/setup-dockers.sh (100%) rename scripts/{setup => setup-old}/setup-sidecars.sh (100%) rename scripts/{setup => setup-old}/setup.sh (100%) rename scripts/{setup => setup-old}/setup_mac_light.sh (100%) create mode 100644 scripts/setup/machine-setup/.tmux.conf create mode 100644 scripts/setup/machine-setup/ufw-docker-rules.conf create mode 100755 scripts/setup/officer-setup.sh diff --git a/package.json b/package.json index 829662e4..26607350 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "format": "{ git diff --name-only HEAD -- 'src/**/*.ts' 'src/**/*.tsx'; git ls-files --others --exclude-standard -- 'src/**/*.ts' 'src/**/*.tsx'; } | xargs -r prettier --write", "format:all": "prettier --write \"src/**/*.{ts,tsx}\"", "format:check": "prettier --check \"src/**/*.{ts,tsx}\"", - "setup": "bash scripts/setup/setup.sh" + "setup": "bash scripts/setup/officer-setup.sh" }, "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.2.41", diff --git a/scripts/setup/officer-set-display.sh b/scripts/setup-old/officer-set-display.sh similarity index 100% rename from scripts/setup/officer-set-display.sh rename to scripts/setup-old/officer-set-display.sh diff --git a/scripts/setup/setup-desktop.sh b/scripts/setup-old/setup-desktop.sh similarity index 100% rename from scripts/setup/setup-desktop.sh rename to scripts/setup-old/setup-desktop.sh diff --git a/scripts/setup/setup-dockers.sh b/scripts/setup-old/setup-dockers.sh similarity index 100% rename from scripts/setup/setup-dockers.sh rename to scripts/setup-old/setup-dockers.sh diff --git a/scripts/setup/setup-sidecars.sh b/scripts/setup-old/setup-sidecars.sh similarity index 100% rename from scripts/setup/setup-sidecars.sh rename to scripts/setup-old/setup-sidecars.sh diff --git a/scripts/setup/setup.sh b/scripts/setup-old/setup.sh similarity index 100% rename from scripts/setup/setup.sh rename to scripts/setup-old/setup.sh diff --git a/scripts/setup/setup_mac_light.sh b/scripts/setup-old/setup_mac_light.sh similarity index 100% rename from scripts/setup/setup_mac_light.sh rename to scripts/setup-old/setup_mac_light.sh diff --git a/scripts/setup/machine-setup/.tmux.conf b/scripts/setup/machine-setup/.tmux.conf new file mode 100644 index 00000000..ccf66cbe --- /dev/null +++ b/scripts/setup/machine-setup/.tmux.conf @@ -0,0 +1,100 @@ +########## TPM AUTO-INSTALL + SESSION PERSISTENCE ########## + +# Auto-install TPM if missing +if-shell '[ ! -d ~/.tmux/plugins/tpm ]' \ + 'run-shell "git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm"' + +# Plugin list +set -g @plugin 'tmux-plugins/tpm' + +# remap prefix from 'C-b' to 'C-a' +unbind C-b +set-option -g prefix C-a +bind-key C-a send-prefix + +set -g base-index 1 + +# split panes using | and - +unbind '"' +unbind % +bind | split-window -h +bind - split-window -v + +# reload config file (change file location to your the tmux.conf you want to use) +unbind r +bind r source-file ~/.tmux.conf \; display-message "Config reloaded!" \; refresh-client -S + +# switch panes using Alt-arrow without prefix +bind -n M-Left select-pane -L +bind -n M-Right select-pane -R +bind -n M-Up select-pane -U +bind -n M-Down select-pane -D +# switch panes using Alt-HJKL without prefix +bind -n M-h select-pane -L +bind -n M-l select-pane -R +bind -n M-k select-pane -U +bind -n M-j select-pane -D + +# Enable mouse control (clickable windows, panes, resizable panes) + +# don't rename windows automatically +set-option -g allow-rename off + +###################### +### DESIGN CHANGES ### +###################### + +# loud or quiet? +set -g visual-activity off +set -g visual-bell off +set -g visual-silence off +setw -g monitor-activity off +set -g bell-action none + +# modes +setw -g clock-mode-colour colour12 +setw -g mode-style 'fg=colour1 bg=colour18 bold' + +# panes +set -g pane-border-style 'fg=colour19 bg=colour0' +set -g pane-active-border-style 'bg=colour0 fg=colour9' + +# statusbar +set -g status-position bottom +set -g status-justify left +set -g status-style 'bg=colour2 fg=colour23' +# set -g status-left '#[fg=white,bg=black,bold] pastilhas #[default]' +set -g status-left '#[fg=#ffffff,bg=#000000,bold] #{USER}@#H #[default]' +# set -g status-left-length 20 +set -g status-right '#[fg=#ffffff,bg=colour1] %d/%m #[fg=#ffffff,bg=colour8] %H:%M:%S ' +set -g status-right-length 50 +set -g status-left-length 20 + +setw -g window-status-current-style 'fg=colour1 bg=colour19 bold' +setw -g window-status-current-format ' #I#[fg=colour249]:#[fg=colour255]#W#[fg=colour249]#F ' + +setw -g window-status-style 'fg=colour9 bg=colour18' +setw -g window-status-format ' #I#[fg=colour237]:#[fg=colour250]#W#[fg=colour244]#F ' + +setw -g window-status-bell-style 'fg=colour255 bg=colour1 bold' +# ...existing code... +# messages +set -g message-style 'fg=#ffffff bg=red bold' +# Change the font color for the exit pane confirmation message +set -g message-command-style 'fg=#ffffff bg=red bold' + +# ...existing code... + +# messages +# set -g message-style 'fg=colour232 bg=colour16 bold' + +########################## +### END DESIGN CHANGES ### +########################## + +########################## +### EASY MOUSE SCROLL ### +########################## + +set -g mouse on +set -ga terminal-overrides ',*256color*:smcup@:rmcup@' diff --git a/scripts/setup/machine-setup/ufw-docker-rules.conf b/scripts/setup/machine-setup/ufw-docker-rules.conf new file mode 100644 index 00000000..a82ab97f --- /dev/null +++ b/scripts/setup/machine-setup/ufw-docker-rules.conf @@ -0,0 +1,33 @@ +# UFW Docker compatibility rules +# Append these to /etc/ufw/after.rules (after the existing COMMIT) +# Blocks all external access to Docker-published ports except: +# - Trusted IPs (add your own) +# - Explicitly allowed public ports (80, 443) +# - Docker internal and loopback traffic + +*filter +:DOCKER-USER - [0:0] + +# Allow established/related +-A DOCKER-USER -m conntrack --ctstate ESTABLISHED,RELATED -j RETURN + +# Allow loopback +-A DOCKER-USER -i lo -j RETURN + +# Allow Docker internal networks +-A DOCKER-USER -s 172.16.0.0/12 -j RETURN + +# Allow trusted external sources (add more lines as needed) +# -A DOCKER-USER -s -j RETURN + +# Allow public ports +-A DOCKER-USER -i eth0 -p tcp --dport 80 -j RETURN +-A DOCKER-USER -i eth0 -p tcp --dport 443 -j RETURN + +# Drop everything else from external +-A DOCKER-USER -i eth0 -j DROP + +# Return for non-external traffic +-A DOCKER-USER -j RETURN + +COMMIT diff --git a/scripts/setup/officer-setup.sh b/scripts/setup/officer-setup.sh new file mode 100755 index 00000000..ecfe0ab1 --- /dev/null +++ b/scripts/setup/officer-setup.sh @@ -0,0 +1,30 @@ +#!/bin/bash +set -e + +# ============================================================================= +# officer-setup — the platform, on a machine that is already provisioned +# +# The second half of the install. machine-setup/ brings a blank box up to a +# usable machine; this puts Officer on top of it: dependencies, .env, the +# database schema, and the pm2 process list. +# +# Run: bash scripts/setup/officer-setup.sh +# ============================================================================= +# +# NOT WRITTEN YET. It is being rebuilt from scripts/setup-old/setup.sh, which +# still works and is still the one to run. +# +# This file exists ahead of its contents so that `bun setup` points at where the +# installer is going rather than at a path that is about to move again. It fails +# loudly rather than sitting empty, because an empty script exits 0 and would +# make `bun setup` report success while doing nothing at all. + +echo "" +echo " officer-setup.sh is not written yet." +echo "" +echo " It is being rebuilt from scripts/setup-old/setup.sh, which still works:" +echo "" +echo " bash scripts/setup-old/setup.sh # full install" +echo " OFFICER_PROFILE=light bash scripts/setup-old/setup.sh # light install" +echo "" +exit 1