g360-cli 1.14.0 → 1.15.1
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/README.md +72 -6
- package/package.json +71 -71
- package/src/assets/config/g360-skills.json +126 -0
- package/src/assets/config/project-types.json +8 -0
- package/src/assets/snippets/snippets.json +4 -0
- package/src/assets/templates/lit-web/src/index.js +1 -1
- package/src/assets/templates/python-cli/src/core/__init__.py +0 -0
- package/src/assets/templates/python-flet/pyproject.toml +1 -0
- package/src/assets/templates/python-flet/src/core/skill.json +1 -1
- package/src/assets/templates/python-flet-migrate/pyproject.toml +1 -3
- package/src/assets/templates/python-flet-polished/src/core/skill.json +16 -17
- package/src/assets/templates/solid-web/src/components/App.jsx +2 -2
- package/src/commands/clean.js +0 -12
- package/src/commands/docs.js +105 -1
- package/src/commands/ingest.js +11 -61
- package/src/commands/init.js +1 -1
- package/src/commands/lint.js +35 -77
- package/src/commands/scan.js +9 -37
- package/src/commands/validate.js +6 -36
- package/src/lib/file-utils.js +89 -2
- package/src/lib/python-runner.js +77 -0
- package/src/assets/templates/python-cli/package.json +0 -7
- /package/src/assets/config/{skills.json → agent-skills.json} +0 -0
package/README.md
CHANGED
|
@@ -85,7 +85,8 @@ CLI tool para el ecosistema G360 que permite inicializar proyectos con estructur
|
|
|
85
85
|
- **Paquete Python** - `g360-core` en PyPI para pipelines de datos independientes
|
|
86
86
|
- **Auditoría** - Verifica compliance de proyectos G360
|
|
87
87
|
- **Limpieza** - Elimina assets embebidos antes de deployment
|
|
88
|
-
- **Multi-plantilla** - Web (Lit, Solid, Svelte, PWA), Python (CLI, Flet,
|
|
88
|
+
- **Multi-plantilla** - Web (Lit, Solid, Svelte, PWA, React), Python (CLI, Flet ⭐, Flet Polished ⭐, CustomTkinter, Migration)
|
|
89
|
+
- **Flet Polished** - Template estandar con dual theme, auto-refresh, hash cache, search debounce, KPI glow, G360 signature, portable launcher
|
|
89
90
|
- **Brand System v2.0.0** - Sistema de marca unificado con favicons, PWA icons, logotypes para G360 y CIPSA
|
|
90
91
|
- **Modo portable** - Proyectos Python con ejecución directa (sin PyInstaller)
|
|
91
92
|
- **Modo offline** - Funciona sin conexión usando assets cacheados
|
|
@@ -95,7 +96,7 @@ CLI tool para el ecosistema G360 que permite inicializar proyectos con estructur
|
|
|
95
96
|
|
|
96
97
|
## Versión
|
|
97
98
|
|
|
98
|
-
**Current: v1.
|
|
99
|
+
**Current: v1.15.1** — [Ver en npm](https://www.npmjs.com/package/g360-cli)
|
|
99
100
|
|
|
100
101
|
---
|
|
101
102
|
|
|
@@ -116,7 +117,7 @@ npm install -g g360-cli
|
|
|
116
117
|
|
|
117
118
|
```bash
|
|
118
119
|
g360 --version
|
|
119
|
-
# → 1.
|
|
120
|
+
# → 1.15.0
|
|
120
121
|
|
|
121
122
|
g360 health
|
|
122
123
|
```
|
|
@@ -169,7 +170,7 @@ g360 init <nombre> [opciones]
|
|
|
169
170
|
|
|
170
171
|
| Opción | Descripción | Valor por defecto |
|
|
171
172
|
|--------|-------------|-------------------|
|
|
172
|
-
| `-t, --template <tipo>` | Tipo de plantilla | `
|
|
173
|
+
| `-t, --template <tipo>` | Tipo de plantilla (default: auto segun skill) | `auto` |
|
|
173
174
|
| `-s, --skill <skill>` | Skill a usar | `corporativo-movil` |
|
|
174
175
|
| `-d, --dir <ruta>` | Directorio destino | `.` |
|
|
175
176
|
| `--dry-run` | Previsualizar sin crear | `false` |
|
|
@@ -689,6 +690,45 @@ g360 ingest reporte.xlsx -o mi_reporte.csv
|
|
|
689
690
|
|
|
690
691
|
## Plantillas
|
|
691
692
|
|
|
693
|
+
### python-flet-polished ⭐ (Estandar actual)
|
|
694
|
+
|
|
695
|
+
Plantilla desktop Python con Flet — patrones de UI avanzados heredados de produccion.
|
|
696
|
+
|
|
697
|
+
```
|
|
698
|
+
mi-proyecto/
|
|
699
|
+
├── main.py
|
|
700
|
+
├── src/
|
|
701
|
+
│ ├── app.py
|
|
702
|
+
│ ├── config/theme.py
|
|
703
|
+
│ ├── core/constants.py, processor.py
|
|
704
|
+
│ └── ui/dashboard.py, kpi_card.py, search_overlay.py
|
|
705
|
+
├── g360_flet/g360_signature.py
|
|
706
|
+
├── assets/fonts/, images/, data/
|
|
707
|
+
├── run.bat, launch.vbs, build-portable.bat
|
|
708
|
+
├── skill.json, pyproject.toml
|
|
709
|
+
└── sync_portable.py
|
|
710
|
+
```
|
|
711
|
+
|
|
712
|
+
### web-pwa
|
|
713
|
+
|
|
714
|
+
Plantilla Progressive Web App con React.
|
|
715
|
+
|
|
716
|
+
```
|
|
717
|
+
mi-proyecto/
|
|
718
|
+
├── index.html
|
|
719
|
+
├── src/
|
|
720
|
+
│ ├── main.jsx
|
|
721
|
+
│ ├── App.jsx
|
|
722
|
+
│ ├── components/
|
|
723
|
+
│ │ ├── Header.jsx
|
|
724
|
+
│ │ ├── FooterSignature.jsx
|
|
725
|
+
│ │ └── LoadingOverlay.jsx
|
|
726
|
+
│ └── styles/main.css
|
|
727
|
+
├── vite.config.js
|
|
728
|
+
├── package.json
|
|
729
|
+
└── skill.json
|
|
730
|
+
```
|
|
731
|
+
|
|
692
732
|
### lit-web
|
|
693
733
|
|
|
694
734
|
Plantilla Web Components con Lit.
|
|
@@ -772,7 +812,9 @@ mi-cli/
|
|
|
772
812
|
└── skill.json
|
|
773
813
|
```
|
|
774
814
|
|
|
775
|
-
### python-flet
|
|
815
|
+
### python-flet (LEGACY)
|
|
816
|
+
|
|
817
|
+
> ⚠️ **Deprecado** — Usar `python-flet-polished` para nuevos proyectos.
|
|
776
818
|
|
|
777
819
|
Plantilla GUI de escritorio con **Flet** para apps de contexto ERP.
|
|
778
820
|
|
|
@@ -935,6 +977,30 @@ Proyectos con marca CIPSA - favicon CIPSA rojo, logo corporativo, signature "pow
|
|
|
935
977
|
|
|
936
978
|
Apps móviles con marca CIPSA - favicon CIPSA rojo, logo corporativo, enfoque móvil.
|
|
937
979
|
|
|
980
|
+
### flet-desktop-polished
|
|
981
|
+
|
|
982
|
+
App Flet desktop con patrones UI avanzados: dual theme, auto-refresh, hash cache, search debounce, KPI glow, G360 signature widget. **Estandar actual para Flet.**
|
|
983
|
+
|
|
984
|
+
### react-web
|
|
985
|
+
|
|
986
|
+
Aplicaciones web con React/JSX - estilo G360 moderno.
|
|
987
|
+
|
|
988
|
+
### solid-web
|
|
989
|
+
|
|
990
|
+
Aplicaciones web con SolidJS - estilo G360 moderno.
|
|
991
|
+
|
|
992
|
+
### svelte-web
|
|
993
|
+
|
|
994
|
+
Aplicaciones web con Svelte/SvelteKit - estilo G360 moderno.
|
|
995
|
+
|
|
996
|
+
### lit-web
|
|
997
|
+
|
|
998
|
+
Aplicaciones web con Lit Web Components - estilo G360 moderno.
|
|
999
|
+
|
|
1000
|
+
### customtkinter
|
|
1001
|
+
|
|
1002
|
+
Aplicaciones desktop con CustomTkinter - estilo G360 moderno.
|
|
1003
|
+
|
|
938
1004
|
### Ejemplos de uso
|
|
939
1005
|
|
|
940
1006
|
```bash
|
|
@@ -1014,7 +1080,7 @@ g360-cli/
|
|
|
1014
1080
|
│ ├── ingestion/ # Módulo de ingesta ERP (bring)
|
|
1015
1081
|
│ ├── engine/ # G360 Engine
|
|
1016
1082
|
│ ├── snippets/ # Snippets de código reutilizables
|
|
1017
|
-
│ └── config/ # Configuraciones (g360-skills.json, project-types.json)
|
|
1083
|
+
│ └── config/ # Configuraciones (g360-skills.json, agent-skills.json, project-types.json)
|
|
1018
1084
|
├── py/ # Paquete Python publicable en PyPI
|
|
1019
1085
|
│ ├── pyproject.toml # g360-core
|
|
1020
1086
|
│ └── src/g360_core/ # commercial_engine.py, pipeline.py, processor.py, batch_processor.py, utils.py
|
package/package.json
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "g360-cli",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "CLI tool for bootstrapping G360 projects with standardized structure, assets, identity, and ERP data processing",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "src/cli.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"g360": "src/cli.js"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"src/",
|
|
12
|
-
"!src/assets/templates/**/node_modules",
|
|
13
|
-
"!src/assets/templates/**/package-lock.json",
|
|
14
|
-
"!src/assets/templates/**/__pycache__",
|
|
15
|
-
"!src/assets/templates/**/.pytest_cache",
|
|
16
|
-
"py/",
|
|
17
|
-
"README.md",
|
|
18
|
-
"LICENSE",
|
|
19
|
-
"package.json"
|
|
20
|
-
],
|
|
21
|
-
"scripts": {
|
|
22
|
-
"prepublishOnly": "node -e \"console.log('Use: npm install -g g360-cli')\"",
|
|
23
|
-
"test": "vitest",
|
|
24
|
-
"test:watch": "vitest --watch",
|
|
25
|
-
"test:ui": "vitest --ui",
|
|
26
|
-
"test:coverage": "vitest --coverage",
|
|
27
|
-
"build": "npm run build:portable",
|
|
28
|
-
"build:portable": "pkg . --targets node18-win-x64 --output dist/g360.exe",
|
|
29
|
-
"postinstall": "node -e \"try{require('child_process').execSync('python --version',{encoding:'utf8',stdio:'pipe'})}catch{console.log('⚠️ Python no detectado. Instala Python 3.11+ para funcionalidad completa.')}\""
|
|
30
|
-
},
|
|
31
|
-
"pkg": {
|
|
32
|
-
"assets": [
|
|
33
|
-
"src/assets/**/*",
|
|
34
|
-
"py/**/*"
|
|
35
|
-
],
|
|
36
|
-
"outputPath": "dist",
|
|
37
|
-
"scripts": [],
|
|
38
|
-
"targets": "node18-win-x64"
|
|
39
|
-
},
|
|
40
|
-
"keywords": [
|
|
41
|
-
"g360",
|
|
42
|
-
"cli",
|
|
43
|
-
"scaffolding",
|
|
44
|
-
"generator",
|
|
45
|
-
"erp",
|
|
46
|
-
"data-processing"
|
|
47
|
-
],
|
|
48
|
-
"author": "Carlos Cusi",
|
|
49
|
-
"license": "MIT",
|
|
50
|
-
"dependencies": {
|
|
51
|
-
"ajv": "^8.20.0",
|
|
52
|
-
"chalk": "^5.6.2",
|
|
53
|
-
"commander": "^14.0.3",
|
|
54
|
-
"fs-extra": "^11.3.4",
|
|
55
|
-
"inquirer": "^13.4.2",
|
|
56
|
-
"ora": "^9.4.0",
|
|
57
|
-
"winston": "^3.19.0"
|
|
58
|
-
},
|
|
59
|
-
"devDependencies": {
|
|
60
|
-
"@vitest/ui": "^4.1.6",
|
|
61
|
-
"pkg": "^5.8.1",
|
|
62
|
-
"vitest": "^4.1.6"
|
|
63
|
-
},
|
|
64
|
-
"engines": {
|
|
65
|
-
"node": ">=18.0.0"
|
|
66
|
-
},
|
|
67
|
-
"repository": {
|
|
68
|
-
"type": "git",
|
|
69
|
-
"url": "https://github.com/ccusi/g360-cli.git"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "g360-cli",
|
|
3
|
+
"version": "1.15.1",
|
|
4
|
+
"description": "CLI tool for bootstrapping G360 projects with standardized structure, assets, identity, and ERP data processing",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "src/cli.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"g360": "src/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"src/",
|
|
12
|
+
"!src/assets/templates/**/node_modules",
|
|
13
|
+
"!src/assets/templates/**/package-lock.json",
|
|
14
|
+
"!src/assets/templates/**/__pycache__",
|
|
15
|
+
"!src/assets/templates/**/.pytest_cache",
|
|
16
|
+
"py/",
|
|
17
|
+
"README.md",
|
|
18
|
+
"LICENSE",
|
|
19
|
+
"package.json"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"prepublishOnly": "node -e \"console.log('Use: npm install -g g360-cli')\"",
|
|
23
|
+
"test": "vitest",
|
|
24
|
+
"test:watch": "vitest --watch",
|
|
25
|
+
"test:ui": "vitest --ui",
|
|
26
|
+
"test:coverage": "vitest --coverage",
|
|
27
|
+
"build": "npm run build:portable",
|
|
28
|
+
"build:portable": "pkg . --targets node18-win-x64 --output dist/g360.exe",
|
|
29
|
+
"postinstall": "node -e \"try{require('child_process').execSync('python --version',{encoding:'utf8',stdio:'pipe'})}catch{console.log('⚠️ Python no detectado. Instala Python 3.11+ para funcionalidad completa.')}\""
|
|
30
|
+
},
|
|
31
|
+
"pkg": {
|
|
32
|
+
"assets": [
|
|
33
|
+
"src/assets/**/*",
|
|
34
|
+
"py/**/*"
|
|
35
|
+
],
|
|
36
|
+
"outputPath": "dist",
|
|
37
|
+
"scripts": [],
|
|
38
|
+
"targets": "node18-win-x64"
|
|
39
|
+
},
|
|
40
|
+
"keywords": [
|
|
41
|
+
"g360",
|
|
42
|
+
"cli",
|
|
43
|
+
"scaffolding",
|
|
44
|
+
"generator",
|
|
45
|
+
"erp",
|
|
46
|
+
"data-processing"
|
|
47
|
+
],
|
|
48
|
+
"author": "Carlos Cusi",
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"ajv": "^8.20.0",
|
|
52
|
+
"chalk": "^5.6.2",
|
|
53
|
+
"commander": "^14.0.3",
|
|
54
|
+
"fs-extra": "^11.3.4",
|
|
55
|
+
"inquirer": "^13.4.2",
|
|
56
|
+
"ora": "^9.4.0",
|
|
57
|
+
"winston": "^3.19.0"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@vitest/ui": "^4.1.6",
|
|
61
|
+
"pkg": "^5.8.1",
|
|
62
|
+
"vitest": "^4.1.6"
|
|
63
|
+
},
|
|
64
|
+
"engines": {
|
|
65
|
+
"node": ">=18.0.0"
|
|
66
|
+
},
|
|
67
|
+
"repository": {
|
|
68
|
+
"type": "git",
|
|
69
|
+
"url": "https://github.com/ccusi/g360-cli.git"
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -318,6 +318,132 @@
|
|
|
318
318
|
"kpi-glow-cards",
|
|
319
319
|
"rotating-logger"
|
|
320
320
|
]
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"name": "react-web",
|
|
324
|
+
"description": "Aplicaciones web con React/JSX - estilo G360 moderno",
|
|
325
|
+
"device": "pc",
|
|
326
|
+
"colors": {
|
|
327
|
+
"bg": "#0b1220",
|
|
328
|
+
"surface": "#1a2332",
|
|
329
|
+
"accent": "#00d084",
|
|
330
|
+
"text": "#f0f4f8",
|
|
331
|
+
"muted": "#94a3b8",
|
|
332
|
+
"success": "#22c55e",
|
|
333
|
+
"warning": "#f59e0b",
|
|
334
|
+
"error": "#ef4444"
|
|
335
|
+
},
|
|
336
|
+
"effects": {
|
|
337
|
+
"glassmorphism": true,
|
|
338
|
+
"blur": "12px",
|
|
339
|
+
"rounded": "12px"
|
|
340
|
+
},
|
|
341
|
+
"signature": {
|
|
342
|
+
"mode": "powered",
|
|
343
|
+
"text": "powered by G360"
|
|
344
|
+
},
|
|
345
|
+
"framework": "react"
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"name": "solid-web",
|
|
349
|
+
"description": "Aplicaciones web con SolidJS - estilo G360 moderno",
|
|
350
|
+
"device": "pc",
|
|
351
|
+
"colors": {
|
|
352
|
+
"bg": "#0b1220",
|
|
353
|
+
"surface": "#1a2332",
|
|
354
|
+
"accent": "#00d084",
|
|
355
|
+
"text": "#f0f4f8",
|
|
356
|
+
"muted": "#94a3b8",
|
|
357
|
+
"success": "#22c55e",
|
|
358
|
+
"warning": "#f59e0b",
|
|
359
|
+
"error": "#ef4444"
|
|
360
|
+
},
|
|
361
|
+
"effects": {
|
|
362
|
+
"glassmorphism": true,
|
|
363
|
+
"blur": "12px",
|
|
364
|
+
"rounded": "12px"
|
|
365
|
+
},
|
|
366
|
+
"signature": {
|
|
367
|
+
"mode": "powered",
|
|
368
|
+
"text": "powered by G360"
|
|
369
|
+
},
|
|
370
|
+
"framework": "solid"
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"name": "svelte-web",
|
|
374
|
+
"description": "Aplicaciones web con Svelte/SvelteKit - estilo G360 moderno",
|
|
375
|
+
"device": "pc",
|
|
376
|
+
"colors": {
|
|
377
|
+
"bg": "#0b1220",
|
|
378
|
+
"surface": "#1a2332",
|
|
379
|
+
"accent": "#00d084",
|
|
380
|
+
"text": "#f0f4f8",
|
|
381
|
+
"muted": "#94a3b8",
|
|
382
|
+
"success": "#22c55e",
|
|
383
|
+
"warning": "#f59e0b",
|
|
384
|
+
"error": "#ef4444"
|
|
385
|
+
},
|
|
386
|
+
"effects": {
|
|
387
|
+
"glassmorphism": true,
|
|
388
|
+
"blur": "12px",
|
|
389
|
+
"rounded": "12px"
|
|
390
|
+
},
|
|
391
|
+
"signature": {
|
|
392
|
+
"mode": "powered",
|
|
393
|
+
"text": "powered by G360"
|
|
394
|
+
},
|
|
395
|
+
"framework": "svelte"
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"name": "lit-web",
|
|
399
|
+
"description": "Aplicaciones web con Lit Web Components - estilo G360 moderno",
|
|
400
|
+
"device": "pc",
|
|
401
|
+
"colors": {
|
|
402
|
+
"bg": "#0b1220",
|
|
403
|
+
"surface": "#1a2332",
|
|
404
|
+
"accent": "#00d084",
|
|
405
|
+
"text": "#f0f4f8",
|
|
406
|
+
"muted": "#94a3b8",
|
|
407
|
+
"success": "#22c55e",
|
|
408
|
+
"warning": "#f59e0b",
|
|
409
|
+
"error": "#ef4444"
|
|
410
|
+
},
|
|
411
|
+
"effects": {
|
|
412
|
+
"glassmorphism": true,
|
|
413
|
+
"blur": "12px",
|
|
414
|
+
"rounded": "12px"
|
|
415
|
+
},
|
|
416
|
+
"signature": {
|
|
417
|
+
"mode": "powered",
|
|
418
|
+
"text": "powered by G360"
|
|
419
|
+
},
|
|
420
|
+
"framework": "lit"
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
"name": "customtkinter",
|
|
424
|
+
"description": "Aplicaciones desktop con CustomTkinter - estilo G360 moderno",
|
|
425
|
+
"device": "pc",
|
|
426
|
+
"colors": {
|
|
427
|
+
"bg": "#0b1220",
|
|
428
|
+
"surface": "#1a2332",
|
|
429
|
+
"accent": "#00d084",
|
|
430
|
+
"text": "#f0f4f8",
|
|
431
|
+
"muted": "#94a3b8",
|
|
432
|
+
"success": "#22c55e",
|
|
433
|
+
"warning": "#f59e0b",
|
|
434
|
+
"error": "#ef4444"
|
|
435
|
+
},
|
|
436
|
+
"effects": {
|
|
437
|
+
"glassmorphism": true,
|
|
438
|
+
"blur": "12px",
|
|
439
|
+
"rounded": "12px"
|
|
440
|
+
},
|
|
441
|
+
"signature": {
|
|
442
|
+
"mode": "powered",
|
|
443
|
+
"text": "powered by G360"
|
|
444
|
+
},
|
|
445
|
+
"framework": "customtkinter",
|
|
446
|
+
"portable": true
|
|
321
447
|
}
|
|
322
448
|
]
|
|
323
449
|
}
|
|
@@ -54,6 +54,14 @@
|
|
|
54
54
|
"description": "Excel VBA macros",
|
|
55
55
|
"framework": "vba",
|
|
56
56
|
"features": ["excel", "macros", "forms"]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "python-customtkinter",
|
|
60
|
+
"name": "Python CustomTkinter Desktop",
|
|
61
|
+
"description": "Python desktop app with CustomTkinter framework",
|
|
62
|
+
"framework": "customtkinter",
|
|
63
|
+
"features": ["desktop", "gui", "cross-platform"],
|
|
64
|
+
"portable": true
|
|
57
65
|
}
|
|
58
66
|
]
|
|
59
67
|
}
|
|
@@ -45,21 +45,25 @@
|
|
|
45
45
|
{
|
|
46
46
|
"name": "g360-header",
|
|
47
47
|
"description": "Standard G360 header",
|
|
48
|
+
"language": "html",
|
|
48
49
|
"code": "<header class='g360-header'>...</header>"
|
|
49
50
|
},
|
|
50
51
|
{
|
|
51
52
|
"name": "g360-button",
|
|
52
53
|
"description": "G360 styled button",
|
|
54
|
+
"language": "html",
|
|
53
55
|
"code": "<button class='g360-btn'>Click</button>"
|
|
54
56
|
},
|
|
55
57
|
{
|
|
56
58
|
"name": "g360-card",
|
|
57
59
|
"description": "G360 card component",
|
|
60
|
+
"language": "html",
|
|
58
61
|
"code": "<div class='g360-card'>...</div>"
|
|
59
62
|
},
|
|
60
63
|
{
|
|
61
64
|
"name": "g360-badge",
|
|
62
65
|
"description": "G360 status badge",
|
|
66
|
+
"language": "html",
|
|
63
67
|
"code": "<span class='g360-badge g360-badge-success'>Active</span>"
|
|
64
68
|
},
|
|
65
69
|
{
|
|
File without changes
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "flet-desktop",
|
|
3
|
-
"description": "G360 Flet
|
|
2
|
+
"name": "flet-desktop-polished",
|
|
3
|
+
"description": "G360 Flet Polished - Plantilla base con patrones de UI avanzada",
|
|
4
4
|
"framework": "flet",
|
|
5
|
-
"version": "1.
|
|
6
|
-
"python": ">=3.11
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"python": ">=3.11",
|
|
7
7
|
"colors": {
|
|
8
8
|
"bg": "#0b1220",
|
|
9
|
-
"surface": "#
|
|
10
|
-
"accent": "#
|
|
11
|
-
"text": "#
|
|
12
|
-
"muted": "#
|
|
13
|
-
"success": "#
|
|
9
|
+
"surface": "#1a2333",
|
|
10
|
+
"accent": "#34d399",
|
|
11
|
+
"text": "#f0f6fc",
|
|
12
|
+
"muted": "#8b949e",
|
|
13
|
+
"success": "#34d399",
|
|
14
14
|
"warning": "#f59e0b",
|
|
15
15
|
"error": "#ef4444"
|
|
16
16
|
},
|
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
"rounded": "12px"
|
|
21
21
|
},
|
|
22
22
|
"signature": {
|
|
23
|
-
"mode": "
|
|
24
|
-
"text": "G360
|
|
23
|
+
"mode": "powered",
|
|
24
|
+
"text": "powered by G360"
|
|
25
25
|
},
|
|
26
26
|
"build": {
|
|
27
27
|
"tool": "flet",
|
|
@@ -29,13 +29,12 @@
|
|
|
29
29
|
"name": "G360-App"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"flet": ">=0.
|
|
32
|
+
"flet": ">=0.28.3"
|
|
33
33
|
},
|
|
34
34
|
"guidelines": {
|
|
35
|
-
"architecture": "src/core (logica), src/ui (componentes), src/
|
|
36
|
-
"naming": "PascalCase para clases UI, camelCase para metodos
|
|
37
|
-
"state_management": "Usar atributos de clase
|
|
38
|
-
"threading": "Usar threading.
|
|
39
|
-
"window_config": "width=1350, height=900, resizable=True, theme_mode=DARK"
|
|
35
|
+
"architecture": "src/core (logica), src/ui (componentes), src/config (theme)",
|
|
36
|
+
"naming": "PascalCase para clases UI, camelCase para metodos",
|
|
37
|
+
"state_management": "Usar atributos de clase, hash diff para cache",
|
|
38
|
+
"threading": "Usar threading.Lock() para operaciones concurrentes"
|
|
40
39
|
}
|
|
41
40
|
}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @version 1.0.0
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
export default function App() {
|
|
8
|
+
export default function App(props) {
|
|
9
9
|
const titulo = 'Mi Proyecto G360';
|
|
10
10
|
|
|
11
11
|
return (
|
|
@@ -14,7 +14,7 @@ export default function App() {
|
|
|
14
14
|
<h1>{titulo}</h1>
|
|
15
15
|
</header>
|
|
16
16
|
<main>
|
|
17
|
-
|
|
17
|
+
{props.children}
|
|
18
18
|
</main>
|
|
19
19
|
</div>
|
|
20
20
|
);
|
package/src/commands/clean.js
CHANGED
|
@@ -7,11 +7,8 @@
|
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import fs from 'fs-extra';
|
|
9
9
|
import path from 'path';
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
11
10
|
import { getAllFiles } from '../lib/file-utils.js';
|
|
12
11
|
|
|
13
|
-
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
14
|
-
|
|
15
12
|
const DEAD_PATTERNS = [
|
|
16
13
|
'backup', 'backup-old', 'backups',
|
|
17
14
|
'temp', 'tmp', '.tmp',
|
|
@@ -292,15 +289,6 @@ async function findOrphanFiles(projectDir, allFiles) {
|
|
|
292
289
|
|
|
293
290
|
function analyzeFileOrganization(files) {
|
|
294
291
|
const misplaced = [];
|
|
295
|
-
const structureRules = {
|
|
296
|
-
'src/components': ['.js', '.jsx', '.ts', '.tsx', '.svelte', '.vue'],
|
|
297
|
-
'src/pages': ['.js', '.jsx', '.ts', '.tsx', '.svelte', '.vue'],
|
|
298
|
-
'src/utils': ['.js', '.ts'],
|
|
299
|
-
'src/hooks': ['.js', '.ts'],
|
|
300
|
-
'src/services': ['.js', '.ts'],
|
|
301
|
-
'src/styles': ['.css', '.scss', '.less'],
|
|
302
|
-
'src/assets': ['.png', '.jpg', '.svg', '.gif', '.webp']
|
|
303
|
-
};
|
|
304
292
|
|
|
305
293
|
const components = files.filter(f => {
|
|
306
294
|
const name = path.basename(f);
|