devsurface 0.4.0 → 0.6.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 CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.6.0
4
+
5
+ - Added guided onboarding with a setup readiness score (0–100%) computed from scan and doctor results.
6
+ - Added `devsurface onboard` CLI command that prints a colored checklist of setup steps with done/todo/manual status.
7
+ - Added `/api/onboarding` endpoint (and `/api/workspaces/:id/onboarding` for hub mode) returning the full onboarding plan.
8
+ - Added Onboarding tab in the dashboard with progress bar, per-step actions (install deps, copy `.env`, run scripts, open docs), and a compact banner on the overview when the project is not yet ready.
9
+ - Added `setupGuide` (or `setup_guide`) field in `devsurface.config.json` for maintainers to embed ordered setup instructions (max 24 steps, 200 chars each).
10
+ - Added Python, Go, and Java language support to the onboarding plan; install step is skipped for non-Node projects.
11
+ - Hardened hub workspace registry file permissions to `0o600`.
12
+ - Added a startup warning when `DEVSURFACE_WORKSPACE_ROOTS` is unset in container mode.
13
+ - Shifted keyboard shortcuts: 2=Onboarding, 3=Scripts, 8=Logs (previously 7).
14
+
15
+ ## 0.5.0
16
+
17
+ - Added framework presets for Next.js, Vite, Express, Fastify, NestJS, Remix, and Prisma.
18
+ - Added detected preset commands and ports to the dashboard and command API.
19
+ - Added Python project detection for `requirements.txt`, `pyproject.toml`, and `Pipfile`, including FastAPI/Uvicorn, Flask, and Django commands.
20
+ - Added Go project detection from `go.mod`, with run, build, and test commands.
21
+ - Added Java project detection from Maven and Gradle build files, with build and test commands.
22
+ - Updated doctor checks so detected Python, Go, and Java projects are not treated as broken Node.js projects.
23
+
3
24
  ## 0.4.0
4
25
 
5
26
  - Added multi-workspace Hub mode: one DevSurface instance serves multiple project
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <h1>DevSurface</h1>
8
8
 
9
- <p><strong>Turn any Node.js repository into a local developer control panel.</strong></p>
9
+ <p><strong>Local developer dashboard for Node.js repositories.</strong></p>
10
10
 
11
11
  <p>
12
12
  <a href="#quick-start">Quick Start</a>
@@ -22,19 +22,30 @@
22
22
  <a href="https://github.com/mrfandu1/devsurface">
23
23
  <img alt="DevSurface ready" src="docs/devsurface-badge.svg">
24
24
  </a>
25
+ <a href="https://www.npmjs.com/package/devsurface">
26
+ <img alt="npm version" src="https://img.shields.io/npm/v/devsurface.svg">
27
+ </a>
28
+ <a href="https://www.npmjs.com/package/devsurface">
29
+ <img alt="npm downloads" src="https://img.shields.io/npm/dm/devsurface.svg">
30
+ </a>
31
+ <a href="https://github.com/mrfandu1/devsurface/stargazers">
32
+ <img alt="GitHub stars" src="https://img.shields.io/github/stars/mrfandu1/devsurface?style=flat">
33
+ </a>
25
34
  <a href="LICENSE">
26
- <img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-informational">
35
+ <img alt="License: MIT" src="https://img.shields.io/github/license/mrfandu1/devsurface">
27
36
  </a>
28
37
  <img alt="Built with TypeScript" src="https://img.shields.io/badge/Built%20with-TypeScript-3178c6">
29
38
  </p>
30
39
 
31
40
  </div>
32
41
 
33
- DevSurface scans a project, starts a local dashboard, and shows the things contributors
34
- usually need before a project will run: package scripts, environment files, ports,
35
- Docker Compose, live command logs, and repo health warnings.
42
+ DevSurface is a zero-config CLI and local browser dashboard for understanding,
43
+ configuring, and running unfamiliar repositories. It detects Node.js package scripts,
44
+ Python, Go, and Java project commands, environment files, occupied ports, Docker
45
+ Compose services, frameworks, live command logs, repo health checks, and
46
+ multi-workspace projects.
36
47
 
37
- No config file is required.
48
+ No global install, account, cloud service, or config file is required.
38
49
 
