Show app version in sidebar and split 4-word FirmaEC names in 1.2.26
This commit is contained in:
+6
-1
@@ -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.
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
|
||||
@@ -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}\""
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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) });
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "frontend",
|
||||
"private": true,
|
||||
"version": "1.2.25",
|
||||
"version": "1.2.26",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
|
||||
@@ -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 }) {
|
||||
<img src="/app-icon-96.png" alt="LinkedSign" width="32" height="32" style={{ display: 'block' }} />
|
||||
</div>
|
||||
<div className="sidebar-brand-copy">
|
||||
<span>LinkedSign</span>
|
||||
<span>LinkedSign <em>v{packageInfo.version}</em></span>
|
||||
<small>Firma Electrónica @LinkedCorp</small>
|
||||
</div>
|
||||
<button
|
||||
|
||||
@@ -134,6 +134,16 @@ select {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: var(--c-text);
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.sidebar-brand-copy span em {
|
||||
font-size: 10px;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
color: var(--c-muted);
|
||||
}
|
||||
|
||||
.sidebar-brand-copy small {
|
||||
|
||||
Reference in New Issue
Block a user