@eugene218/noxdev 1.0.0 → 1.0.2

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.
@@ -0,0 +1,26 @@
1
+ FROM ubuntu:24.04
2
+ ENV DEBIAN_FRONTEND=noninteractive
3
+
4
+ RUN apt-get update && apt-get install -y \
5
+ curl \
6
+ git \
7
+ sudo \
8
+ ca-certificates \
9
+ && rm -rf /var/lib/apt/lists/*
10
+
11
+ # Node.js 22 LTS
12
+ RUN curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
13
+ && apt-get install -y nodejs \
14
+ && npm install -g pnpm
15
+
16
+ # Claude Code CLI via npm (works in non-interactive Docker builds)
17
+ RUN npm install -g @anthropic-ai/claude-code
18
+
19
+ # Non-root user (unused at runtime — host UID/GID + HOME=/tmp override via --user flag)
20
+ # Kept for standalone `docker run noxdev-runner` debugging without --user flag
21
+ RUN useradd -m -s /bin/bash runner \
22
+ && echo "runner ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
23
+
24
+ USER runner
25
+ WORKDIR /workspace
26
+ ENV HOME=/home/runner
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eugene218/noxdev",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Autonomous overnight coding agent orchestrator — ship code while you sleep",
5
5
  "keywords": [
6
6
  "cli",
@@ -19,11 +19,13 @@
19
19
  },
20
20
  "homepage": "https://github.com/eugeneorlov/noxdev",
21
21
  "engines": {
22
- "node": ">=18.0.0"
22
+ "node": ">=20.0.0 <23.0.0"
23
23
  },
24
24
  "files": [
25
25
  "dist/",
26
26
  "scripts/",
27
+ "docker/",
28
+ "templates/",
27
29
  "README.md",
28
30
  "LICENSE"
29
31
  ],
@@ -32,6 +34,7 @@
32
34
  "noxdev": "./dist/index.js"
33
35
  },
34
36
  "scripts": {
37
+ "prebuild": "mkdir -p docker && cp ../../docker/Dockerfile docker/Dockerfile",
35
38
  "build": "tsup",
36
39
  "postbuild": "rm -rf dist/scripts && cp -r scripts dist/scripts && rm -rf dist/dashboard && cp -r ../dashboard/dist dist/dashboard",
37
40
  "lint": "tsc --noEmit",
@@ -0,0 +1,168 @@
1
+ # noxdev demo — your first autonomous build
2
+
3
+ # This is a baked-in demo task spec shipped with noxdev.
4
+ # It transforms a fresh Vite + React + TypeScript scaffold into a
5
+ # polished welcome page, built entirely by an autonomous agent.
6
+ #
7
+ # Estimated runtime: 2-3 minutes total
8
+ # Gate: pnpm build must pass after each task
9
+
10
+ ## T1: Replace the Vite starter App with a noxdev welcome page
11
+ - STATUS: pending
12
+ - FILES: src/App.tsx, src/App.css
13
+ - VERIFY: pnpm build && grep -q "noxdev" src/App.tsx && ! grep -q "viteLogo" src/App.tsx
14
+ - CRITIC: skip
15
+ - PUSH: auto
16
+ - SPEC: Replace the contents of src/App.tsx and src/App.css to create a
17
+ centered welcome page that demonstrates noxdev's spec-driven workflow.
18
+
19
+ REQUIREMENTS for src/App.tsx:
20
+ - Remove ALL Vite starter content: viteLogo import, reactLogo import,
21
+ useState counter, the entire default JSX with logos and counter button.
22
+ - Do NOT keep any reference to viteLogo, reactLogo, or the count state.
23
+ - Replace with a single functional component that renders:
24
+ - A main container div with className "app-container"
25
+ - An owl emoji 🦉 inside a div with className "app-owl"
26
+ - An h1 with the text "noxdev demo"
27
+ - A subtitle paragraph with className "app-subtitle":
28
+ "This page was built by an autonomous agent while you watched."
29
+ - A "What just happened" section with className "app-explainer":
30
+ - h2 with text "What just happened?"
31
+ - A paragraph explaining: "You ran one command. noxdev spun up a
32
+ Docker container, fed a task spec to Claude Code, captured the
33
+ diff, and committed the result. No clicks. No typing. Just specs."
34
+ - A footer paragraph with className "app-footer":
35
+ "Welcome to spec-driven development."
36
+
37
+ REQUIREMENTS for src/App.css:
38
+ - Replace the ENTIRE file. Remove all default Vite styles.
39
+ - Use CSS variables at the top for the color palette:
40
+ --bg: #0a0a12 (deep near-black)
41
+ --surface: #161623
42
+ --text: #e4e4ef
43
+ --muted: #9494a8
44
+ --gold: #C9A84C (noxdev brand color)
45
+ --border: #2a2a3e
46
+ - Body / .app-container styles:
47
+ - body: background var(--bg), color var(--text), system font stack
48
+ (-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif)
49
+ - margin 0, min-height 100vh
50
+ - .app-container: max-width 640px, margin 0 auto, padding 80px 24px,
51
+ text-align center
52
+ - .app-owl: font-size 80px, margin-bottom 24px, line-height 1
53
+ - h1: font-size 48px, font-weight 700, color var(--gold),
54
+ margin 0 0 16px 0, letter-spacing -0.02em
55
+ - .app-subtitle: font-size 18px, color var(--muted), margin 0 0 64px 0,
56
+ line-height 1.5
57
+ - .app-explainer: background var(--surface), border 1px solid var(--border),
58
+ border-radius 12px, padding 32px, margin-bottom 48px, text-align left
59
+ - .app-explainer h2: font-size 20px, color var(--gold),
60
+ margin 0 0 12px 0, font-weight 600
61
+ - .app-explainer p: font-size 15px, color var(--text), margin 0,
62
+ line-height 1.6
63
+ - .app-footer: font-size 14px, color var(--muted), font-style italic,
64
+ margin 0
65
+
66
+ Do NOT add any imports beyond React. Do NOT add useState, useEffect,
67
+ or any hooks. This is a purely static welcome page.
68
+ Do NOT delete src/main.tsx or src/index.css — leave those alone.
69
+
70
+ ## T2: Clean up Vite starter assets
71
+ - STATUS: pending
72
+ - FILES: src/index.css, public/vite.svg, src/assets/react.svg
73
+ - VERIFY: pnpm build && ! grep -q "vite.svg" index.html
74
+ - CRITIC: skip
75
+ - PUSH: auto
76
+ - SPEC: Remove the leftover Vite starter assets and update index.css.
77
+
78
+ STEPS:
79
+ 1. Replace the contents of src/index.css with a minimal reset:
80
+ ```css
81
+ :root {
82
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI",
83
+ Roboto, Oxygen, Ubuntu, sans-serif;
84
+ line-height: 1.5;
85
+ font-weight: 400;
86
+ color-scheme: dark;
87
+ }
88
+ * {
89
+ box-sizing: border-box;
90
+ }
91
+ body {
92
+ margin: 0;
93
+ min-width: 320px;
94
+ min-height: 100vh;
95
+ }
96
+ ```
97
+ 2. Delete the file public/vite.svg (it is no longer used).
98
+ Use rm public/vite.svg
99
+ 3. Delete the file src/assets/react.svg (it is no longer used).
100
+ Use rm src/assets/react.svg
101
+ 4. If src/assets/ is now empty, remove it with rmdir src/assets
102
+ 5. Update index.html in the project root: change the <link rel="icon">
103
+ line from href="/vite.svg" to href="data:," (an empty data URI).
104
+ This removes the broken favicon reference without needing a new file.
105
+ 6. Update the <title> in index.html from "Vite + React + TS" to
106
+ "noxdev demo".
107
+
108
+ Do NOT touch src/main.tsx, package.json, vite.config.ts, or tsconfig.json.
109
+
110
+ ## T3: Add a brief README explaining what noxdev built
111
+ - STATUS: pending
112
+ - FILES: README.md
113
+ - VERIFY: pnpm build && grep -q "noxdev" README.md
114
+ - CRITIC: skip
115
+ - PUSH: auto
116
+ - SPEC: Replace the default Vite README.md with a short explanation of
117
+ what just happened in this demo.
118
+
119
+ Replace the entire contents of README.md with exactly this markdown:
120
+
121
+ # noxdev demo
122
+
123
+ This project was built by an autonomous agent using
124
+ [noxdev](https://github.com/eugeneorlov/noxdev).
125
+
126
+ ## What happened
127
+
128
+ You ran `noxdev demo`. noxdev:
129
+
130
+ 1. Scaffolded a fresh Vite + React + TypeScript project
131
+ 2. Initialized a git repository with an initial commit
132
+ 3. Registered the project with noxdev
133
+ 4. Spun up a Docker container with Claude Code inside
134
+ 5. Fed a task spec to the agent
135
+ 6. Captured the resulting diff
136
+ 7. Committed the changes to a worktree branch
137
+
138
+ All without you typing a single line of code.
139
+
140
+ ## Run it locally
141
+
142
+ ```bash
143
+ pnpm install
144
+ pnpm dev
145
+ ```
146
+
147
+ Open http://localhost:5173 in your browser.
148
+
149
+ ## What is spec-driven development?
150
+
151
+ Instead of writing code, you write specifications. A specification
152
+ describes what the agent should build, which files to touch, and how
153
+ to verify the result. The agent reads the spec and produces code.
154
+
155
+ See `TASKS.md` in the project root for the specs that built this page.
156
+
157
+ ## Next steps
158
+
159
+ - Edit `TASKS.md` to add your own task
160
+ - Run `noxdev run noxdev-demo` to execute new tasks
161
+ - Run `noxdev dashboard` to see the visual review interface
162
+ - Read the noxdev docs to learn the full workflow
163
+
164
+ ---
165
+
166
+ *Built with noxdev. Ship code while you sleep.* 🦉
167
+
168
+ Do NOT touch any other files.