fix: version real en pie del menu + logo abajo-izquierda
El pie del menu lateral mostraba el texto fijo "v0.1.0" en vez de la version real (se lee ahora de package.json via import JSON de Vite). El logo de LinkedCorp se mueve del encabezado del menu al pie, sobre el numero de version, en modo expandido y compacto. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
# Changelog - project.linkedcorp.net
|
# Changelog - project.linkedcorp.net
|
||||||
|
|
||||||
|
## [1.14.1] - 2026-09-15
|
||||||
|
### Fixed
|
||||||
|
- El pie del menú lateral mostraba siempre el texto fijo "v0.1.0" en vez de la versión real de la
|
||||||
|
app (se lee ahora de `package.json` del frontend).
|
||||||
|
### Changed
|
||||||
|
- El logo de LinkedCorp en el menú lateral pasa de la parte superior a la parte inferior izquierda,
|
||||||
|
justo encima del número de versión.
|
||||||
|
|
||||||
## [1.14.0] - 2026-09-15
|
## [1.14.0] - 2026-09-15
|
||||||
### Added
|
### Added
|
||||||
- Arrastrar con el mouse para reordenar: actividades (dentro de un proyecto) y tareas (dentro de
|
- Arrastrar con el mouse para reordenar: actividades (dentro de un proyecto) y tareas (dentro de
|
||||||
|
|||||||
@@ -384,6 +384,16 @@ iRedMail):
|
|||||||
- Backend + frontend reconstruidos y reiniciados (PID confirmado en ambos), `sort_order`
|
- Backend + frontend reconstruidos y reiniciados (PID confirmado en ambos), `sort_order`
|
||||||
verificado en produccion, bundle nuevo verificado contra `https://project.linkedcorp.net`.
|
verificado en produccion, bundle nuevo verificado contra `https://project.linkedcorp.net`.
|
||||||
|
|
||||||
|
## Actualizacion v1.14.1 (2026-09-15) — version real en el pie del menu + logo abajo
|
||||||
|
|
||||||
|
- Reportado por el usuario: el pie del menu lateral mostraba el texto fijo "v0.1.0" sin importar
|
||||||
|
la version real desplegada. Corregido leyendo la version desde `frontend/package.json` (import
|
||||||
|
JSON nativo de Vite).
|
||||||
|
- El logo de LinkedCorp se movio del encabezado del menu (arriba) al pie (abajo a la izquierda),
|
||||||
|
justo encima del numero de version, en modo expandido y compacto.
|
||||||
|
- Sin migracion (solo frontend). Frontend reconstruido y reiniciado (PID confirmado), verificado
|
||||||
|
contra `https://project.linkedcorp.net`.
|
||||||
|
|
||||||
## Comandos utiles
|
## Comandos utiles
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "project-linkedcorp-backend",
|
"name": "project-linkedcorp-backend",
|
||||||
"version": "1.14.0",
|
"version": "1.14.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": "1.14.0",
|
"version": "1.14.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import { useAuth } from '../context/auth-context.jsx';
|
|||||||
import logoDark from '../assets/logoLinkedCorpTxt.png';
|
import logoDark from '../assets/logoLinkedCorpTxt.png';
|
||||||
import logoLight from '../assets/logoLinkedCorpTxtBlack.png';
|
import logoLight from '../assets/logoLinkedCorpTxtBlack.png';
|
||||||
import logoIcon from '../assets/logoLinked1.png';
|
import logoIcon from '../assets/logoLinked1.png';
|
||||||
|
import pkg from '../../package.json';
|
||||||
|
|
||||||
const ITEMS = [
|
const ITEMS = [
|
||||||
{ to: '/', icon: LayoutDashboard, labelKey: 'nav_dashboard', end: true },
|
{ to: '/', icon: LayoutDashboard, labelKey: 'nav_dashboard', end: true },
|
||||||
@@ -21,13 +22,6 @@ export function NavigationView({ mode }) {
|
|||||||
const items = ITEMS.filter((item) => !item.superadminOnly || user?.roleCode === 'superadmin');
|
const items = ITEMS.filter((item) => !item.superadminOnly || user?.roleCode === 'superadmin');
|
||||||
return (
|
return (
|
||||||
<nav className={`nav-view ${mode}`}>
|
<nav className={`nav-view ${mode}`}>
|
||||||
<div className="nav-header">
|
|
||||||
{compact ? (
|
|
||||||
<img src={logoIcon} alt={t('appName')} className="nav-logo-icon" />
|
|
||||||
) : (
|
|
||||||
<img src={theme === 'light' ? logoLight : logoDark} alt={t('appName')} className="nav-logo-full" />
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
<div className="nav-items">
|
<div className="nav-items">
|
||||||
{items.map((item) => (
|
{items.map((item) => (
|
||||||
<NavLink key={item.to} to={item.to} end={item.end} className={({ isActive }) => `nav-item ${isActive ? 'active' : ''}`}>
|
<NavLink key={item.to} to={item.to} end={item.end} className={({ isActive }) => `nav-item ${isActive ? 'active' : ''}`}>
|
||||||
@@ -36,7 +30,16 @@ export function NavigationView({ mode }) {
|
|||||||
</NavLink>
|
</NavLink>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
{mode !== 'compact' && <div className="nav-footer">v0.1.0</div>}
|
<div className="nav-footer">
|
||||||
|
{compact ? (
|
||||||
|
<img src={logoIcon} alt={t('appName')} className="nav-logo-icon-footer" />
|
||||||
|
) : (
|
||||||
|
<>
|
||||||
|
<img src={theme === 'light' ? logoLight : logoDark} alt={t('appName')} className="nav-logo-full-footer" />
|
||||||
|
<span className="nav-version">v{pkg.version}</span>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,13 +47,6 @@ button { font-family: inherit; }
|
|||||||
}
|
}
|
||||||
.nav-view.compact { width: 80px; }
|
.nav-view.compact { width: 80px; }
|
||||||
.nav-view.hidden { width: 0; overflow: hidden; border-right: none; }
|
.nav-view.hidden { width: 0; overflow: hidden; border-right: none; }
|
||||||
.nav-header {
|
|
||||||
display: flex; align-items: center; gap: 10px;
|
|
||||||
padding: 14px 12px; border-bottom: 1px solid rgb(var(--line));
|
|
||||||
min-height: 84px;
|
|
||||||
}
|
|
||||||
.nav-logo-icon { width: 56px; height: 56px; flex: none; object-fit: contain; }
|
|
||||||
.nav-logo-full { height: 52px; width: auto; max-width: 100%; object-fit: contain; }
|
|
||||||
.nav-items { flex: 1; overflow-y: auto; padding: 8px; display: flex; flex-direction: column; gap: 2px; }
|
.nav-items { flex: 1; overflow-y: auto; padding: 8px; display: flex; flex-direction: column; gap: 2px; }
|
||||||
.nav-item {
|
.nav-item {
|
||||||
display: flex; align-items: center; gap: 12px;
|
display: flex; align-items: center; gap: 12px;
|
||||||
@@ -65,7 +58,13 @@ button { font-family: inherit; }
|
|||||||
.nav-item svg { flex: none; width: 18px; height: 18px; }
|
.nav-item svg { flex: none; width: 18px; height: 18px; }
|
||||||
.nav-item:hover { background: rgb(var(--field)); color: rgb(var(--body)); }
|
.nav-item:hover { background: rgb(var(--field)); color: rgb(var(--body)); }
|
||||||
.nav-item.active { background: rgb(var(--accent) / .16); color: rgb(var(--accent)); font-weight: 600; }
|
.nav-item.active { background: rgb(var(--accent) / .16); color: rgb(var(--accent)); font-weight: 600; }
|
||||||
.nav-footer { padding: 10px 12px; border-top: 1px solid rgb(var(--line)); font-size: .68rem; color: rgb(var(--muted)); }
|
.nav-footer {
|
||||||
|
display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
|
||||||
|
padding: 12px; border-top: 1px solid rgb(var(--line)); font-size: .68rem; color: rgb(var(--muted));
|
||||||
|
}
|
||||||
|
.nav-view.compact .nav-footer { align-items: center; }
|
||||||
|
.nav-logo-icon-footer { width: 40px; height: 40px; flex: none; object-fit: contain; }
|
||||||
|
.nav-logo-full-footer { height: 36px; width: auto; max-width: 100%; object-fit: contain; }
|
||||||
|
|
||||||
.content-column { flex: 1; display: flex; flex-direction: column; min-width: 0; }
|
.content-column { flex: 1; display: flex; flex-direction: column; min-width: 0; }
|
||||||
.topbar {
|
.topbar {
|
||||||
|
|||||||
Reference in New Issue
Block a user