feat: version 4.16.1 -- Equipos: filas sin subniveles alineadas con los grupos
Incluye el registro del despliegue de 4.16.0 en ESTADO y PRODUCCION. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,10 @@
|
|||||||
# Changelog - project.linkedcorp.net
|
# Changelog - project.linkedcorp.net
|
||||||
|
|
||||||
|
## [4.16.1] - 2026-10-30
|
||||||
|
### Changed
|
||||||
|
- Equipos → Software: los programas sin subniveles llevan un punto y quedan alineados con los
|
||||||
|
grupos por fabricante; los programas desplegados van más adentro.
|
||||||
|
|
||||||
## [4.16.0] - 2026-10-30
|
## [4.16.0] - 2026-10-30
|
||||||
### Added
|
### Added
|
||||||
- Equipos → Software (detalle del equipo y pestaña general): columna "Tipo" y filtro con Gratuito,
|
- Equipos → Software (detalle del equipo y pestaña general): columna "Tipo" y filtro con Gratuito,
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ autorregistro/aprobacion/SMTP.
|
|||||||
|
|
||||||
- v4.16.0 (2026-10-30): Software con tipo de licencia, grupos por fabricante y corrección manual;
|
- v4.16.0 (2026-10-30): Software con tipo de licencia, grupos por fabricante y corrección manual;
|
||||||
migración `040` aplicada en dev. Backend probado contra la BD de dev; pantalla probada con API
|
migración `040` aplicada en dev. Backend probado contra la BD de dev; pantalla probada con API
|
||||||
simulada (sin login real) y **falta probarla con un usuario real**. Pendiente: servidor LinkedCorp
|
simulada (sin login real) y **falta probarla con un usuario real**. Desplegada en LinkedCorp `.3`
|
||||||
`.3` sigue en 2.19.0 (decidir si se sube) y aplicar el actualizador en Exilaser.
|
el 2026-10-30 (ver `PRODUCCION.md`). Exilaser se actualiza por su panel.
|
||||||
- Conector FoxPro **1.1.0 instalado en Exilaser** (`C:\api_project\foxpro`, puerto 8455, tarea
|
- Conector FoxPro **1.1.0 instalado en Exilaser** (`C:\api_project\foxpro`, puerto 8455, tarea
|
||||||
`LinkedCorp-Conector-FoxPro`). Token en `~/.config/linkedcorp/conector-foxpro-exilaser.token`.
|
`LinkedCorp-Conector-FoxPro`). Token en `~/.config/linkedcorp/conector-foxpro-exilaser.token`.
|
||||||
- **Módulo del sistema hecho en dev**: migración 038 aplicada en dev, `modules/integrations`, job
|
- **Módulo del sistema hecho en dev**: migración 038 aplicada en dev, `modules/integrations`, job
|
||||||
|
|||||||
@@ -624,3 +624,15 @@ sudo journalctl -u project-linkedcorp-frontend -n 100 --no-pager
|
|||||||
- No dejar secretos en el repo (`.env` de produccion vive solo en `backend/.env` del servidor).
|
- No dejar secretos en el repo (`.env` de produccion vive solo en `backend/.env` del servidor).
|
||||||
- No reemplazar `storage/` ni `logs/` durante un deploy.
|
- No reemplazar `storage/` ni `logs/` durante un deploy.
|
||||||
- Documentar cambios de version y estado real en este archivo y en `CHANGELOG.md`.
|
- Documentar cambios de version y estado real en este archivo y en `CHANGELOG.md`.
|
||||||
|
|
||||||
|
## Actualizacion v4.16.0 (2026-10-30) — salto desde v2.19.0
|
||||||
|
|
||||||
|
- Servidor `.3`, salto de 2.19.0 a 4.16.0 (commit `420a794`). `migrate-db.js` aplico las 40
|
||||||
|
migraciones; la BD paso de 36 a 55 tablas. Conteos iguales antes y despues: 3 usuarios,
|
||||||
|
12 proyectos, 38 actividades, 186 tareas.
|
||||||
|
- Antes de migrar se confirmo el marcador `seed_it_baseline_2026_09`: sin el, `006` borraria proyectos.
|
||||||
|
- Respaldos: `backups/pre_v4.16.0_20261030_173843.sql` y `backups/dist_2.19.0_20261030_173843/`.
|
||||||
|
- Reversion: restaurar ese SQL, `git reset --hard 8ed1d63` en `source/`, reinstalar dependencias,
|
||||||
|
recompilar frontend y reiniciar los dos servicios.
|
||||||
|
- PID cambiados y `/health` OK. Publico: `version.json` 4.16.0, login sin errores de consola.
|
||||||
|
- Las sesiones anteriores quedan invalidas (JWT sin `sid`): todos inician sesion una vez.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "project-linkedcorp-backend",
|
"name": "project-linkedcorp-backend",
|
||||||
"version": "4.16.0",
|
"version": "4.16.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "src/server.js",
|
"main": "src/server.js",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "project-linkedcorp-frontend",
|
"name": "project-linkedcorp-frontend",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "4.16.0",
|
"version": "4.16.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -67,12 +67,12 @@ export function ListView({ columns, rows, searchValue, getSearchHaystack, onRowC
|
|||||||
</td>
|
</td>
|
||||||
)}
|
)}
|
||||||
{columns.map((col, index) => (
|
{columns.map((col, index) => (
|
||||||
<td key={col.key} style={index === 0 && child ? { paddingLeft: 38 } : undefined}>
|
<td key={col.key} style={index === 0 && child ? { paddingLeft: 54 } : undefined}>
|
||||||
{index === 0 && isParent ? (
|
{index === 0 && getChildren && !child ? (
|
||||||
<span className="list-tree-cell">
|
<span className="list-tree-cell">
|
||||||
<button type="button" className="tree-toggle" aria-expanded={open} aria-label={t(open ? 'common_collapse' : 'common_expand')} onClick={(e) => { e.stopPropagation(); onToggle(); }}>
|
{isParent ? <button type="button" className="tree-toggle" aria-expanded={open} aria-label={t(open ? 'common_collapse' : 'common_expand')} onClick={(e) => { e.stopPropagation(); onToggle(); }}>
|
||||||
{open ? <ChevronDown size={14} /> : <ChevronRight size={14} />}
|
{open ? <ChevronDown size={14} /> : <ChevronRight size={14} />}
|
||||||
</button>
|
</button> : <span className="tree-toggle list-tree-dot" aria-hidden="true" />}
|
||||||
{col.render ? col.render(row) : row[col.key]}
|
{col.render ? col.render(row) : row[col.key]}
|
||||||
</span>
|
</span>
|
||||||
) : (col.render ? col.render(row) : row[col.key])}
|
) : (col.render ? col.render(row) : row[col.key])}
|
||||||
|
|||||||
@@ -231,6 +231,7 @@ table.list-table { width: 100%; border-collapse: collapse; font-size: .8rem; }
|
|||||||
.list-table tbody tr:hover { background: rgb(var(--panel)); }
|
.list-table tbody tr:hover { background: rgb(var(--panel)); }
|
||||||
.list-table tbody tr:last-child td { border-bottom: none; }
|
.list-table tbody tr:last-child td { border-bottom: none; }
|
||||||
.list-tree-cell { display: inline-flex; align-items: center; gap: 6px; }
|
.list-tree-cell { display: inline-flex; align-items: center; gap: 6px; }
|
||||||
|
.list-tree-dot::before { content: ''; width: 4px; height: 4px; border-radius: 50%; background: rgb(var(--muted)); }
|
||||||
.list-empty { padding: 40px 16px; text-align: center; color: rgb(var(--muted)); }
|
.list-empty { padding: 40px 16px; text-align: center; color: rgb(var(--muted)); }
|
||||||
.row-menu-btn { opacity: .6; }
|
.row-menu-btn { opacity: .6; }
|
||||||
.row-menu-btn:hover { opacity: 1; }
|
.row-menu-btn:hover { opacity: 1; }
|
||||||
|
|||||||
Reference in New Issue
Block a user