Los 4 métodos XML RB Systems usaban fetch() con localStorage, bypaseando
el fetchApi() de $lib/api que tiene 401 → silent refresh → retry automático.
Ahora el token expirado se renueva de forma transparente sin interrumpir al usuario.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Detecta respuestas 401 en los 4 métodos XML RB Systems (impo-temp, impo-def,
impo, expo) y lanza un mensaje claro en lugar del error genérico de generación.
Además elimina entry_port/exit_port del tipo de request de exportación.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Para exportación los puertos vienen del manifiesto en BD (entry_port/foreign_exit_port),
no del request. El selector de puertos ahora solo aparece cuando movementType === 'Importacion'.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Títulos y subtítulos de goods, pedimentos, customs_brokers, users, admin/roles, settings, account, reports
- Componente Maintenance (cubre 6 páginas de export)
- Corrección de imports de m faltantes en fixed-asset-classes y tariff-fractions/american
- Nuevas claves common (botones, subtítulos, títulos de página)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Restaura la construcción correcta de URLSearchParams en getSignatures,
eliminando el spread de filters inválido y el cierre de objeto roto.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- workspace-auth.ts: reemplaza isInternalOnlyHost por isDevOnlyUrl que
incluye localhost/127.0.0.1 e IPs LAN además de hostnames Docker.
getWorkspaceBaseUrl() y getPublicKeycloakBaseUrl() ya ignoran valores
dev-only; no usan VITE_KEYCLOAK_URL=http://localhost:... en prod.
- Nuevo resolveSystemBaseUrl(): cuando url.origin es localhost porque
ORIGIN env var apunta a localhost en producción, busca SITE_URL/APP_URL
como fallback para construir redirect_uri seguros.
- buildKeycloakAuthorizationUrl() y buildKeycloakLoginUrl() usan
resolveSystemBaseUrl() para el redirect_uri (evita localhost:5173).
- auth/callback/+page.server.ts: idem para el redirectUri del token exchange.
- auth.ts (cliente): resolveKeycloakUrl() detecta en runtime si
VITE_KEYCLOAK_URL bakeado apunta a localhost pero el browser NO está
en localhost → deriva la URL del hostname real del browser.
- .env.example: documenta vars de producción recomendadas (SITE_URL,
ORIGIN, VITE_HUB_URL) con advertencias sobre el efecto de ORIGIN.
Root cause: el .env de dev (ORIGIN=http://localhost:5173,
VITE_KEYCLOAK_URL=http://localhost:8085/kcauth) se usaba en producción
sin sobrescribir estas variables, causando que KC generara URLs con
localhost como redirect_uri y KC URL.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Updated `auth.setup.ts` to handle multiple app launches in Workspace and ensure proper redirection to the dashboard.
- Improved invoice creation tests in `export-flow.spec.ts` and `invoice-flow.spec.ts` to check for existing exchange rates before creating new ones, and adjusted button names for consistency.
- Refactored selectors to use placeholders for invoice number inputs across multiple test files.
- Enhanced error handling and visibility checks in various test scenarios to improve reliability.
- Removed obsolete `setup-catalogs.spec.ts` file as its functionality is no longer needed.
These changes aim to streamline the testing process and ensure more robust interactions with the application.
Anexo76 debe tener su propio cliente en Keycloak (no compartir hub-frontend).
Misma sesión SSO para el usuario, pero cliente separado por app.
El cliente anexo76-frontend debe crearse en Keycloak con:
- Valid redirect URIs: https://anexo76-dev.aduanasoft.com/*
- Web origins: https://anexo76-dev.aduanasoft.com
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>