You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**Smart defaults**: Auto-suggests app type (backend/frontend) based on detected framework
@@ -44,10 +61,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
44
61
-**Non-blocking**: Wizard continues with classic prompts if Gum installation fails
45
62
-**Gum wrappers**: `gum_input()`, `gum_choose()`, `gum_confirm()`, `gum_style()` functions with automatic fallback
46
63
64
+
#### Port Conflict Detection
65
+
-**Port conflict detection**: Deployment checks if backend port is already in use on remote server
66
+
-**Smart redeployment**: Allows redeployment when port is owned by the same PM2 app; blocks when owned by a different process
67
+
-**Suggested ports**: Shows available alternative ports when conflict is detected
68
+
69
+
#### Local .env Support
70
+
-**ENV_FILE support**: `load_config()` sources local `.env` before loading `shipnode.conf` — config values can reference env vars (e.g. `DB_PASSWORD=${DB_PASSWORD}`)
71
+
47
72
### Changed
48
-
-`shipnode init` now launches interactive wizard by default
49
-
- Added `--non-interactive` flag to preserve v1.1.0 behavior
50
-
- Help command updated with new init options and usage examples
73
+
-**Multi-app Caddy support**: Switched from monolithic `/etc/caddy/Caddyfile` to per-app configs in `/etc/caddy/conf.d/<app>.caddy` — supports multiple apps on one server
74
+
-**Development dependencies included**: Dependencies now installed without `--production`/`--prod`/`--omit=dev` flags so build tools (TypeScript, Prisma CLI, etc.) are available during deployment
75
+
-**Interactive init by default**: `shipnode init` now launches interactive wizard by default; use `--non-interactive` flag for legacy behavior
76
+
-**Expanded pre-deploy template**: Pre-deploy hook template includes commented migration commands for 6 ORMs
77
+
-**Hook documentation**: Rewrote hook documentation in `shipnode.conf.example` with `SHARED_ENV_PATH` usage
78
+
-**Hooks source server .env**: Deployment hooks now source `shared/.env` on the server before execution — hooks use same env as the running app
79
+
80
+
### Fixed
81
+
-**Hook error handling**: Hook execution now checks SSH exit code instead of grepping output for "SUCCESS" — fixes masked failures
82
+
-**Pre-deploy hook validation**: Added missing `return 1` after failed scp in pre-deploy hook template
83
+
-**PM2 "Script not found" error**: Fixed ecosystem config template using `script: 'start'` instead of `script: 'npm', args: 'start'`; ecosystem file now always regenerated on deploy
84
+
-**PM2 cwd path in zero-downtime deploy**: Fixed working directory pointing to wrong path
85
+
-**Hook scp failures visible**: Show scp copy failure output instead of silently continuing
0 commit comments