@gachlab/devup 0.4.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -0
- package/README.md +74 -450
- package/dist/config/cli.d.ts +2 -1
- package/dist/config/cli.d.ts.map +1 -1
- package/dist/config/diff.d.ts +19 -0
- package/dist/config/diff.d.ts.map +1 -0
- package/dist/config/types.d.ts +8 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/validator.d.ts +9 -0
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/control-plane/socket-server.d.ts +31 -0
- package/dist/control-plane/socket-server.d.ts.map +1 -0
- package/dist/index.js +512 -63
- package/dist/index.js.map +1 -1
- package/dist/process/manager.d.ts.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/LogsPanel.d.ts +10 -1
- package/dist/tui/LogsPanel.d.ts.map +1 -1
- package/dist/tui/StatsPanel.d.ts +2 -1
- package/dist/tui/StatsPanel.d.ts.map +1 -1
- package/dist/tui/hooks/useKeyBindings.d.ts +5 -0
- package/dist/tui/hooks/useKeyBindings.d.ts.map +1 -1
- package/dist/tui/hooks/useProcessManager.d.ts +2 -0
- package/dist/tui/hooks/useProcessManager.d.ts.map +1 -1
- package/dist/utils.d.ts +25 -0
- package/dist/utils.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,55 @@ All notable changes to `@gachlab/devup` are documented here.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.7.0] — 2026-05-21
|
|
9
|
+
|
|
10
|
+
Polish release. Two small quality-of-life items that closed out the low-value tail of the roadmap.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Non-blocking config warnings** (#9). Devup now emits warnings — separate from errors — at config-load time. The first warning: `extraEnv.PORT` set to a value different from `svc.port`. That's a common footgun (the service binds to the value in `extraEnv`, devup health-checks `port`, nothing connects). Warnings are advisory: they print and the boot continues. Errors still abort as before. New helpers `collectWarnings()` / `formatValidationWarnings()` parallel to the existing `validateConfig` flow.
|
|
14
|
+
- **Active-service color on the LogsPanel border** (#20). When a service filter is active and the Logs panel is not focused, the border takes the filtered service's tag color. Subtle reinforcement of "you're seeing only this service", especially helpful after `Tab`'ing between panels. Focus (cyan) still wins so the active-pane affordance is never lost.
|
|
15
|
+
|
|
16
|
+
### Internals
|
|
17
|
+
- New pure helper `resolveBorder()` exported from `tui/LogsPanel.tsx` for testability.
|
|
18
|
+
- Test suite grown to ~331 (+10).
|
|
19
|
+
|
|
20
|
+
## [0.6.0] — 2026-05-21
|
|
21
|
+
|
|
22
|
+
Control plane release. Two features that unlock external integrations and editor workflows.
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- **Unix-socket control plane** (#26). devup now binds a JSON-RPC server to `~/.devup/sock-<project>.sock` with `chmod 0600`. Speaks newline-delimited JSON. Methods: `ping` (liveness), `status` (full snapshot of every service), `restart { svc }`, `stop { svc }`, `logs.tail { svc, lines? }` (capped at 10 000). Auth is filesystem-perms-only — strictly local; TCP exposure intentionally out of scope. Designed as the foundation for `devup logs --follow` against a running instance, IDE plugins, and future hot-reload coordination. If `listen()` fails (perms, dir missing) devup keeps running without the control plane and logs a single notice.
|
|
26
|
+
- **Hot reload of `devup.config.*`** (#23). Opt-in via `--watch-config`. devup watches the resolved config file and applies add/remove/restart at the service level when it changes — no need to kill the TUI. Validation runs first; a failed config leaves the running set untouched. The diff classifies each service as added / removed / changed / unchanged (changed = any spawn-relevant field differs). Banner via the logs panel summarises each reload: `🔁 config reloaded: +1 added, -2 removed, ~1 changed`. 250 ms debounce because editors emit several change events per save; in-flight guard coalesces back-to-back saves.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- README "Features" section reorganised into Orchestration / Readiness / TUI / Operations and brought up to date with everything added since 0.2.0 — every feature now has a one-line entry in the header.
|
|
30
|
+
|
|
31
|
+
### Internals
|
|
32
|
+
- New module `src/control-plane/socket-server.ts` exposing `startSocketServer()` / `defaultSocketPath()` (pure helpers + `RpcContext` interface).
|
|
33
|
+
- New module `src/config/diff.ts` exposing `diffServices()` and `summariseDiff()` (pure functions, no side effects).
|
|
34
|
+
- Test suite grown to ~321 (+22). New suites: `socket-server` (9), `diff` (11).
|
|
35
|
+
|
|
36
|
+
## [0.5.0] — 2026-05-21
|
|
37
|
+
|
|
38
|
+
Config power release — six features that sharpen day-to-day debugging in a long-running stack.
|
|
39
|
+
|
|
40
|
+
### Added
|
|
41
|
+
- **Regex search in logs** (#8). `/` accepts vim-style `/pattern/flags` in addition to the existing case-insensitive substring mode. `/error/`, `/^api: \d+/`, `/foo/g` all work. Case-insensitive by default — add explicit flags after the slash if needed. Invalid regex falls back to substring search and shows `(invalid regex)` in the logs panel header so the user can correct it. Plain strings (including ones with slashes inside) keep working as substring matches.
|
|
42
|
+
- **`healthCheck.startPeriod` grace window** (#15). New optional field, in seconds. Probes are fully suppressed during the window, status stays `starting`, `health` stays `wait`. Eliminates spurious failed probes during slow boots (Angular cold-start, big webpack builds) that otherwise inflate `state.errors` and pollute the TUI.
|
|
43
|
+
- **Customizable error pattern per service** (#16). New `errorPattern?: string` field on `ServiceConfig`. When set, only stderr lines matching the regex (same `/pattern/flags` grammar as `readyPattern`) bump `state.errors`. Without it, every non-empty stderr line counts (existing behavior). Useful for libraries that write info to stderr — Angular CLI is the worst offender.
|
|
44
|
+
- **Filter logs by level** (#19). Each log line is tagged with a level on ingestion: `error > warn > info`. New `L` key cycles the filter: `all → error → warn+error → all`. Detection is keyword-based with conjugations (`error`, `fail(ed|ure|s)`, `fatal`, `exception`, `crash(ed|es)` → error; `warn(ed|ing|s)`, `deprec` → warn). Devup's own log markers count: `❌`/`✗`/`⛔` → error, `⚠` → warn. `a` (show all) also resets the level filter.
|
|
45
|
+
- **Verbose stats** (#21). New `v` key toggles the stats panel between compact mode and verbose mode. Verbose mode adds two dim indented lines per service: `cmd: <cmd> <resolved args>` (after `buildProcessArgs`, so devup-injected flags like `--max-old-space-size` are visible) and `env: KEY=value ...` (only when `extraEnv` is non-empty). Env values are auto-redacted (`***`) for keys matching `/secret|token|password|api[_-]?key|auth/i`.
|
|
46
|
+
- **Resource awareness — RAM watchdog banner** (#24). When system RAM usage crosses 80 % the stats panel shows a banner: `⚠ RAM 84% — top: app-api 520MB, staff-web 480MB, admin-web 460MB`. Hysteresis-driven (turns off only below 75 %, no flicker at the boundary). Top consumers are sorted by `stats.get(name).mem` and capped at 3.
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
- `LogEntry` interface gains a required `level: LogLevel` field; both `pushLog()` and the manager-driven `onLog` handler compute it on ingestion.
|
|
50
|
+
- StatusBar shows the new `L` Level and `v` Verbose bindings.
|
|
51
|
+
- The Logs panel header gains `[level: error]` / `[level: warn+error]` markers when a level filter is active.
|
|
52
|
+
|
|
53
|
+
### Internals
|
|
54
|
+
- New pure helpers in `utils.ts`: `compileSearchPattern`, `detectLogLevel`, `redactSecrets`, `nextRamBannerVisibility`. All exported, all individually tested.
|
|
55
|
+
- Test suite grown from 274 to ~299. New suites: `compileSearchPattern` (6), `detectLogLevel` (5), `redactSecrets` (3), `nextRamBannerVisibility` (4), plus 2 manager tests for `errorPattern` and 1 for `healthCheck.startPeriod`.
|
|
56
|
+
|
|
8
57
|
## [0.4.0] — 2026-05-21
|
|
9
58
|
|
|
10
59
|
Polish + standalone CLI release. Eight focused improvements landed as a single PR with one commit per issue.
|
|
@@ -135,6 +184,9 @@ Initial release.
|
|
|
135
184
|
- Config file resolution order: `devup.config.ts` → `.js` → `.json`, with `--config <path>` override. TypeScript loaded via the `tsx` import hook.
|
|
136
185
|
- CLI flags: `--only`, `--services`, `--skip`, `--lazy`/`--no-lazy`, `--timeout`, `--proxy`, `--proxy-host`, `--proxy-conf`, `--proxy-tls`/`--no-proxy-tls`, `--proxy-entrypoint`, `--config`.
|
|
137
186
|
|
|
187
|
+
[0.7.0]: https://github.com/gachlab/devup/releases/tag/0.7.0
|
|
188
|
+
[0.6.0]: https://github.com/gachlab/devup/releases/tag/0.6.0
|
|
189
|
+
[0.5.0]: https://github.com/gachlab/devup/releases/tag/0.5.0
|
|
138
190
|
[0.4.0]: https://github.com/gachlab/devup/releases/tag/0.4.0
|
|
139
191
|
[0.3.0]: https://github.com/gachlab/devup/releases/tag/0.3.0
|
|
140
192
|
[0.2.0]: https://github.com/gachlab/devup/releases/tag/0.2.0
|