39
50
  ```bash
40
51
  npx devsurface
@@ -64,6 +75,36 @@ DevSurface is local-first:
64
75
  - `.env` values are never displayed.
65
76
  - Commands are shown before they run.
66
77
 
78
+ ## Use Cases
79
+
80
+ DevSurface is useful when you need to:
81
+
82
+ - Onboard contributors to an unfamiliar Node.js repository.
83
+ - Explore available npm, pnpm, Yarn, or Bun scripts.
84
+ - Check missing environment variables before starting a project.
85
+ - Detect local port conflicts.
86
+ - View and control Docker Compose services.
87
+ - Run development commands from a browser dashboard.
88
+ - Check repository onboarding health in GitHub Actions.
89
+ - Manage multiple local project workspaces.
90
+
91
+ ## Supported Frameworks and Tools
92
+
93
+ DevSurface detects projects using:
94
+
95
+ - Next.js
96
+ - Vite
97
+ - Express
98
+ - Fastify
99
+ - NestJS
100
+ - Remix
101
+ - Prisma
102
+ - Python: FastAPI/Uvicorn, Flask, Django
103
+ - Go modules
104
+ - Java: Maven and Gradle
105
+ - Docker Compose
106
+ - npm, pnpm, Yarn, and Bun
107
+
67
108
  ## How It Compares
68
109
 
69
110
  | Tool | What it does | Where DevSurface is different |
@@ -287,14 +328,43 @@ DevSurface is designed for local development.
287
328
 
288
329
  - Local dashboard servers bind to loopback hosts.
289
330
  - Container deployments use `DEVSURFACE_CONTAINER=true`.
290
- - Workspace registration can be limited with `DEVSURFACE_WORKSPACE_ROOTS`.
331
+ - Workspace registration can be limited with `DEVSURFACE_WORKSPACE_ROOTS`. In container
332
+ or shared-host deployments, set this to restrict which directories the hub will accept;
333
+ on a single-user laptop it is optional and DevSurface starts with no extra config.
291
334
  - `.env` values are never returned by scanners, API routes, CLI output, or UI panels.
292
335
  - Dashboard command runs show the exact command string first.
293
336
  - Docker service start and stop actions show the exact Compose command before running.
294
337
  - Destructive-looking configured commands, such as `rm -rf`, `docker volume rm`,
295
- database drops, and `git clean -fd`, are visibly marked before execution.
338
+ database drops, and `git clean -fd`, are visibly marked before execution. This list is a
339
+ helpful warning, not a sandbox: it flags common footguns for confirmation but does not
340
+ attempt to detect every dangerous command. Treat package scripts as code that runs as you.
296
341
  - Child processes started by DevSurface are cleaned up when the dashboard exits.
297
342
 
343
+ ## FAQ
344
+
345
+ ### What is DevSurface?
346
+
347
+ DevSurface is a local developer dashboard for understanding, configuring, and running
348
+ Node.js repositories.
349
+
350
+ ### Can DevSurface run npm scripts from a browser?
351
+
352
+ Yes. DevSurface detects `package.json` scripts and lets you run them while viewing
353
+ live logs and exit status.
354
+
355
+ ### Does DevSurface display .env values?
356
+
357
+ No. DevSurface checks whether environment keys exist, but never displays their values.
358
+
359
+ ### Does DevSurface require configuration?
360
+
361
+ No. It works automatically, with an optional `devsurface.config.json` file for richer
362
+ commands, groups, ports, env paths, and docs links.
363
+
364
+ ### Does DevSurface support Docker Compose?
365
+
366
+ Yes. It detects Compose services and provides service status, controls, and recent logs.
367
+
298
368
  ## Examples
299
369
 
300
370
  This repository includes two sample projects:
@@ -68,6 +68,33 @@ function toGroups(value, warnings) {
68
68
  }
69
69
  return groups;
70
70
  }
71
+ var MAX_SETUP_GUIDE_STEPS = 24;
72
+ var MAX_SETUP_GUIDE_STEP_LENGTH = 200;
73
+ function toSetupGuide(value, warnings) {
74
+ if (value === void 0) {
75
+ return void 0;
76
+ }
77
+ if (!Array.isArray(value)) {
78
+ warnings.push("setupGuide must be an array of strings.");
79
+ return void 0;
80
+ }
81
+ const steps = [];
82
+ for (const entry of value) {
83
+ if (typeof entry !== "string") {
84
+ warnings.push("setupGuide entries must be strings.");
85
+ continue;
86
+ }
87
+ const trimmed = entry.trim();
88
+ if (trimmed.length === 0) {
89
+ continue;
90
+ }
91
+ steps.push(trimmed.slice(0, MAX_SETUP_GUIDE_STEP_LENGTH));
92
+ }
93
+ if (steps.length > MAX_SETUP_GUIDE_STEPS) {
94
+ warnings.push(`setupGuide may contain at most ${MAX_SETUP_GUIDE_STEPS} steps.`);
95
+ }
96
+ return steps.slice(0, MAX_SETUP_GUIDE_STEPS);
97
+ }
71
98
  function toPorts(value, warnings) {
72
99
  if (value === void 0) {
73
100
  return void 0;
@@ -122,6 +149,7 @@ function validateConfig(raw) {
122
149
  ports: toPorts(raw.ports, warnings),
123
150
  env,
124
151
  services,
152
+ setupGuide: toSetupGuide(raw.setupGuide ?? raw.setup_guide, warnings),
125
153
  docs
126
154
  },
127
155
  warnings