xonecode 0.1.0

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.
Files changed (187) hide show
  1. package/README.md +167 -0
  2. package/dist/agent/authEnDisco.js +56 -0
  3. package/dist/agent/authEnDisco.js.map +1 -0
  4. package/dist/agent/configEnDisco.js +109 -0
  5. package/dist/agent/configEnDisco.js.map +1 -0
  6. package/dist/agent/crearProyecto.js +34 -0
  7. package/dist/agent/crearProyecto.js.map +1 -0
  8. package/dist/agent/entorno.js +124 -0
  9. package/dist/agent/entorno.js.map +1 -0
  10. package/dist/agent/guionizado.js +53 -0
  11. package/dist/agent/guionizado.js.map +1 -0
  12. package/dist/agent/instantanea.js +129 -0
  13. package/dist/agent/instantanea.js.map +1 -0
  14. package/dist/agent/interrupts.js +83 -0
  15. package/dist/agent/interrupts.js.map +1 -0
  16. package/dist/agent/mensajes.js +24 -0
  17. package/dist/agent/mensajes.js.map +1 -0
  18. package/dist/agent/modelos.js +42 -0
  19. package/dist/agent/modelos.js.map +1 -0
  20. package/dist/agent/normalizar.js +20 -0
  21. package/dist/agent/normalizar.js.map +1 -0
  22. package/dist/agent/perfiles.js +103 -0
  23. package/dist/agent/perfiles.js.map +1 -0
  24. package/dist/agent/proyecto.js +107 -0
  25. package/dist/agent/proyecto.js.map +1 -0
  26. package/dist/agent/puente.js +142 -0
  27. package/dist/agent/puente.js.map +1 -0
  28. package/dist/agent/resumenDeTool.js +48 -0
  29. package/dist/agent/resumenDeTool.js.map +1 -0
  30. package/dist/agent/skills.js +65 -0
  31. package/dist/agent/skills.js.map +1 -0
  32. package/dist/agent/textoDeTool.js +113 -0
  33. package/dist/agent/textoDeTool.js.map +1 -0
  34. package/dist/agent/turnoReal.js +173 -0
  35. package/dist/agent/turnoReal.js.map +1 -0
  36. package/dist/agent/verificador.js +65 -0
  37. package/dist/agent/verificador.js.map +1 -0
  38. package/dist/agent/xoneAgent.js +106 -0
  39. package/dist/agent/xoneAgent.js.map +1 -0
  40. package/dist/bin.js +9 -0
  41. package/dist/bin.js.map +1 -0
  42. package/dist/cli/aprobar.js +82 -0
  43. package/dist/cli/aprobar.js.map +1 -0
  44. package/dist/cli/config.js +133 -0
  45. package/dist/cli/config.js.map +1 -0
  46. package/dist/cli/consola.js +346 -0
  47. package/dist/cli/consola.js.map +1 -0
  48. package/dist/cli/describe.js +53 -0
  49. package/dist/cli/describe.js.map +1 -0
  50. package/dist/cli/doctor.js +45 -0
  51. package/dist/cli/doctor.js.map +1 -0
  52. package/dist/cli/main.js +520 -0
  53. package/dist/cli/main.js.map +1 -0
  54. package/dist/cli/markdown.js +90 -0
  55. package/dist/cli/markdown.js.map +1 -0
  56. package/dist/cli/run.js +164 -0
  57. package/dist/cli/run.js.map +1 -0
  58. package/dist/cli/spinner.js +89 -0
  59. package/dist/cli/spinner.js.map +1 -0
  60. package/dist/cli/stdio.js +193 -0
  61. package/dist/cli/stdio.js.map +1 -0
  62. package/dist/cli/tema.js +40 -0
  63. package/dist/cli/tema.js.map +1 -0
  64. package/dist/cli/verify.js +62 -0
  65. package/dist/cli/verify.js.map +1 -0
  66. package/dist/core/bitacora.js +30 -0
  67. package/dist/core/bitacora.js.map +1 -0
  68. package/dist/core/config.js +236 -0
  69. package/dist/core/config.js.map +1 -0
  70. package/dist/core/contextos.js +56 -0
  71. package/dist/core/contextos.js.map +1 -0
  72. package/dist/core/deps.js +51 -0
  73. package/dist/core/deps.js.map +1 -0
  74. package/dist/core/diff.js +79 -0
  75. package/dist/core/diff.js.map +1 -0
  76. package/dist/core/esqueleto.js +366 -0
  77. package/dist/core/esqueleto.js.map +1 -0
  78. package/dist/core/events.js +2 -0
  79. package/dist/core/events.js.map +1 -0
  80. package/dist/core/modelos.js +85 -0
  81. package/dist/core/modelos.js.map +1 -0
  82. package/dist/core/notify.js +106 -0
  83. package/dist/core/notify.js.map +1 -0
  84. package/dist/core/ports.js +114 -0
  85. package/dist/core/ports.js.map +1 -0
  86. package/dist/core/turno.js +127 -0
  87. package/dist/core/turno.js.map +1 -0
  88. package/dist/vendor/hitl.js +103 -0
  89. package/dist/vendor/hitl.js.map +1 -0
  90. package/dist/vendor/skillLoaders/catalog.js +74 -0
  91. package/dist/vendor/skillLoaders/catalog.js.map +1 -0
  92. package/dist/vendor/tokenTracking.js +58 -0
  93. package/dist/vendor/tokenTracking.js.map +1 -0
  94. package/package.json +41 -0
  95. package/skills/xone-debugging/SKILL.md +52 -0
  96. package/skills/xone-debugging/references/faq.md +561 -0
  97. package/skills/xone-debugging/references/troubleshooting-y-glosario.md +429 -0
  98. package/skills/xone-development/SKILL.md +105 -0
  99. package/skills/xone-development/references/anti-patrones.md +94 -0
  100. package/skills/xone-development/references/css/atributos-por-categoria.md +509 -0
  101. package/skills/xone-development/references/css/buenas-practicas-y-parser.md +419 -0
  102. package/skills/xone-development/references/css/dinamicos-cascada-y-componentes.md +550 -0
  103. package/skills/xone-development/references/css/patrones-material-y-temas.md +1140 -0
  104. package/skills/xone-development/references/css/propiedades-y-herencia.md +885 -0
  105. package/skills/xone-development/references/css/selectores-unidades-colores.md +840 -0
  106. package/skills/xone-development/references/datos/appdata-referencia-ampliada.md +457 -0
  107. package/skills/xone-development/references/datos/appdata.md +611 -0
  108. package/skills/xone-development/references/datos/http-sqlmanager-y-crypto.md +720 -0
  109. package/skills/xone-development/references/datos/http.md +366 -0
  110. package/skills/xone-development/references/datos/oauth2-y-replica.md +156 -0
  111. package/skills/xone-development/references/device/biometria-imagedrawing-y-otros.md +544 -0
  112. package/skills/xone-development/references/device/objetos-de-dispositivo.md +583 -0
  113. package/skills/xone-development/references/device/systemsettings-referencia-ampliada.md +396 -0
  114. package/skills/xone-development/references/device/systemsettings-y-permisos.md +342 -0
  115. package/skills/xone-development/references/fundamentos/conceptos-clave.md +695 -0
  116. package/skills/xone-development/references/fundamentos/configuracion-app-xml-ini-mappings.md +668 -0
  117. package/skills/xone-development/references/fundamentos/errores-comunes.md +312 -0
  118. package/skills/xone-development/references/fundamentos/navegacion-convenciones-y-primer-proyecto.md +576 -0
  119. package/skills/xone-development/references/fundamentos/plataforma-y-anatomia-de-proyecto.md +387 -0
  120. package/skills/xone-development/references/indice-completo.md +77 -0
  121. package/skills/xone-development/references/javascript/coleccion-error-y-usuario.md +260 -0
  122. package/skills/xone-development/references/javascript/debugging-y-best-practices.md +245 -0
  123. package/skills/xone-development/references/javascript/metodos-de-los-controles.md +556 -0
  124. package/skills/xone-development/references/javascript/metodos-nativos-de-la-vista.md +114 -0
  125. package/skills/xone-development/references/javascript/motor-js-y-contexto-de-ejecucion.md +319 -0
  126. package/skills/xone-development/references/javascript/objeto-ai-llm-en-dispositivo.md +358 -0
  127. package/skills/xone-development/references/javascript/objetos-creables-a-m.md +527 -0
  128. package/skills/xone-development/references/javascript/objetos-creables-n-z.md +385 -0
  129. package/skills/xone-development/references/javascript/patrones-criticos-seguridad-y-rendimiento.md +595 -0
  130. package/skills/xone-development/references/javascript/patrones-de-navegacion-datos-y-codigo.md +751 -0
  131. package/skills/xone-development/references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md +701 -0
  132. package/skills/xone-development/references/javascript/plantillas-y-funciones-utilitarias.md +647 -0
  133. package/skills/xone-development/references/javascript/self-y-dataobject.md +449 -0
  134. package/skills/xone-development/references/javascript/singletons-globales.md +361 -0
  135. package/skills/xone-development/references/javascript/ui-catalogo-de-metodos.md +464 -0
  136. package/skills/xone-development/references/javascript/ui-gps-camara-y-multimedia.md +506 -0
  137. package/skills/xone-development/references/javascript/ui-navegacion-mensajes-y-vista.md +422 -0
  138. package/skills/xone-development/references/resumen-js-datos-dispositivo.md +80 -0
  139. package/skills/xone-development/references/resumen-xml-y-css.md +74 -0
  140. package/skills/xone-development/references/tipos-de-prop.md +28 -0
  141. package/skills/xone-development/references/xml-ui/asfilter-visibilidad-eventos-y-macros.md +576 -0
  142. package/skills/xone-development/references/xml-ui/atributos-coll-group-frame.md +235 -0
  143. package/skills/xone-development/references/xml-ui/atributos-method-macro-script-event-app.md +244 -0
  144. package/skills/xone-development/references/xml-ui/atributos-prop.md +439 -0
  145. package/skills/xone-development/references/xml-ui/contents-y-macros.md +392 -0
  146. package/skills/xone-development/references/xml-ui/errores-comunes-xml.md +245 -0
  147. package/skills/xone-development/references/xml-ui/estructura-y-nodo-coll.md +326 -0
  148. package/skills/xone-development/references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md +704 -0
  149. package/skills/xone-development/references/xml-ui/eventos-sistema-login-y-personalizados.md +944 -0
  150. package/skills/xone-development/references/xml-ui/layouts-herencia-y-buenas-practicas.md +618 -0
  151. package/skills/xone-development/references/xml-ui/mapas.md +685 -0
  152. package/skills/xone-development/references/xml-ui/mappings-y-colecciones-separadas.md +148 -0
  153. package/skills/xone-development/references/xml-ui/nodos-group-y-frame.md +666 -0
  154. package/skills/xone-development/references/xml-ui/patrones-de-pantalla.md +643 -0
  155. package/skills/xone-development/references/xml-ui/prop-atributos-y-condiciones.md +298 -0
  156. package/skills/xone-development/references/xml-ui/prop-tipos-basicos.md +493 -0
  157. package/skills/xone-development/references/xml-ui/prop-tipos-combos-y-controles.md +664 -0
  158. package/skills/xone-development/references/xml-ui/prop-tipos-listas-y-mapas.md +412 -0
  159. package/skills/xone-plan-builder/SKILL.md +183 -0
  160. package/skills/xone-plan-builder/agents/openai.yaml +5 -0
  161. package/skills/xone-plan-builder/references/TASKS-FORMAT.md +132 -0
  162. package/skills/xone-project-generator/SKILL.md +111 -0
  163. package/skills/xone-project-generator/references/canonical-sizes.md +292 -0
  164. package/skills/xone-project-generator/references/colecciones-base.md +16 -0
  165. package/skills/xone-project-generator/references/convenciones-de-nombres.md +16 -0
  166. package/skills/xone-project-generator/references/ejemplos-por-sector-y-prohibiciones.md +140 -0
  167. package/skills/xone-project-generator/references/fase-3-estilos-css.md +597 -0
  168. package/skills/xone-project-generator/references/fase-6-colecciones.md +762 -0
  169. package/skills/xone-project-generator/references/fase-7-asfilter-e-integraciones.md +142 -0
  170. package/skills/xone-project-generator/references/fase-7-entidades-y-estructura-de-pantalla.md +494 -0
  171. package/skills/xone-project-generator/references/fase-7-plantilla-consola.md +477 -0
  172. package/skills/xone-project-generator/references/fase-7-plantillas-de-pantalla.md +302 -0
  173. package/skills/xone-project-generator/references/fase-7-viewmodes-graficos-y-listas.md +681 -0
  174. package/skills/xone-project-generator/references/fase-7-viewmodes-mapa-y-calendario.md +479 -0
  175. package/skills/xone-project-generator/references/fases-0-2-analisis-y-modelo-de-datos.md +350 -0
  176. package/skills/xone-project-generator/references/fases-10-12-readmes-y-validacion.md +194 -0
  177. package/skills/xone-project-generator/references/fases-4-5-estructura-y-configuracion.md +587 -0
  178. package/skills/xone-project-generator/references/fases-8-9-eventos-y-javascript.md +861 -0
  179. package/skills/xone-project-generator/references/flujo-de-generacion.md +67 -0
  180. package/skills/xone-project-generator/references/plantillas-estandar.md +98 -0
  181. package/skills/xone-project-generator/references/tamanos-canonicos.md +49 -0
  182. package/skills/xone-review/SKILL.md +189 -0
  183. package/skills/xone-spec-builder/SKILL.md +235 -0
  184. package/skills/xone-spec-builder/agents/openai.yaml +5 -0
  185. package/skills/xone-spec-builder/references/ADR-FORMAT.md +55 -0
  186. package/skills/xone-spec-builder/references/CONTEXT-FORMAT.md +42 -0
  187. package/skills/xone-spec-builder/references/PLAN-FORMAT.md +120 -0
