Skip to content

Commit 25690fd

Browse files
committed
Document missing features in CHANGELOG - port checks, .env support, PM2 fixes
1 parent ccdf03c commit 25690fd

1 file changed

Lines changed: 38 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 38 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
99

1010
### Added
1111

12+
#### ORM Detection
13+
- **ORM auto-detection**: `detect_orm()` identifies Prisma, Drizzle, TypeORM, Sequelize, Knex, Mongoose, and AdonisJS Lucid from package.json dependencies
14+
- **Migration command generation**: Returns ORM-specific migration and generate commands for deployment hooks
15+
16+
#### Smart Deployment Hooks
17+
- **Auto-generated hooks**: `shipnode init` creates `.shipnode/pre-deploy.sh` and `post-deploy.sh` with ORM-aware templates
18+
- **ORM-specific migrations**: Pre-deploy hook includes commented migration commands for 6 ORMs, auto-uncommented for detected ORM
19+
- **Shared environment access**: Hooks can access `$SHARED_ENV_PATH` for database credentials
20+
21+
#### User Provisioning
22+
- `create_remote_user()`: Creates deployment users on remote server
23+
- `setup_user_ssh_dir()`: Configures SSH directory with correct permissions
24+
- `add_user_ssh_key()`: Adds authorized SSH keys for user access
25+
- `grant_deploy_permissions()`: Sets up deploy path ownership
26+
- `grant_sudo_access()`: Configures passwordless sudo for PM2 and Caddy
27+
- `revoke_user_access()`: Removes users and cleans up SSH keys
28+
1229
#### Interactive Initialization Wizard
1330
- **Framework auto-detection**: Automatically detects Express, NestJS, Fastify, Koa, Hapi, Hono, AdonisJS, Next.js, Nuxt, Remix, Astro, React, React Router, TanStack Router, Vue, Svelte, SolidJS, and Angular from package.json dependencies
1431
- **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
4461
- **Non-blocking**: Wizard continues with classic prompts if Gum installation fails
4562
- **Gum wrappers**: `gum_input()`, `gum_choose()`, `gum_confirm()`, `gum_style()` functions with automatic fallback
4663

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+
4772
### 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
5186

5287
## [1.1.0] - 2026-01-24
5388

0 commit comments

Comments
 (0)