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
|
||||
|
||||
## [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
|
||||
### Added
|
||||
- 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;
|
||||
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
|
||||
`.3` sigue en 2.19.0 (decidir si se sube) y aplicar el actualizador en Exilaser.
|
||||
simulada (sin login real) y **falta probarla con un usuario real**. Desplegada en LinkedCorp `.3`
|
||||
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
|
||||
`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
|
||||
|
||||
@@ -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 reemplazar `storage/` ni `logs/` durante un deploy.
|
||||
- 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",
|
||||
"version": "4.16.0",
|
||||
"version": "4.16.1",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/server.js",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "project-linkedcorp-frontend",
|
||||
"private": true,
|
||||
"version": "4.16.0",
|
||||
"version": "4.16.1",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -67,12 +67,12 @@ export function ListView({ columns, rows, searchValue, getSearchHaystack, onRowC
|
||||
</td>
|
||||
)}
|
||||
{columns.map((col, index) => (
|
||||
<td key={col.key} style={index === 0 && child ? { paddingLeft: 38 } : undefined}>
|
||||
{index === 0 && isParent ? (
|
||||
<td key={col.key} style={index === 0 && child ? { paddingLeft: 54 } : undefined}>
|
||||
{index === 0 && getChildren && !child ? (
|
||||
<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} />}
|
||||
</button>
|
||||
</button> : <span className="tree-toggle list-tree-dot" aria-hidden="true" />}
|
||||
{col.render ? col.render(row) : row[col.key]}
|
||||
</span>
|
||||
) : (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:last-child td { border-bottom: none; }
|
||||
.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)); }
|
||||
.row-menu-btn { opacity: .6; }
|
||||
.row-menu-btn:hover { opacity: 1; }
|
||||
|
||||
Reference in New Issue
Block a user