@@ -0,0 +1,312 @@
1
+ # XOne — Errores comunes de principiantes
2
+
3
+ > Fuente: `xone/v2/xone-help-docs/topics/01-xone-fundamentals.md` §10. Referencia de la skill; el índice está en [../../SKILL.md](../../SKILL.md).
4
+
5
+ Contenido: §10 errores comunes al empezar con XOne y su corrección
6
+
7
+ ---
8
+
9
+ ## 10. Errores Comunes de Principiantes
10
+
11
+ ### Error 1: Usar unidades CSS web (`px`, `em`, `rem`)
12
+
13
+ ```css
14
+ /* INCORRECTO - XOne no entiende px ni em */
15
+ .miBoton {
16
+ width: 200px;
17
+ height: 50px;
18
+ font-size: 14px;
19
+ margin-top: 10em;
20
+ }
21
+
22
+ /* CORRECTO - Usar p (puntos) o % (porcentaje) */
23
+ .miBoton {
24
+ width: 200p;
25
+ height: 50p;
26
+ fontsize: 14;
27
+ tmargin: 10p;
28
+ }
29
+ ```
30
+
31
+ **Por que falla:** XOne usa `p` (pixel en el dispositivo de referencia definido por `resolution-width`/`resolution-height`) como unidad principal de dimensiones. El `fontsize` NO necesita unidad — usa la escala XOne 1-12 directamente. `p` no es Material `dp`: en 1080×1920, Material 56dp ≈ 168p.
32
+
33
+ ---
34
+
35
+ ### Error 2: Olvidar ##PREF## en consultas SQL
36
+
37
+ ```xml
38
+ <!-- INCORRECTO - La tabla no se encontrara -->
39
+ <coll name="Tareas" sql="SELECT * FROM Tareas" ...>
40
+
41
+ <!-- INCORRECTO - Hardcodear el prefijo -->
42
+ <coll name="Tareas" sql="SELECT * FROM gen_tareas" ...>
43
+
44
+ <!-- CORRECTO - Usar la macro ##PREF## -->
45
+ <coll name="Tareas" sql="SELECT * FROM ##PREF##Tareas" ...>
46
+ ```
47
+
48
+ **Por que falla:** Sin `##PREF##`, la consulta busca una tabla que no existe. Con el prefijo hardcodeado, deja de funcionar si cambia el prefijo del proyecto.
49
+
50
+ ---
51
+
52
+ ### Error 3: Poner colecciones extra en mappings.xne
53
+
54
+ ```
55
+ INCORRECTO:
56
+ mappings.xne contiene: Empresas, Usuarios, Productos, Clientes, Pedidos
57
+
58
+ CORRECTO:
59
+ mappings.xne --> Solo Empresas y Usuarios
60
+ Productos.xne --> Coleccion Productos
61
+ Clientes.xne --> Coleccion Clientes
62
+ Pedidos.xne --> Coleccion Pedidos
63
+ ```
64
+
65
+ **Por que falla:** Aunque tecnicamente puede funcionar, viola la convencion del framework y causa problemas de mantenimiento. Cada coleccion debe tener su propio archivo.
66
+
67
+ ---
68
+
69
+ ### Error 4: Usar APIs del DOM
70
+
71
+ ```javascript
72
+ // INCORRECTO - APIs del DOM que NO existen en XOne
73
+ document.getElementById("campo").value = "test";
74
+ localStorage.setItem("key", "value");
75
+ window.alert("Hola");
76
+ console.log(document.querySelector(".clase"));
77
+
78
+ // CORRECTO - APIs de XOne
79
+ self.MAP_CAMPO = "test";
80
+ appData.setGlobalMacro("KEY", "value");
81
+ ui.msgBox("Hola", "Título", 0);
82
+ let control = ui.getView(self)["MAP_CAMPO"];
83
+
84
+ // ATENCION: `fetch` SI existe en XOne (implementación custom).
85
+ // El patrón idiomático sigue siendo $http, pero fetch es válido:
86
+ $http.get("https://api.com/datos", {}, successCb, errorCb); // idiomático
87
+ fetch("https://api.com/datos").then(r => r.json()); // también válido
88
+ ```
89
+
90
+ **Por que falla:** XOne no tiene DOM, ni `document`, ni `window`, ni `localStorage`. Tiene sus propias APIs. Lo que SÍ está disponible son las APIs WHATWG/Node enumeradas en §6.7 (`Promise`, `fetch`, `setTimeout`, `URL`, `Headers`, `AbortController`, `console.*` completo, `TextEncoder`/`TextDecoder`, `performance.now()`, `atob`/`btoa`, `structuredClone`, `DOMParser`/`XMLSerializer`, `globalThis`).
91
+
92
+ ---
93
+
94
+ ### Error 5: No crear la carpeta bd/
95
+
96
+ ```
97
+ INCORRECTO:
98
+ MiProyecto/
99
+ |-- app.xml
100
+ |-- mappings.xne
101
+ +-- default.css
102
+ (sin carpeta bd/)
103
+
104
+ CORRECTO:
105
+ MiProyecto/
106
+ |-- app.xml
107
+ |-- mappings.xne
108
+ |-- default.css
109
+ |-- bd/
110
+ | +-- gestion.db
111
+ +-- ...
112
+ ```
113
+
114
+ **Por que falla:** La aplicación no puede funcionar sin la base de datos local. La carpeta `bd/` y el archivo `gestion.db` son imprescindibles.
115
+
116
+ ---
117
+
118
+ ### Error 6: Usar nombres CSS web para atributos
119
+
120
+ ```css
121
+ /* INCORRECTO - Atributos CSS web */
122
+ .miClase {
123
+ background-color: red;
124
+ font-size: 14px;
125
+ border-radius: 10px;
126
+ margin-top: 20px;
127
+ color: blue;
128
+ }
129
+
130
+ /* CORRECTO - Atributos CSS XOne */
131
+ .miClase {
132
+ bgcolor: #FF0000;
133
+ fontsize: 14;
134
+ border-corner-radius: 10;
135
+ tmargin: 20p;
136
+ forecolor: #0000FF;
137
+ }
138
+ ```
139
+
140
+ **Por que falla:** XOne tiene sus propios nombres de atributos CSS. `background-color` no existe, se usa `bgcolor`. `border-radius` no existe, se usa `border-corner-radius`.
141
+
142
+ ---
143
+
144
+ ### Error 7: Olvidar objname en colecciones que necesitan tabla
145
+
146
+ ```xml
147
+ <!-- INCORRECTO - Esta coleccion NO creara tabla en BD -->
148
+ <coll name="Tareas" sql="SELECT * FROM ##PREF##Tareas">
149
+ <!-- Falta objname, así que no se persiste -->
150
+ </coll>
151
+
152
+ <!-- CORRECTO - Con objname, se creara la tabla gen_tareas -->
153
+ <coll name="Tareas"
154
+ sql="SELECT * FROM ##PREF##Tareas"
155
+ objname="Tareas"
156
+ updateobj="Tareas">
157
+ <!-- objname indica que esta coleccion necesita tabla en BD -->
158
+ </coll>
159
+ ```
160
+
161
+ **Por que falla:** Sin el atributo `objname`, XOne trata la coleccion como especial (solo memoria). No se genera tabla y los datos no se guardan.
162
+
163
+ ---
164
+
165
+ ### Error 8: Usar formatos de imagen no soportados en icons/
166
+
167
+ XOne soporta **PNG, JPG y SVG** en la carpeta `icons/`. Los tres formatos funcionan correctamente como iconos y recursos gráficos.
168
+
169
+ ```
170
+ CORRECTO — cualquiera de estos formatos funciona:
171
+ icons/
172
+ |-- ic_menu.png
173
+ |-- ic_menu.svg
174
+ +-- ic_menu.jpg
175
+ ```
176
+
177
+ El formato más habitual es PNG por compatibilidad historica, pero SVG es perfectamente valido y tiene la ventaja de escalar sin perder calidad.
178
+
179
+ **Anti-patrón frecuente — NO renderizar SVG con un `type="WEB"`:** el soporte de SVG en XOne es nativo y completo. Un `.svg` es una imagen más: se refiere con `type="IMG"` (`path="dibujo.svg"`) o con los atributos `img`/`imgbk`, igual que un PNG. Envolverlo en un WebView (`type="WEB"`) para "que se vea" es innecesario, no aporta nada y rompe el escalado y la integración con el control. El control `WEB` es solo para contenido web remoto (URLs), nunca para imágenes locales.
180
+
181
+ ---
182
+
183
+ ### Error 9: Pensar que hay que declarar `ID` o `ROWID`
184
+
185
+ `ID` (clave autonumérica) y `ROWID` (GUID de 32 hex de sincronización) son **columnas de plataforma**: XOne las crea y las rellena por su cuenta (el `ROWID` se autogenera en cada alta). **No hace falta declararlas** como `<prop>` — basta con los campos de negocio:
186
+
187
+ ```xml
188
+ <!-- Suficiente: ID y ROWID los gestiona XOne -->
189
+ <coll name="Empresas" ...>
190
+ <group name="General" id="1">
191
+ <prop name="CODIGO" type="N" visible="7" />
192
+ <prop name="NOMBRE" type="T" visible="7" fieldsize="150" />
193
+ </group>
194
+ </coll>
195
+ ```
196
+
197
+ Declararlas explícitamente (`<prop name="ID">` / `<prop name="ROWID">`) **no causa ningún problema** — el framework sigue gestionando sus valores —, pero es **redundante**; la recomendación es omitirlas por limpieza. En el `sql=` de la coll, el `ID` sí se rescata en el SELECT; el `ROWID` no es necesario.
198
+
199
+ ---
200
+
201
+ ### Error 10: Mezclar sintaxis de otros frameworks
202
+
203
+ ```xml
204
+ <!-- INCORRECTO - Esto NO es React ni Angular -->
205
+ <div class="container">
206
+ <input type="text" ng-model="nombre" />
207
+ <button onClick={() => guardar()}>Guardar</button>
208
+ </div>
209
+
210
+ <!-- CORRECTO - Sintaxis XOne -->
211
+ <frame name="frmContenedor" width="100%" height="100%">
212
+ <prop name="MAP_NOMBRE" type="T" visible="7"
213
+ width="80%" height="40p" />
214
+ <prop name="MAP_BTN_GUARDAR" type="B" visible="7"
215
+ width="80%" height="50p" title="Guardar"
216
+ onclick="guardar();" />
217
+ </frame>
218
+ ```
219
+
220
+ **Por que falla:** XOne es un framework completamente independiente. No usa HTML, no tiene `<div>`, `<input>` ni `<button>`. Los componentes son `<coll>`, `<frame>`, `<prop>` y `<group>`.
221
+
222
+ ---
223
+
224
+ ### Error 11: Repetir nombres de nodos dentro de la misma coleccion
225
+
226
+ > **El ambito de unicidad es la `<coll>` ENTERA**, no el `<group>` o `<frame>` inmediato. Dos `<prop>` con el mismo `name` fallan **aunque estén en `<group>` o `<frame>` distintos** dentro de la misma coll. Lo mismo aplica a `<group>`, `<frame>` y a los nodos de evento.
227
+
228
+ ```xml
229
+ <\!-- INCORRECTO - dos group con el mismo name -->
230
+ <coll name="MiPantalla" special="true">
231
+ <group name="grpPrincipal" id="1">
232
+ <frame name="frmHeader" width="100%" height="100p"/>
233
+ </group>
234
+ <group name="grpPrincipal" id="2"> <\!-- ERROR: nombre duplicado -->
235
+ <frame name="frmBody" width="100%" height="-2"/>
236
+ </group>
237
+ </coll>
238
+
239
+ <\!-- INCORRECTO - dos prop con el mismo name dentro del mismo group -->
240
+ <group name="grpDatos" id="1">
241
+ <prop name="NOMBRE" type="T" visible="7"/>
242
+ <prop name="NOMBRE" type="L" visible="2"/> <\!-- ERROR: nombre duplicado -->
243
+ </group>
244
+
245
+ <\!-- INCORRECTO - dos prop con el mismo name en GROUPS DISTINTOS de la misma coll -->
246
+ <coll name="MiPantalla" special="true">
247
+ <group name="grpUno" id="1">
248
+ <frame name="frm1" width="100%" height="50%">
249
+ <prop name="MAP_DATO" type="T" visible="1"/>
250
+ </frame>
251
+ </group>
252
+ <group name="grpDos" id="2">
253
+ <frame name="frm2" width="100%" height="50%">
254
+ <prop name="MAP_DATO" type="L" visible="2"/> <\!-- ERROR: el name "MAP_DATO" ya existe en grpUno -->
255
+ </frame>
256
+ </group>
257
+ </coll>
258
+
259
+ <\!-- INCORRECTO - dos prop con el mismo name en FRAMES DISTINTOS dentro del mismo group -->
260
+ <group name="grpUnico" id="1">
261
+ <frame name="frmA">
262
+ <prop name="MAP_X" type="T" visible="1"/>
263
+ </frame>
264
+ <frame name="frmB">
265
+ <prop name="MAP_X" type="L" visible="2"/> <\!-- ERROR: el name "MAP_X" ya existe en frmA -->
266
+ </frame>
267
+ </group>
268
+
269
+ <\!-- CORRECTO - nombres unicos en TODA la coll (no solo dentro de cada group/frame) -->
270
+ <coll name="MiPantalla" special="true">
271
+ <group name="grpHeader" id="1">
272
+ <frame name="frmHeader" width="100%" height="100p"/>
273
+ </group>
274
+ <group name="grpBody" id="2">
275
+ <frame name="frmBody" width="100%" height="-2"/>
276
+ <prop name="MAP_NOMBRE_EDIT" type="T" visible="1"/>
277
+ <prop name="MAP_NOMBRE_LISTA" type="L" visible="2"/>
278
+ </group>
279
+ </coll>
280
+ ```
281
+
282
+ **Por que falla:** El `name` de cada nodo (`<prop>`, `<group>`, `<frame>`, eventos) se publica a nivel de la propia `<coll>` (los `collprops`), no del `<group>` o `<frame>` que lo contiene. Por eso, si se repitiera el `name` en cualquier sitio dentro de la misma coll, actuaria como identificador único ambiguo. La unicidad se evalua sobre la coll completa.
283
+
284
+ **Lo que SI es valido:** dos `<coll>` distintas con contenido **identico** (incluso los mismos `name` de prop/group/frame internos) siempre que el atributo `name` **de la propia coll** sea distinto. Cada coll es un ambito independiente.
285
+
286
+ **Lo que NO es valido:** dos `<coll>` con el mismo `name` en el proyecto.
287
+
288
+ ---
289
+
290
+ Esta guía ha cubierto los conceptos fundamentales de XOne:
291
+
292
+ | Concepto | Resumen |
293
+ |----------|---------|
294
+ | **Plataforma** | Framework para apps móviles nativas (Android + iOS) desde código único |
295
+ | **Arquitectura** | XML declarativo (UI) + JavaScript imperativo (lógica) + SQLite (datos) |
296
+ | **Archivos principales** | `app.xml`, `app.ini`, `mappings.xne`, `default.css`, `functions.js` |
297
+ | **Colecciones** | Concepto central que une tabla + pantalla + formulario |
298
+ | **Propiedades** | Elemento dual: campo de datos + control visual |
299
+ | **Navegación** | `ui.openEditView()`, `window.exit()` |
300
+ | **Prefijo** | `##PREF##` en SQL para referencia dinámica a tablas |
301
+ | **Regla de oro** | `mappings.xne` solo contiene Empresas y Usuarios |
302
+
303
+ ### Proximos Pasos
304
+
305
+ - **02 - Estructura XML y Colecciones**: Profundiza en la sintaxis XML, nodos, atributos y patrones de colecciones
306
+ - **04 - Estilos CSS en XOne**: Referencia completa de atributos CSS propietarios
307
+ - **03 - API JavaScript**: Documentación detallada de `ui.*`, `self.*`, `appData.*` y más
308
+ - **05 - Eventos, Patrones y FAQ**: Tutorial paso a paso para crear proyectos completos
309
+
310
+ ---
311
+
312
+ *Este documento forma parte del sistema de ayuda XOne. Basado en el análisis de 224 proyectos de ejemplo reales, 5 proyectos sinteticos documentados y la documentación oficial de la plataforma.*