dishant-kumar-thakur
1e78b5e279
feat(phase-10): STRUCT-004 project format detection utility
...
Task: STRUCT-004
Branch: cline-dev-dishant
Cross-branch notes: none -- no shared dependencies with Richard phase 9/6 work
- ProjectFormatDetector class (injectable filesystem, fully testable)
- detect() async + detectSync() sync variants
- Detects legacy (project.json) vs v2 (nodegx.project.json + _registry.json)
- Returns { format, confidence, indicators } for transparent decision-making
- Scoring system: v2 needs score >= 2 to avoid false positives
- Errors in exists() treated as not-found (graceful degradation)
- V2_INDICATORS / LEGACY_INDICATORS sentinel constants exported
- createNodeDetector() factory for Node.js/test contexts
- Convenience methods: getFormat(), isV2(), isLegacy()
- 30 tests in tests/io/ProjectFormatDetector.test.ts
- detect(): 12 cases (all combinations, async fs, error handling)
- detectSync(): 4 cases (incl. throws on async fs)
- Convenience methods: 7 cases
- Constants: 3 cases
- createNodeDetector() integration: 4 cases (real tmp dirs)
- Updated tests/io/index.ts to export detector tests
- Updated PROGRESS-dishant.md: STRUCT-001/002/003/004 all marked complete
2026-02-19 01:19:46 +05:30
dishant-kumar-thakur
d54e2a55a0
feat(phase-10): STRUCT-003 import engine core
...
Task: STRUCT-003
Branch: cline-dev-dishant
Cross-branch notes: none -- no shared dependencies with Richard phase 9/6 work
- ProjectImporter class (pure, filesystem-agnostic)
- Converts v2 multi-file format back to legacy project.json
- unflattenNodes: reconstructs recursive tree from flat NodeV2 array (two-pass)
- toLegacyName: uses preserved component.path for perfect round-trip fidelity
- Metadata merge: routes/styles merged back into project.metadata
- stateParameters -> stateParamaters reversal (legacy typo preserved)
- Non-fatal warnings: component failures collected, not thrown
- 55 unit tests in tests/io/ProjectImporter.test.ts
- unflattenNodes: 11 cases
- toLegacyName: 4 cases
- ProjectImporter.import(): 20 cases
- Round-trip (export -> import): 20 cases
- Updated tests/io/index.ts to export importer tests
- Updated PROGRESS-dishant.md: STRUCT-001/002/003 all marked complete
2026-02-19 01:07:22 +05:30
dishant-kumar-thakur
fbce66e0db
feat(phase-10): STRUCT-002 export engine core
...
Task: STRUCT-002
Branch: cline-dev-dishant
Cross-branch notes: none no shared dependencies with Richard's phase 9/6 work
- ProjectExporter class (pure, filesystem-agnostic)
- Converts legacy project.json to v2 multi-file format
- Outputs: nodegx.project.json, nodegx.routes.json, nodegx.styles.json,
components/_registry.json, per-component component.json/nodes.json/connections.json
- Helper exports: legacyNameToPath, inferComponentType, flattenNodes, countNodes
- Full legacy type definitions (LegacyProject, LegacyComponent, LegacyNode, etc.)
- 50 unit tests in tests/io/ProjectExporter.test.ts
- Registered in tests/index.ts
2026-02-19 00:23:33 +05:30
dishant-kumar-thakur
f8d59cce0b
feat(schemas): STRUCT-001 - JSON Schema Definition for v2 project format
...
Add 8 JSON schemas, SchemaValidator with Ajv v8, TS interfaces, and 33 tests.
All smoke tests passing. Critical path for STRUCT-002 (Export Engine).
2026-02-18 23:45:51 +05:30
dishant-kumar-thakur
10cf761d52
chore(sprint-1): Dishant branch setup PROGRESS files + .clinerules section
...
Branch: cline-dev-dishant
Cross-branch notes: Richard completed STYLE-001 Phase 3+4 and CLEANUP-000H (Phase 9 styles only). No shared dependencies with Phase 11 or Phase 10 scope.
2026-02-18 21:10:12 +05:30
Richard Osborne
4a1080d547
Refactored dev-docs folder after multiple additions to organise correctly
2026-01-07 20:28:40 +01:00