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