Releases: nativeapptemplate/nativeapptemplate-agent
v0.1.2
Patch release — first stable
Fixes two launch-blocker bugs in v0.1.1 that surfaced when running the published package via npx from a /tmp/ directory.
This is the first version that's verified-clean from a never-seen-before user cwd. v0.1.0 and v0.1.1 have been deprecated.
Install:
npx -y nativeapptemplate-agent@latest "your spec"What changed
Bug 1 — Ruby script path resolution (src/ruby.ts)
src/ruby.ts looked for scripts/ruby/rename.rb relative to process.cwd(), not the package install directory. From /tmp/anything/, this looked for /tmp/anything/scripts/ruby/rename.rb and failed:
Error: ruby script rename.rb exited 1: ruby: No such file or directory --
/private/tmp/nat-test3/scripts/ruby/rename.rb (LoadError)
Fix: resolve the script path relative to the module's own location via import.meta.url + fileURLToPath. Module-relative for packaged resources; cwd-relative for user-output paths (out/, tmp/trace/, tmp/screenshots/) which were already correct and stay that way.
Bug 2 — rename.rb skip-rule false-matched user cwd ancestors (scripts/ruby/rename.rb)
The renamer's skip?(path) check ran SKIP_DIR_SEGMENTS (tmp, log, build, node_modules, .git, …) against the absolute path. When the user runs from /tmp/myproject/, every file under that prefix matched tmp and got skipped — so the renamer scanned 0 files and produced 0 substitutions. The substrate was copied but never renamed, and Layer 1 reported thousands of leftover tokens.
Fix: compute the path relative to the project root before running skip checks. /tmp/myproject/out/<slug>/rails/README.md becomes out/<slug>/rails/README.md for skip-comparison purposes, no skip-segment matches, file is scanned.
Verified
End-to-end run from /tmp/nat-test4/ (a previously-broken cwd):
$ npx nativeapptemplate-agent "a personal task tracker with due dates"
nativeapptemplate-agent: received spec: a personal task tracker with due dates
=== run complete ===
result: Layer 1 3/3 pass · Layer 2 3/3 pass · Layer 3 skipped · reviewer PASS
overall: PASS
rg "Shop|Shopkeeper|ItemTag" out/task-tracker/ outside vendor/bundle/ → zero matches. Substrate fully renamed.
Deprecations
| Version | Status | Reason |
|---|---|---|
| 0.1.0 | deprecated | Silent no-op when invoked via npm bin symlink. |
| 0.1.1 | deprecated | Renamer no-op when run from /tmp/ or any path containing tmp/. |
| 0.1.2 | latest | Verified clean from /tmp/. |
npm install nativeapptemplate-agent (no version) now resolves to 0.1.2.
Full changelog: v0.1.1...v0.1.2
v0.1.1 — bin entry-guard fix
Warning
v0.1.1 has been deprecated. Use v0.1.2 or later. The renamer silently no-ops when run from /tmp/ or any path containing tmp/ as a directory segment, and the Ruby script path was resolved against the user's cwd instead of the package directory — so npx nativeapptemplate-agent from /tmp/anything/ failed entirely. Both bugs are fixed in v0.1.2.
npm warn deprecated nativeapptemplate-agent@0.1.1: Renamer no-op when run from /tmp/ or any path containing 'tmp/'. Use 0.1.2+.
Patch release
Fixes a launch-blocker bug in v0.1.0 where the CLI exited 0 silently when invoked via the npm bin symlink (the npx and ./node_modules/.bin/... code path).
Install:
npx -y nativeapptemplate-agent@0.1.1 "your spec"What changed
src/index.ts entry-guard previously compared import.meta.url against process.argv[1] without resolving symlinks. When npm installs a package's bin, it symlinks node_modules/.bin/<name> to the actual entry file — so process.argv[1] was the symlink path while import.meta.url was the resolved file URL. The two never matched, the guard fell through silently, and main() was never called.
Fix: resolve both sides via realpathSync + fileURLToPath before comparing. Direct invocation (node dist/index.js) and symlink invocation (./node_modules/.bin/...) now produce identical output.
Verified
- Direct:
node dist/index.js "test spec"→ full output,overall: PASS, exit 0 - Symlinked:
npx -y nativeapptemplate-agent@0.1.1 "test spec"from a clean directory → identical output npm view nativeapptemplate-agent@0.1.0 deprecatedconfirms 0.1.0 is deprecated with a yellow warning steering users to 0.1.1+
v0.1.0 has been deprecated
Anyone running npm install nativeapptemplate-agent@0.1.0 now sees:
npm warn deprecated nativeapptemplate-agent@0.1.0: Silent no-op when invoked via npm bin symlink. Use 0.1.1+.
The version stays available in the registry for anyone with a lockfile pin to 0.1.0, but new installs default to 0.1.1.
v0.1.0 — first release
⚠️ v0.1.0 has a launch-blocker bug — the CLI exits 0 silently when invoked vianpxor any npm bin symlink. Use v0.1.1 or later instead. The 0.1.0 npm package has been deprecated; new installs ofnativeapptemplate-agentdefault to v0.1.1+.
Highlights
The agent generates three coherent platform implementations from a one-sentence natural-language SaaS spec, validated end-to-end through four layers.
Validation stack:
- Layer 1 — Structural — ripgrep leftover-token scan across all three platforms
- Layer 2 — Runtime — fast-mode toolchain probe by default; real
xcodebuild build+./gradlew assembleDebugwhen opted in viaNATIVEAPPTEMPLATE_VISUAL=1 - Layer 3 — Semantic — Opus 4.7 vision judge against captured home-screen screenshots, median-of-3 sampling per criterion, two-criterion Stage 1 rubric (substrate-leak detection + render-failure detection)
- Reviewer — OpenAPI three-way contract diff with canonical path normalization across Rails OpenAPI / iOS Request structs / Android Retrofit interfaces
Validated demo specs (overall PASS, all four layers green):
"a walk-in clinic queue for small veterinary practices"— adapt path"a restaurant waitlist for casual dining"— adapt path"a personal task tracker with due dates"— replace path
Dual-edition support: Same code path works against the free (MIT) edition or the paid edition substrate without modification — pick which by pointing env vars at the corresponding repos. Paid-only features (org switching, invitations, role permissions) survive the rename pipeline intact.
Quickstart
export ANTHROPIC_API_KEY=sk-ant-...
export NATIVEAPPTEMPLATE_API=/path/to/nativeapptemplateapi
export NATIVEAPPTEMPLATE_IOS=/path/to/NativeAppTemplate-Free-iOS
export NATIVEAPPTEMPLATE_ANDROID=/path/to/NativeAppTemplate-Free-Android
npm run dev -- "a walk-in clinic queue for small veterinary practices"For Layer 3 visual judging (with sim/emulator booted):
ANDROID_SERIAL=emulator-5554 NATIVEAPPTEMPLATE_VISUAL=1 \
npm run dev -- "a walk-in clinic queue for small veterinary practices"See README for the full validation table and screenshots.
Acknowledgments
Built with Claude Opus 4.7 + Claude Code. Substrate is the free-edition NativeAppTemplate family of repos.