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,387 @@
1
+ # XOne — Plataforma y anatomía de un proyecto
2
+
3
+ > Fuente: `xone/v2/xone-help-docs/topics/01-xone-fundamentals.md` §1–§3, §5. Referencia de la skill; el índice está en [../../SKILL.md](../../SKILL.md).
4
+
5
+ Contenido: §1 qué es XOne · §2 arquitectura: modelo declarativo + imperativo, ciclo de vida colección/objeto/propiedad, flujo de datos, sincronización con servidor · §3 anatomía del proyecto: archivos y carpetas obligatorias y opcionales, diagrama de estructura · §5 tipos de archivo
6
+
7
+ ---
8
+
9
+ ## 1. Que es XOne?
10
+
11
+ XOne es una **plataforma de desarrollo de aplicaciones móviles** que permite generar apps nativas para Android e iOS a partir de un único código fuente. A diferencia de otros frameworks multiplataforma, XOne utiliza un enfoque **declarativo basado en XML** para definir la interfaz de usuario, combinado con **JavaScript** para la lógica de negocio.
12
+
13
+ ### Componentes del Ecosistema
14
+
15
+ El ecosistema XOne se compone de tres elementos principales:
16
+
17
+ | Componente | Descripción |
18
+ |------------|-------------|
19
+ | **Framework XOne** | Motor que interpreta los archivos XML, CSS y JS para generar las interfaces nativas en cada plataforma |
20
+ | **Runtime XOne** | Entorno de ejecución que corre en el dispositivo móvil, renderizando la UI y ejecutando la lógica |
21
+ | **Servidor de Replica** | Componente de backend que permite la sincronización bidireccional de datos entre dispositivos y servidor central |
22
+
23
+ ### Que hace diferente a XOne?
24
+
25
+ Si vienes del desarrollo web, estas analogias te ayudaran a entender la filosofia de XOne:
26
+
27
+ | Concepto Web | Equivalente XOne | Diferencia Clave |
28
+ |-------------|-----------------|------------------|
29
+ | HTML | Archivos `.xne` (XML) | XOne usa nodos como `<coll>`, `<prop>`, `<frame>` en vez de `<div>`, `<input>`, `<span>` |
30
+ | CSS | `default.css` | Sintaxis similar pero con atributos propietarios; unidades `p` y `%` en vez de `px` y `em` |
31
+ | JavaScript | `functions.js` | API propia (`ui.*`, `self.*`, `appData.*`) en vez de APIs del navegador (`document.*`, `window.*`) |
32
+ | Base de datos | `bd/gestion.db` (SQLite) | Base de datos local integrada que se sincroniza automáticamente con el servidor |
33
+
34
+ > **Nota importante:** Aunque la sintaxis pueda parecer familiar, XOne NO es desarrollo web. No tiene DOM, no tiene navegador, no tiene `document` ni `window`. Las APIs son completamente propias de la plataforma.
35
+
36
+ ### Ventajas Principales
37
+
38
+ 1. **Código único, apps nativas**: Un solo proyecto genera apps para Android e iOS con rendimiento nativo
39
+ 2. **Funcionamiento offline**: La base de datos SQLite local permite trabajar sin conexión
40
+ 3. **Sincronización automática**: El sistema de replica sincroniza datos cuando hay conectividad
41
+ 4. **Desarrollo rápido**: El modelo declarativo reduce drasticamente el código necesario
42
+ 5. **Sin compilación**: Los cambios en XML/CSS/JS se reflejan sin necesidad de recompilar
43
+
44
+ ---
45
+
46
+ ## 2. Arquitectura de XOne
47
+
48
+ ### 2.1 Modelo Declarativo + Imperativo
49
+
50
+ XOne combina dos paradigmas de programación:
51
+
52
+ **Declarativo (XML):** Define QUE mostrar en la pantalla. Se usa para:
53
+ - Estructura de la interfaz de usuario
54
+ - Definición de campos y tipos de datos
55
+ - Layout y posicionamiento de elementos
56
+ - Configuración de eventos
57
+
58
+ **Imperativo (JavaScript):** Define COMO comportarse. Se usa para:
59
+ - Lógica de negocio
60
+ - Validaciones complejas
61
+ - Navegación programatica
62
+ - Integraciones con APIs externas
63
+ - Manipulación de datos
64
+
65
+ ```
66
+ +-----------------------+ +------------------------+
67
+ | XML Declarativo | | JavaScript Imperativo |
68
+ | (.xne / .xml / .css)| | (.js) |
69
+ +-----------+-----------+ +-----------+------------+
70
+ | |
71
+ v v
72
+ +-----+-----------------------------+------+
73
+ | Runtime XOne (Dispositivo) |
74
+ | - Renderiza UI nativa |
75
+ | - Ejecuta logica JS |
76
+ | - Gestiona BD local |
77
+ | - Sincroniza con servidor |
78
+ +------------------------------------------+
79
+ |
80
+ +---------+---------+
81
+ | |
82
+ +-----+------+ +------+------+
83
+ | Android | | iOS |
84
+ | (Nativo) | | (Nativo) |
85
+ +------------+ +-------------+
86
+ ```
87
+
88
+ ### 2.2 Ciclo de Vida: Coleccion, Objeto, Propiedad
89
+
90
+ El modelo de datos de XOne se organiza en tres niveles jerarquicos. Si vienes de bases de datos, la analogia es directa:
91
+
92
+ | Nivel XOne | Equivalente BD | Equivalente Web | Descripción |
93
+ |------------|---------------|-----------------|-------------|
94
+ | **Coleccion** (`coll`) | Tabla | Página/Componente | Define estructura de datos + UI |
95
+ | **Objeto** (DataObject) | Fila/Registro | Instancia | Una unidad de datos concreta |
96
+ | **Propiedad** (`prop`) | Columna/Campo | Input/Label | Un dato individual + su representación visual |
97
+
98
+ Cada coleccion tiene su propio ciclo de vida con eventos bien definidos:
99
+
100
+ ```
101
+ Coleccion creada
102
+ |
103
+ v
104
+ [create] --> Se ejecuta una sola vez al crear la instancia
105
+ |
106
+ v
107
+ [load] --> Se ejecuta cada vez que la pantalla se muestra
108
+ |
109
+ v
110
+ [onchange] --> Se ejecuta cuando cambia el valor de un campo
111
+ |
112
+ v
113
+ [onback] --> Se ejecuta cuando el usuario pulsa el boton "atras"
114
+ ```
115
+
116
+ **Ejemplo práctico del ciclo de vida:**
117
+
118
+ ```xml
119
+ <coll name="DetalleTarea" title="Detalle de Tarea">
120
+ <!-- Se ejecuta UNA vez al crear la coleccion -->
121
+ <create>
122
+ <action name="runscript">
123
+ <script language="javascript">
124
+ // Inicializar valores por defecto
125
+ self.MAP_FECHA = new Date();
126
+ self.MAP_ESTADO = "PENDIENTE";
127
+ </script>
128
+ </action>
129
+ </create>
130
+
131
+ <!-- Se ejecuta CADA VEZ que la pantalla se muestra -->
132
+ <load>
133
+ <action name="runscript">
134
+ <script language="javascript">
135
+ // Actualizar contadores o datos dinamicos
136
+ actualizarContador();
137
+ </script>
138
+ </action>
139
+ </load>
140
+
141
+ <!-- Se ejecuta cuando CAMBIA el valor de un campo -->
142
+ <onchange>
143
+ <field name="MAP_ESTADO">
144
+ <action name="runscript">
145
+ <script language="javascript">
146
+ // Reaccionar al cambio de estado
147
+ if (self.MAP_ESTADO == "COMPLETADA") {
148
+ self.MAP_FECHA_FIN = new Date();
149
+ }
150
+ </script>
151
+ </action>
152
+ </field>
153
+ </onchange>
154
+
155
+ <!-- Contenido de la pantalla aquí -->
156
+
157
+ <!-- Se ejecuta al pulsar ATRAS -->
158
+ <onback>
159
+ <action name="runscript">
160
+ <script language="javascript">
161
+ let window = ui.getView(self);
162
+ if (window) {
163
+ window.exit();
164
+ }
165
+ </script>
166
+ </action>
167
+ </onback>
168
+ </coll>
169
+ ```
170
+
171
+ ### 2.3 Flujo de Datos
172
+
173
+ El flujo de datos en XOne sigue un patron claro entre la base de datos local, las colecciones en memoria y la interfaz de usuario:
174
+
175
+ ```
176
+ +----------------+ +-------------------+ +----------+
177
+ | BD Local | <----> | Coleccion | <----> | UI |
178
+ | (gestion.db) | SQL | (objetos en | binding | (props, |
179
+ | SQLite | | memoria) | | frames) |
180
+ +----------------+ +-------------------+ +----------+
181
+ ^
182
+ | Sincronización
183
+ v
184
+ +----------------+
185
+ | Servidor |
186
+ | de Replica |
187
+ +----------------+
188
+ ```
189
+
190
+ 1. **BD Local -> Coleccion**: Las colecciones cargan datos de SQLite mediante el atributo `sql`
191
+ 2. **Coleccion -> UI**: Las propiedades (`prop`) muestran los datos de la coleccion automáticamente
192
+ 3. **UI -> Coleccion**: Cuando el usuario edita un campo, el valor se actualiza en el objeto (DataObject)
193
+ 4. **Coleccion -> BD Local**: Al llamar a `save()`, los cambios se persisten en SQLite
194
+ 5. **BD Local <-> Servidor**: El sistema de replica sincroniza los datos bidireccionalmente
195
+
196
+ ### 2.4 Sincronización con Servidor
197
+
198
+ La sincronización es una de las caracteristicas más poderosas de XOne. Cada registro en la base de datos tiene un campo `ROWID` que contiene un GUID (identificador único global) de 32 caracteres hexadecimales. Este GUID permite:
199
+
200
+ - Identificar de forma única cada registro en cualquier dispositivo
201
+ - Resolver conflictos de sincronización
202
+ - Mantener la integridad referencial entre dispositivos
203
+
204
+ ```
205
+ Dispositivo A Servidor Dispositivo B
206
+ +----------+ +--------+ +----------+
207
+ | ROWID: | push | | pull | ROWID: |
208
+ | a1b2c3.. | -------> | a1b2.. | -------> | a1b2c3.. |
209
+ +----------+ +--------+ +----------+
210
+ ```
211
+
212
+ > **Nota:** El `ROWID` es una **columna de plataforma**: el framework la crea y la rellena sola (autogenera el GUID de 32 caracteres hex en cada alta) y el motor de réplica la usa como clave global de fila. **No hace falta declararla** como `<prop>` (igual que el `ID`); declararla es válido pero redundante, así que mejor omitirla por limpieza.
213
+
214
+ ---
215
+
216
+ ## 3. Anatomia de un Proyecto XOne
217
+
218
+ ### 3.1 Archivos Obligatorios
219
+
220
+ Todo proyecto XOne requiere estos archivos en la raiz:
221
+
222
+ | Archivo | Proposito | Equivalente Web |
223
+ |---------|-----------|-----------------|
224
+ | `app.xml` | Configuración global de la aplicación | `package.json` + configuración del framework |
225
+ | `app.ini` | Metadatos de la aplicación (nombre, icono) | `manifest.json` |
226
+ | `mappings.xne` | Colecciones base (Empresas y Usuarios) | Schema de base de datos |
227
+ | `default.css` | Estilos globales de la aplicación | Archivo CSS global |
228
+ | `functions.js` | Funciones JavaScript compartidas | Archivo JS de utilidades |
229
+ | `EntradaApp.xne` | Pantalla de entrada de la aplicación | `index.html` |
230
+
231
+ Además, cada coleccion adicional y cada pantalla se define en su propio archivo `.xne`:
232
+
233
+ ```
234
+ MenuPrincipal.xne --> Pantalla del menu principal
235
+ ListaTareas.xne --> Pantalla con lista de tareas
236
+ DetalleTarea.xne --> Pantalla de detalle/edicion
237
+ Tareas.xne --> Definición de coleccion (tabla + campos)
238
+ Categorias.xne --> Otra coleccion
239
+ ```
240
+
241
+ ### 3.2 Carpetas Obligatorias
242
+
243
+ | Carpeta | Contenido | Por que es obligatoria |
244
+ |---------|-----------|----------------------|
245
+ | `bd/` | `gestion.db` (base de datos SQLite) | Sin BD la app no puede almacenar ni consultar datos |
246
+ | `icons/` | Iconos y recursos gráficos (PNG, JPG, SVG) | La app necesita iconos para botones, menú, etc. (el splash NO va aquí — ver §4.1) |
247
+ | `files/` | Archivos dinámicos (fotos, firmas, documentos) | Directorio de trabajo para archivos generados en runtime |
248
+
249
+ ### 3.3 Carpetas Opcionales
250
+
251
+ | Carpeta | Contenido | Cuando usarla |
252
+ |---------|-----------|---------------|
253
+ | `fonts/` | Fuentes tipograficas (.ttf, .otf) | Cuando necesitas tipografía personalizada |
254
+ | `lang/` | Subcarpetas por idioma (`en/`, `es/`, `fr/`) | Para apps multiidioma |
255
+ | `native/` | Código nativo (`Android/`, `IOS/`) | Para integraciones nativas avanzadas |
256
+ | `scripts/` | Scripts JS organizados en subcarpetas | En proyectos grandes con mucho JS |
257
+ | `certificates/` | Certificados SSL/TLS (.crt, .pem) | Para conexiones seguras personalizadas |
258
+
259
+ ### 3.4 Diagrama de Estructura Completa
260
+
261
+ A continuacion, el diagrama de un proyecto XOne típico. Los elementos marcados con `[OBL]` son obligatorios:
262
+
263
+ ```
264
+ MiProyectoXOne/
265
+ |
266
+ |-- app.xml [OBL] Configuración de la aplicacion
267
+ |-- app.ini [OBL] Metadatos (nombre, icono)
268
+ |-- mappings.xne [OBL] SOLO Empresas y Usuarios
269
+ |-- default.css [OBL] Estilos globales
270
+ |-- functions.js [OBL] Funciones JS globales
271
+ |-- EntradaApp.xne [OBL] Pantalla de entrada
272
+ |-- splash.png [OPC] Imagen de splash (ver §4.1 "Pantalla de splash")
273
+ |
274
+ |-- MenuPrincipal.xne Pantalla del menu
275
+ |-- Login.xne Pantalla de login
276
+ |-- ListaClientes.xne Pantalla de listado
277
+ |-- DetalleCliente.xne Pantalla de detalle
278
+ |-- Clientes.xne Colección (datos de clientes)
279
+ |-- Productos.xne Colección (datos de productos)
280
+ |
281
+ |-- bd/ [OBL] Base de datos
282
+ | +-- gestion.db Archivo SQLite
283
+ |
284
+ |-- icons/ [OBL] Recursos gráficos
285
+ | |-- app_icon.png Icono de la app (192x192)
286
+ | |-- ic_menu.png Icono de menú (48x48)
287
+ | |-- ic_search.png Icono de búsqueda (48x48)
288
+ | +-- ic_arrow_back.png Flecha atrás (48x48)
289
+ |
290
+ |-- files/ [OBL] Archivos dinamicos
291
+ | |-- fotos/
292
+ | |-- documentos/
293
+ | +-- firmas/
294
+ |
295
+ |-- fonts/ [REC] Fuentes tipograficas
296
+ | |-- Roboto-Regular.ttf
297
+ | +-- Roboto-Bold.ttf
298
+ |
299
+ |-- scripts/ [OPC] Scripts organizados
300
+ | |-- login/
301
+ | +-- general/
302
+ |
303
+ +-- lang/ [OPC] Multiidioma
304
+ |-- en/
305
+ +-- es/
306
+ ```
307
+
308
+ > **Regla crítica:** El archivo `mappings.xne` SOLO debe contener las colecciones `Empresas` y `Usuarios`. Todas las demas colecciones van en archivos `.xne` separados, uno por cada coleccion. Ver sección [4.3 mappings.xne](#43-mappingsxne) para más detalle.
309
+
310
+ ## 5. Tipos de Archivos en XOne
311
+
312
+ XOne utiliza varios tipos de archivos, cada uno con un proposito especifico:
313
+
314
+ | Extensión | Tipo | Proposito | Equivalente Web |
315
+ |-----------|------|-----------|-----------------|
316
+ | `.xne` | XML propietario | Definición de colecciones y pantallas | `.html` + `.json` (schema) |
317
+ | `.css` | CSS propietario | Estilos visuales (NO es CSS web estándar) | `.css` (con diferencias importantes) |
318
+ | `.js` | JavaScript | Lógica de negocio y funciones | `.js` (API diferente) |
319
+ | `.xml` | XML estándar | Configuración (`app.xml`) | Archivos de configuración |
320
+ | `.ini` | Texto plano | Metadatos (`app.ini`) | `.env` / `manifest.json` |
321
+ | `.db` | SQLite | Base de datos local | Base de datos del backend |
322
+
323
+ ### Archivos .xne (fuente) vs .xml (generado por XOneStudio)
324
+
325
+ En XOne hay una distincion fundamental entre **fuente** y **salida generada**:
326
+
327
+ | Extensión | Rol | Quien lo edita |
328
+ |-----------|-----|----------------|
329
+ | `.xne` | **Fichero fuente** de colecciones y pantallas | El programador (y la IA) — es lo único que se edita |
330
+ | `.xml` (de colecciones/pantallas) | **Artefacto generado automáticamente** por XOneStudio a partir del `.xne` correspondiente | **Nadie** — se regenera solo |
331
+ | `app.xml` | Configuración global de la aplicación (única excepción) | El programador — es fuente, no tiene `.xne` que lo genere |
332
+
333
+ Los archivos `.xne` son el corazón de XOne. Aunque tienen contenido XML, usan la extensión `.xne` (XOne Native Extensión). Un mismo archivo `.xne` puede definir:
334
+
335
+ - **Una coleccion de datos** (como una tabla de BD con sus campos)
336
+ - **Una pantalla** (con su layout, botones y lógica)
337
+ - **Ambas cosas a la vez** (coleccion + presentación visual)
338
+
339
+ #### Por que existen los `.xml` de colecciones
340
+
341
+ XOneStudio genera automáticamente un `.xml` por cada `.xne` porque **algunos motores de ejecución del framework todavia leen `.xml`**. No son ficheros legacy ni restos de proyectos antiguos: se generan hoy, en proyectos nuevos, como artefacto de build. El plan de futuro es que desaparezcan y todo quede solo en `.xne`.
342
+
343
+ #### Regla operativa: solo `.xne`
344
+
345
+ > **Al trabajar sobre un proyecto XOne (nuevo o existente), solo se tocan los ficheros `.xne`. Los `.xml` de colecciones o pantallas que aparezcan se ignoran por completo: no se leen, no se editan, no se consultan, no se crean. La única excepción es `app.xml` (configuración global), que SI es fuente.**
346
+
347
+ Esto aplica tanto si el proyecto tiene solo `.xne` como si tiene `.xne` y `.xml` conviviendo. La coexistencia es normal hoy en día; el trabajo con IA se comporta como si los `.xml` (excepto `app.xml`) no existieran.
348
+
349
+ ### Archivos .css (Estilos Propietarios)
350
+
351
+ El CSS de XOne se parece al CSS web pero tiene diferencias cruciales:
352
+
353
+ | Caracteristica | CSS Web | CSS XOne |
354
+ |---------------|---------|----------|
355
+ | Unidades de medida | `px`, `em`, `rem`, `vw` | `p` (puntos), `%` (porcentaje) |
356
+ | Selectores | `#id`, `.clase`, `tag`, `[attr]` | `coll`, `prop`, `prop:TYPE`, `.clase` |
357
+ | Herencia | `inherit`, cascada natural | `extends:.otraClase` |
358
+ | Colores | `#RGB`, `rgb()`, `hsl()`, nombres | `#RRGGBB`, `#AARRGGBB` |
359
+ | Modelo de caja | `box-sizing`, `margin`, `padding` | `tmargin`, `bmargin`, `lmargin`, `rmargin` |
360
+
361
+ > Para la referencia completa de atributos CSS, consulta el tópico 04 - Estilos CSS en XOne.
362
+
363
+ ### Archivos .js (JavaScript)
364
+
365
+ El JavaScript de XOne usa un motor propio con APIs específicas:
366
+
367
+ ```javascript
368
+ // Esto NO funciona en XOne (APIs del DOM):
369
+ document.getElementById("miCampo"); // NO existe
370
+ window.addEventListener("click", fn); // NO existe
371
+ localStorage.setItem("key", "val"); // NO existe
372
+
373
+ // Esto SÍ funciona en XOne (APIs propias):
374
+ self.MAP_CAMPO; // Acceder a un campo
375
+ ui.showToast("Mensaje"); // Mostrar notificación
376
+ appData.getCollection("Tareas"); // Obtener coleccion
377
+ $http.get(url, request, ok, err); // Petición HTTP (forma idiomática)
378
+
379
+ // Esto también funciona (implementación custom XOne, compatible con spec):
380
+ fetch("https://api.com/datos").then(r => r.json()); // sí existe
381
+ new Promise((resolve, reject) => { resolve(42); }); // sí existe (ES2024)
382
+ setTimeout(() => console.log("hola"), 1000); // sí existe
383
+ class Tarea { constructor(t) { this.titulo = t; } } // sí existe
384
+ ```
385
+
386
+ > Para la referencia completa de la API JavaScript, consulta el tópico 03 - API JavaScript.
387
+
@@ -0,0 +1,77 @@
1
+ # Índice completo de las referencias
2
+
3
+ > Referencia de `xone-development`. Sale del `SKILL.md` para que las reglas
4
+ > duras quepan en una lectura por omisión (100 líneas).
5
+
6
+ ## Referencias
7
+
8
+ Lee el fichero que corresponda antes de responder sobre atributos concretos, valores admitidos o ejemplos.
9
+
10
+ ### Fundamentos
11
+ - [fundamentos/plataforma-y-anatomia-de-proyecto.md](references/fundamentos/plataforma-y-anatomia-de-proyecto.md) — Qué es XOne, arquitectura, ciclo de vida colección/objeto/propiedad, sincronización, anatomía de carpetas y tipos de fichero
12
+ - [fundamentos/configuracion-app-xml-ini-mappings.md](references/fundamentos/configuracion-app-xml-ini-mappings.md) — `app.xml` atributo por atributo, `app.ini` y `mappings.xne`
13
+ - [fundamentos/conceptos-clave.md](references/fundamentos/conceptos-clave.md) — Colecciones, DataObject, props, `##PREF##`, macros del sistema, códigos de error y detalle de la sintaxis JS soportada
14
+ - [fundamentos/navegacion-convenciones-y-primer-proyecto.md](references/fundamentos/navegacion-convenciones-y-primer-proyecto.md) — Flujo Splash→Login→EntradaApp→Menu, convenciones de nombres y creación de un proyecto básico paso a paso
15
+ - [fundamentos/errores-comunes.md](references/fundamentos/errores-comunes.md) — Errores frecuentes al empezar y su corrección
16
+
17
+ ### XML / UI
18
+ - [xml-ui/estructura-y-nodo-coll.md](references/xml-ui/estructura-y-nodo-coll.md) — Introducción a la UI y nodo `coll`: colecciones de datos vs especiales, valores de `progid`, `sql`, `loadall`
19
+ - [xml-ui/nodos-group-y-frame.md](references/xml-ui/nodos-group-y-frame.md) — `group` (fijos, drawer, tabs) y `frame` (flotantes, bottom sheet, flujo de layout y `newline`)
20
+ - [xml-ui/prop-atributos-y-condiciones.md](references/xml-ui/prop-atributos-y-condiciones.md) — Atributos comunes de `prop`, visibilidad completa, dimensiones, estilos inline, comportamiento, bordes, `disablevisible`/`disableedit`
21
+ - [xml-ui/prop-tipos-basicos.md](references/xml-ui/prop-tipos-basicos.md) — Props de texto, número, label, botón, checkbox, fecha/hora, imagen (con animaciones Lottie y GIF), foto (con foto en movimiento), vídeo y escáner
22
+ - [xml-ui/prop-tipos-listas-y-mapas.md](references/xml-ui/prop-tipos-listas-y-mapas.md) — Props de mapa, grid/lista, chips, kanban y coverflow
23
+ - [xml-ui/prop-tipos-combos-y-controles.md](references/xml-ui/prop-tipos-combos-y-controles.md) — Combos, web, slider, progress, stepper, OTP, markdown, navbar, password, adjunto, THTML, firma DR, `onchange`, `updates` y `formula`
24
+ - [xml-ui/contents-y-macros.md](references/xml-ui/contents-y-macros.md) — `contents` (vinculación, filtros dinámicos) y macros (sistema, `setMacro`/`getMacro`)
25
+ - [xml-ui/asfilter-visibilidad-eventos-y-macros.md](references/xml-ui/asfilter-visibilidad-eventos-y-macros.md) — `asfilter`, event handlers detallados, sistema de visibilidad y catálogo de macros del sistema
26
+ - [xml-ui/patrones-de-pantalla.md](references/xml-ui/patrones-de-pantalla.md) — Plantillas completas de pantalla: login, menú, lista con filtros, detalle, tabs, mapa, chat, dashboard, maestro-detalle, edición en línea, multi-selección
27
+ - [xml-ui/layouts-herencia-y-buenas-practicas.md](references/xml-ui/layouts-herencia-y-buenas-practicas.md) — Layouts responsive, modales, FAB, herencia con `inherits`, `include-layout`, checklist de validación y unicidad de nombres
28
+ - [xml-ui/atributos-coll-group-frame.md](references/xml-ui/atributos-coll-group-frame.md) — Cualquier atributo de `coll`, `group` o `frame` con tipo, valores y default
29
+ - [xml-ui/atributos-prop.md](references/xml-ui/atributos-prop.md) — Cualquier atributo de `prop`: colores por estado, bordes, entrada, multimedia, ML, `classid`, sliders, stepper, OTP, kanban, coverflow, chips
30
+ - [xml-ui/atributos-method-macro-script-event-app.md](references/xml-ui/atributos-method-macro-script-event-app.md) — Atributos de `method`, `macro`, `script`, `event`, `platform`, tipos y atributos globales de la app
31
+ - [xml-ui/mappings-y-colecciones-separadas.md](references/xml-ui/mappings-y-colecciones-separadas.md) — `mappings.xne` obligatorio y colecciones en archivos separados
32
+ - [xml-ui/mapas.md](references/xml-ui/mapas.md) — Mapas completos: atributos, eventos y API JavaScript del control
33
+ - [xml-ui/eventos-ciclo-de-vida-e-interaccion.md](references/xml-ui/eventos-ciclo-de-vida-e-interaccion.md) — Catálogo de eventos: ciclo de vida e interacción (`onclick`, `onchange`, `selecteditem`, `onlongpressitem`, `onback`)
34
+ - [xml-ui/eventos-sistema-login-y-personalizados.md](references/xml-ui/eventos-sistema-login-y-personalizados.md) — Eventos de drawer y bottom sheet, login, sistema (`onpushreceived`, `maintenance`, `sys-message`), ciclo de aplicación, inactividad, personalizados con `ExecuteNode` y acciones
35
+ - [xml-ui/errores-comunes-xml.md](references/xml-ui/errores-comunes-xml.md) — Errores comunes de XML y su corrección
36
+
37
+ ### JavaScript
38
+ - [javascript/motor-js-y-contexto-de-ejecucion.md](references/javascript/motor-js-y-contexto-de-ejecucion.md) — Motor JS, cómo se ejecuta desde eventos XML, diferencias con JS web, ámbitos y persistencia de variables, escape XML/CDATA en `.xne`
39
+ - [javascript/self-y-dataobject.md](references/javascript/self-y-dataobject.md) — `self`: campos, `getOldValue`, `getOwnerCollection`, `getContents`, `setFieldPropertyValue`, `executeNode`, `save`, JSON y métodos de `DataCollection`
40
+ - [javascript/ui-navegacion-mensajes-y-vista.md](references/javascript/ui-navegacion-mensajes-y-vista.md) — `ui`: navegación, `msgBox`/`showToast`/`showSnackbar`, refresco y acceso a controles, showcase, date/time pickers
41
+ - [javascript/ui-gps-camara-y-multimedia.md](references/javascript/ui-gps-camara-y-multimedia.md) — `ui`: GPS completo, cámara (`startCamera` con foto en movimiento), escáner de documentos (`scanDocument`), OCR (`recognizeText`), archivos, firma, escáner QR, sleep y timers
42
+ - [javascript/ui-catalogo-de-metodos.md](references/javascript/ui-catalogo-de-metodos.md) — `ui`: `executeActionAfterDelay`, cronómetros, API de Stepper y OTP, voz (TTS/STT), audio y catálogo completo de métodos
43
+ - [javascript/coleccion-error-y-usuario.md](references/javascript/coleccion-error-y-usuario.md) — API completa de la colección actual (browse, filtros, búsqueda full-text, macros, metadatos, SQL, JSON), objeto de error y usuario logueado
44
+ - [javascript/objetos-creables-a-m.md](references/javascript/objetos-creables-a-m.md) — Creables de FileManager a Animation (SqlManager, IniParser, AndroidIntent, Bluetooth, OAuth2, Worker)
45
+ - [javascript/objetos-creables-n-z.md](references/javascript/objetos-creables-n-z.md) — Creables de Socket a XOneSigner (NFC, ImageDrawing, BarcodeGenerator, XOnePrinter, XOnePDF, OCR) y la lista canónica completa
46
+ - [javascript/singletons-globales.md](references/javascript/singletons-globales.md) — API de cada singleton global
47
+ - [javascript/patrones-criticos-seguridad-y-rendimiento.md](references/javascript/patrones-criticos-seguridad-y-rendimiento.md) — Patrones críticos (lock/unlock, browse, filter/restore, contexto en callbacks), seguridad y rendimiento
48
+ - [javascript/plantillas-y-funciones-utilitarias.md](references/javascript/plantillas-y-funciones-utilitarias.md) — Plantillas completas: CRUD, filtrado, maestro-detalle, GPS, fotos, chat, QR, login; y utilidades para `functions.js`
49
+ - [javascript/debugging-y-best-practices.md](references/javascript/debugging-y-best-practices.md) — Debugging de JavaScript y top 20 de buenas prácticas
50
+ - [javascript/metodos-de-los-controles.md](references/javascript/metodos-de-los-controles.md) — Métodos que expone cada control por tipo: campos, numéricos, multimedia, listas, mapas, gráficas, AR, frames
51
+ - [javascript/metodos-nativos-de-la-vista.md](references/javascript/metodos-nativos-de-la-vista.md) — Métodos que expone la vista nativa de Android/iOS bajo el frame o el control, no XOne: `setBlur`, `setSaturation`, sin contrato de compatibilidad
52
+ - [javascript/patrones-de-navegacion-datos-y-codigo.md](references/javascript/patrones-de-navegacion-datos-y-codigo.md) — Patrones de navegación, de datos y patrones críticos de código
53
+ - [javascript/patrones-de-ui-voz-integracion-y-seguridad.md](references/javascript/patrones-de-ui-voz-integracion-y-seguridad.md) — Patrones de UI, control por voz, integración y seguridad
54
+ - [javascript/objeto-ai-llm-en-dispositivo.md](references/javascript/objeto-ai-llm-en-dispositivo.md) — Objeto `ai`: LLM en el dispositivo, descarga de modelos, `generate`, `chat` con streaming, function calling, skills y formatos
55
+
56
+ ### CSS
57
+ - [css/selectores-unidades-colores.md](references/css/selectores-unidades-colores.md) — Selectores en detalle, unidades, paletas y formatos de color
58
+ - [css/propiedades-y-herencia.md](references/css/propiedades-y-herencia.md) — Atributos por categoría con ejemplos largos (dimensiones, márgenes, padding, fuentes, texto, fondo, bordes, sombras, visibilidad, Material) y el sistema `extends` completo
59
+ - [css/atributos-por-categoria.md](references/css/atributos-por-categoria.md) — Tablas compactas de atributos por categoría, incluidas etiquetas, checkbox/toggles, imágenes e iconos, atributos de `coll`, machine learning y la tabla de transparencia alpha
60
+ - [css/dinamicos-cascada-y-componentes.md](references/css/dinamicos-cascada-y-componentes.md) — `##FLD_CAMPO##`, cascada de dispositivo, `strict-mode`, animaciones y tokens, gráficos, calendario y mapa
61
+ - [css/patrones-material-y-temas.md](references/css/patrones-material-y-temas.md) — Patrones Material (header/body/footer, botones, inputs, tarjetas, FAB, toolbar, item de lista), temas light/dark y un `default.css` + `colors.css` completos y comentados
62
+ - [css/buenas-practicas-y-parser.md](references/css/buenas-practicas-y-parser.md) — Buenas prácticas, anti-patrones, checklist de validación y detalle de las funciones del parser (`@import`, variables, `calc()`, `!important`, `!default`, `@extend`, modo estricto)
63
+
64
+ ### Datos e integración
65
+ - [datos/appdata.md](references/datos/appdata.md) — `appData` completo: colecciones, login/logout, paso de datos entre pantallas, macros globales, SQL directo, detección de dispositivo, `loadIncludeFile` y `loadCssFile`
66
+ - [datos/http.md](references/datos/http.md) — `$http`: verbos, descarga de fichero, futures y llamadas en paralelo, TLS y mutual TLS, pinning, proxy y WebSocket
67
+ - [datos/oauth2-y-replica.md](references/datos/oauth2-y-replica.md) — OAuth2 completo y objeto `replica`
68
+ - [datos/appdata-referencia-ampliada.md](references/datos/appdata-referencia-ampliada.md) — Segunda redacción del corpus para `appData`, con ejemplos adicionales
69
+ - [datos/http-sqlmanager-y-crypto.md](references/datos/http-sqlmanager-y-crypto.md) — Segunda redacción para `$http`, más `SqlManager` y la API `crypto`
70
+
71
+ ### Dispositivo
72
+ - [device/objetos-de-dispositivo.md](references/device/objetos-de-dispositivo.md) — FileManager, XOnePDF, XOnePrinter, BarcodeGenerator, Datawedge, XOneNFC, XOneOCR, BluetoothSerialPort, WifiManager, Animation, deviceInfo, GpsTools, OAuth2, WebSocket y fingerprintManager
73
+ - [device/systemsettings-y-permisos.md](references/device/systemsettings-y-permisos.md) — `systemSettings`: permisos en runtime con futures, brillo, red, batería, memoria y espacio, hardware, rutas, MDM, XOneLive e Intune
74
+ - [device/systemsettings-referencia-ampliada.md](references/device/systemsettings-referencia-ampliada.md) — Segunda redacción del corpus para `systemSettings`, más extensa
75
+ - [device/biometria-imagedrawing-y-otros.md](references/device/biometria-imagedrawing-y-otros.md) — `biometricsManager`, `ImageDrawing`, otros objetos utilitarios y tabla resumen de complementarios
76
+
77
+ Para crear un proyecto completo desde cero, `xone-project-generator`. Para validar y auditar el XML resultante, `xone-review` (`xone-simulator validate`); para diagnosticar un fallo a partir de su síntoma, `xone-debugging`.