Files
automaker/package.json
Stefan de Vogelaere c4652190eb feat: add three viewing modes for app specification (#566)
* feat: add three viewing modes for app specification

Introduces View, Edit, and Source modes for the spec page:

- View: Clean read-only display with cards, badges, and accordions
- Edit: Structured form-based editor for all spec fields
- Source: Raw XML editor for advanced users

Also adds @automaker/spec-parser shared package for XML parsing
between server and client.

* fix: address PR review feedback

- Replace array index keys with stable UUIDs in array-field-editor,
  features-section, and roadmap-section components
- Replace regex-based XML parsing with fast-xml-parser for robustness
- Simplify renderContent logic in spec-view by removing dead code paths

* fix: convert git+ssh URLs to https in package-lock.json

* fix: address PR review feedback for spec visualiser

- Remove unused RefreshCw import from spec-view.tsx
- Add explicit parsedSpec check in renderContent for robustness
- Hide save button in view mode since it's read-only
- Remove GripVertical drag handles since drag-and-drop is not implemented
- Rename Map imports to MapIcon to avoid shadowing global Map
- Escape tagName in xml-utils.ts RegExp functions for safety
- Add aria-label attributes for accessibility on mode tabs

* fix: address additional PR review feedback

- Fix Textarea controlled/uncontrolled warning with default value
- Preserve IDs in useEffect sync to avoid unnecessary remounts
- Consolidate lucide-react imports
- Add JSDoc note about tag attributes limitation in xml-utils.ts
- Remove redundant disabled prop from SpecModeTabs
2026-01-18 23:45:43 +01:00

79 lines
4.1 KiB
JSON

{
"name": "automaker",
"version": "0.12.0rc",
"private": true,
"engines": {
"node": ">=22.0.0 <23.0.0"
},
"workspaces": [
"apps/*",
"libs/*"
],
"scripts": {
"postinstall": "node -e \"const fs=require('fs');if(process.platform==='darwin'){['darwin-arm64','darwin-x64'].forEach(a=>{const p='node_modules/node-pty/prebuilds/'+a+'/spawn-helper';if(fs.existsSync(p))fs.chmodSync(p,0o755)})}\" && node scripts/fix-lockfile-urls.mjs",
"fix:lockfile": "node scripts/fix-lockfile-urls.mjs",
"dev": "./start-automaker.sh",
"start": "./start-automaker.sh --production",
"_dev:web": "npm run dev:web --workspace=apps/ui",
"_dev:electron": "npm run dev:electron --workspace=apps/ui",
"_dev:electron:debug": "npm run dev:electron:debug --workspace=apps/ui",
"_dev:electron:wsl": "npm run dev:electron:wsl --workspace=apps/ui",
"_dev:electron:wsl:gpu": "npm run dev:electron:wsl:gpu --workspace=apps/ui",
"_dev:server": "npm run dev --workspace=apps/server",
"dev:web": "npm run build:packages && npm run _dev:web",
"dev:electron": "npm run build:packages && npm run _dev:electron",
"dev:electron:debug": "npm run build:packages && npm run _dev:electron:debug",
"dev:electron:wsl": "npm run build:packages && npm run _dev:electron:wsl",
"dev:electron:wsl:gpu": "npm run build:packages && npm run _dev:electron:wsl:gpu",
"dev:server": "npm run build:packages && npm run _dev:server",
"dev:docker": "docker compose up",
"dev:docker:rebuild": "docker compose build --no-cache && docker compose up",
"dev:full": "npm run build:packages && concurrently \"npm run _dev:server\" \"npm run _dev:web\"",
"build": "npm run build:packages && npm run build --workspace=apps/ui",
"build:packages": "npm run build -w @automaker/types && npm run build -w @automaker/platform && npm run build -w @automaker/utils -w @automaker/spec-parser && npm run build -w @automaker/prompts -w @automaker/model-resolver -w @automaker/dependency-resolver && npm run build -w @automaker/git-utils",
"build:server": "npm run build:packages && npm run build --workspace=apps/server",
"build:electron": "npm run build:packages && npm run build:electron --workspace=apps/ui",
"build:electron:dir": "npm run build:packages && npm run build:electron:dir --workspace=apps/ui",
"build:electron:win": "npm run build:packages && npm run build:electron:win --workspace=apps/ui",
"build:electron:win:dir": "npm run build:packages && npm run build:electron:win:dir --workspace=apps/ui",
"build:electron:mac": "npm run build:packages && npm run build:electron:mac --workspace=apps/ui",
"build:electron:mac:dir": "npm run build:packages && npm run build:electron:mac:dir --workspace=apps/ui",
"build:electron:linux": "npm run build:packages && npm run build:electron:linux --workspace=apps/ui",
"build:electron:linux:dir": "npm run build:packages && npm run build:electron:linux:dir --workspace=apps/ui",
"lint": "npm run lint --workspace=apps/ui",
"test": "npm run test --workspace=apps/ui",
"test:headed": "npm run test:headed --workspace=apps/ui",
"test:ui": "npm run test --workspace=apps/ui -- --ui",
"test:packages": "vitest run --project='!server'",
"test:server": "vitest run --project=server",
"test:server:coverage": "vitest run --project=server --coverage",
"test:unit": "vitest run",
"test:unit:watch": "vitest",
"test:all": "vitest run",
"lint:lockfile": "node scripts/lint-lockfile.mjs",
"format": "prettier --write .",
"format:check": "prettier --check .",
"rebuild": "rm -rf node_modules apps/*/node_modules libs/*/node_modules && npm install",
"prepare": "husky && npm run build:packages"
},
"lint-staged": {
"*.{js,jsx,ts,tsx,json,css,md,html,yml,yaml}": [
"prettier --write"
]
},
"dependencies": {
"cross-spawn": "7.0.6",
"rehype-sanitize": "6.0.0",
"tree-kill": "1.2.2"
},
"devDependencies": {
"husky": "9.1.7",
"lint-staged": "16.2.7",
"prettier": "3.7.4",
"vitest": "4.0.16"
},
"optionalDependencies": {
"dmg-license": "^1.0.11"
}
}