diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6fb97ac..f42190b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,10 +2,15 @@
## Versión actual
-- Versión base: `1.2.25`
+- Versión base: `1.2.26`
## Historial
+### 1.2.26 - 2026-05-22
+
+- El sidebar web muestra la versión activa junto a `LinkedSign`.
+- `FirmaEC` divide nombres de 4 palabras en `2 + 2` dentro del sello visible del PDF.
+
### 1.2.25 - 2026-05-22
- La firma normal usa las preferencias visuales guardadas del usuario al momento de firmar, evitando que un estado viejo del frontend vuelva a enviar `FirmaEC` con borde.
diff --git a/DEPLOY_ANDROID.md b/DEPLOY_ANDROID.md
index 9a4293b..8bbb48b 100644
--- a/DEPLOY_ANDROID.md
+++ b/DEPLOY_ANDROID.md
@@ -2,7 +2,7 @@
## Versión actual
-- Base actual: `1.2.25`
+- Base actual: `1.2.26`
- Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION)
- Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md)
diff --git a/DEPLOY_WEB.md b/DEPLOY_WEB.md
index ba11482..74439db 100644
--- a/DEPLOY_WEB.md
+++ b/DEPLOY_WEB.md
@@ -2,7 +2,7 @@
## Versión actual
-- Base actual: `1.2.25`
+- Base actual: `1.2.26`
- Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION)
- Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md)
diff --git a/PRODUCCION.md b/PRODUCCION.md
index 5a5c1a8..5a37c53 100644
--- a/PRODUCCION.md
+++ b/PRODUCCION.md
@@ -2,7 +2,7 @@
## Versión actual
-- Base actual: `1.2.25`
+- Base actual: `1.2.26`
- Fuente de verdad: [VERSION](/home/mgonzalez/desarrollo/react/linkedsign/VERSION)
- Historial de cambios: [CHANGELOG.md](/home/mgonzalez/desarrollo/react/linkedsign/CHANGELOG.md)
diff --git a/VERSION b/VERSION
index 8060c02..cba64f4 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.25
+1.2.26
diff --git a/android/app/build.gradle b/android/app/build.gradle
index df27ddd..64180db 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -18,8 +18,8 @@ android {
applicationId "net.linkedcorp.linkedsign"
minSdk 26
targetSdk 35
- versionCode 10225
- versionName "1.2.25"
+ versionCode 10226
+ versionName "1.2.26"
buildConfigField "String", "API_BASE_URL", "\"${apiBaseUrl}\""
}
diff --git a/backend/package.json b/backend/package.json
index 13e21d8..6696de4 100644
--- a/backend/package.json
+++ b/backend/package.json
@@ -1,6 +1,6 @@
{
"name": "linkedsign-backend",
- "version": "1.2.25",
+ "version": "1.2.26",
"private": true,
"description": "Initial backend for LinkedSign",
"main": "src/server.js",
diff --git a/backend/src/modules/signing/signing.service.js b/backend/src/modules/signing/signing.service.js
index abf9255..1bac13a 100644
--- a/backend/src/modules/signing/signing.service.js
+++ b/backend/src/modules/signing/signing.service.js
@@ -59,6 +59,23 @@ function wrapToLines(text, font, size, maxWidth, maxLines) {
return lines;
}
+function getFirmaEcNameLines(signerName, font, size, maxWidth) {
+ const words = String(signerName || '')
+ .trim()
+ .toUpperCase()
+ .split(/\s+/)
+ .filter(Boolean);
+
+ if (words.length === 4) {
+ return [
+ words.slice(0, 2).join(' '),
+ words.slice(2).join(' '),
+ ].map((line) => truncate(line, font, size, maxWidth));
+ }
+
+ return wrapToLines(words.join(' '), font, size, maxWidth, 2);
+}
+
function buildLocalizedSignatureTimestamp({ locale, timeZone } = {}) {
const now = new Date();
const normalizedLocale = locale || 'es-EC';
@@ -343,9 +360,8 @@ async function drawStyleFirmaEC(pdfDoc, page, sx, sy, sw, sh, { signerName, veri
page.drawText('Firmado electronicamente por:', { x: textX, y: sy + sh - 21, size: 6, font: fReg, color: rgb(0.12, 0.12, 0.14) });
// Name — bold, uppercase, word-wrapped up to 2 lines
- const nameUpper = signerName.toUpperCase();
const nameSize = 8.5;
- const nameLines = wrapToLines(nameUpper, fBold, nameSize, textW, 2);
+ const nameLines = getFirmaEcNameLines(signerName, fBold, nameSize, textW);
nameLines.forEach((line, i) => {
page.drawText(line, { x: textX, y: sy + sh - 34 - (i * 13), size: nameSize, font: fBold, color: rgb(0.05, 0.05, 0.07) });
});
diff --git a/frontend/package.json b/frontend/package.json
index 2e872d1..fca4a89 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "frontend",
"private": true,
- "version": "1.2.25",
+ "version": "1.2.26",
"type": "module",
"scripts": {
"dev": "vite",
diff --git a/frontend/src/components/layout/Layout.jsx b/frontend/src/components/layout/Layout.jsx
index a63e8ec..2d66c76 100644
--- a/frontend/src/components/layout/Layout.jsx
+++ b/frontend/src/components/layout/Layout.jsx
@@ -3,6 +3,7 @@ import { Link, useNavigate, useLocation } from 'react-router-dom';
import { useAuth } from '../../contexts/AuthContext';
import { FileText, Shield, PenTool, LayoutDashboard, LogOut, Palette, Menu, X, KeyRound, Users, Settings, ScrollText, Scale } from 'lucide-react';
import ChangePasswordModal from '../ui/ChangePasswordModal';
+import packageInfo from '../../../package.json';
const navSections = [
{
@@ -86,7 +87,7 @@ export default function Layout({ children }) {