# mnw-cli TODO ## Status Done: Phases 1-8, Git proxy A-C. Active: None. Next: Deploy. --- ## Git Proxy — Part D: Server Configuration - [ ] D1: Move sshd to port 2200, `ListenAddress 100.120.174.96` (Tailscale only) - [ ] D2: Update mnw-cli .env (`SSH_PORT=22`, `GIT_SUDO_USER=git`) - [ ] D3: Sudoers rule (`/etc/sudoers.d/mnw-cli-git` — git-upload-pack, git-receive-pack, git-upload-archive) - [ ] D4: Firewall — `ufw delete allow 2222/tcp` (port 22 already open) - [ ] D5: DNS — `cli.makenot.work` A record -> `5.78.144.244`, proxy OFF - [ ] D6: Restart sequence (sshd -> verify admin SSH -> mnw-cli -> verify TUI + git clone) ## Deploy - [ ] Test on astra (full TUI + SFTP + git push/pull) - [ ] Deploy to hetzner (cross-compile via deploy.sh) - [ ] Add PoM health check for mnw-cli (port 22 SSH banner check) ## Remaining Features (from design doc) - [ ] Bulk item operations (select multiple, publish/unpublish/delete) - [ ] Tag management in TUI - [ ] Pipe mode uploads (`cat file | ssh cli.makenot.work upload ...`) - [ ] Blog post scheduling - [ ] Subscription tier management - [ ] Collection management - [ ] Custom domain management screen - [ ] Broadcast to followers ## Key Paths ``` mnw-cli/src/ main.rs, config.rs, api.rs, commands.rs, format.rs, staging.rs ssh/ (mod.rs, handler.rs, terminal.rs, sftp.rs, git.rs) tui/ (mod.rs, input.rs, loading.rs, home.rs, project.rs, upload.rs, item.rs, analytics.rs, blog.rs, promo.rs, keys.rs, settings.rs, widgets.rs) mnw-cli/deploy/ (deploy.sh, mnw-cli.service) docs/mnw/server/cli.md (design doc) ```