Releases: Lessify/localess
v3.2.0 - Token Cache
What's Changed in v3.2.0
Features
- Cache TTL for tokens — API tokens now support a configurable time-to-live, giving finer control over cache expiry.
- Alt text for image assets — Image assets in the edit file dialogue now support alt text, improving accessibility and content quality.
- Locale-specific document publishing — Document publishing has been refactored to store content per locale with improved path handling, enabling more reliable multi-locale delivery.
- Improved asset & content metadata — Asset and content models have been refactored for cleaner, more consistent metadata handling across the platform.
- Visual editor iframe status — The visual editor now tracks and displays the iframe connection state: loading (spinner), loaded (page received), connected (Localess SDK handshake complete), and error (failed to load), with descriptive tooltips for each state.
Internal
- Version bump script added for streamlined release management.
v3.1.0 - Before Summer Improvements
What's Changed
✨ New Features
- Setup Component — New onboarding flow for initial user configuration
- Schemas API Endpoint — New endpoint to retrieve all schemas for a specific space (
GET /v1/spaces/:id/schemas) - CDN Image Transform Parameters — Added
h(height),q(quality), andf(format) query parameters to asset CDN endpoint - Environment State Persistence — Selected environment is now persisted across sessions
- Fallback Locale as Default Content Link — Content pages now show the fallback locale link by default
🔄 Translations
- Automatic draft generation after write operations (no manual publish step required)
- Draft files are conditionally generated only when translations are imported
- Change detection for asset, content, schema, and translation imports (skip unchanged files)
- Translation status indicator improvements
📄 Contents
- Content dirty/unsaved-changes detection in the visual editor
- Content document status UI improvements (multiple status transitions)
- Save form improvements for the visual editor
- Content history tracking enhancements
- Link selection component: improved document handling + unit tests added
- Fixed handling of non-translatable fields in document schema editor
📤 Export / Import
- Export dialog rebuilt with reactive forms and dynamic asset/content search
- Removed
fromDatefield from export tasks (simplified export model) - Import dialog layout redesigned for improved usability
🎣 Webhooks
- Content and translation webhooks now emit a unified
changedevent (breaking: replaces separate events)
🔌 V1 Public API
- Improved
resolveLinkandresolveReferencelogic in content responses - Improved request/response logging
- Updated OpenAPI service summaries for clarity
- Schema retrieval refactored to use a
Record<id, schema>map for better performance
🎨 UI / Design System (Spartan UI Migration)
- All major dialogs migrated from Angular Material to Spartan/Helm (
hlm) components:- User & invite dialogs, space dialogs, assets-select dialog, references-select dialog, debug panels
mat-expansion-panelreplaced withhlm-accordionthroughout- New
hlm-selectcomponents with clearable option and placeholder support - Markdown editor: improved heading styles and visibility
- Auth page: redesigned layout with repositioned theme switcher and logo
- Feature carousel: improved image formatting
- New animated background components (beams, meteors, galaxy, matrix, starfield, laser-grid, pollen, prism, topography, dot-pattern)
🔧 Backend / Infrastructure
- Firebase Functions: file uploads now streamed directly to GCS (reduced memory usage)
- Functions region now configurable via environment variable
- Node.js upgraded to v24
- Tiptap rich text editor upgraded to v3.x (renamed to Rich Text component)
- Angular dependency upgrade
- Docker image updates
@stoplight/elementsupgraded for OpenAPI UI
🐛 Bug Fixes
- Fixed asset click not opening preview
- Fixed form validation issue in multiple dialogs
- Fixed CI cloud build YAML formatting
🔖 Migration Notes
- Webhook event change:
content.updated/translation.updatedevents are replaced by a singlecontent.changed/translation.changedevent. Update your webhook consumers accordingly. - Tiptap v3 upgrade may require template updates if you use the rich text field type in custom integrations.
v3.0.1 - Translation Webhook
Add Translation WebHooks
v3.0.0 - Release v3
This is a major release introducing significant architectural changes, new features, and a complete UI redesign. Upgrading from 2.x requires reviewing the breaking changes listed below.
🚀 New Features
Webhook System
A fully integrated webhook system has been introduced, enabling real-time event notifications to external services whenever content changes occur within a space.
- Webhook Management UI – Create, update, enable/disable, and delete webhooks directly from the Space Settings panel.
- Supported Events – Webhooks can be subscribed to the following content lifecycle events:
content.published– fired when a content document is published.content.unpublished– fired when a content document is unpublished.content.deleted– fired when a content document is deleted.content.updated– fired when a content document is updated.
- Configurable Headers & HMAC Signature – Each webhook supports custom HTTP headers and an optional secret for payload signature verification, allowing consumers to authenticate incoming payloads.
- Webhook Delivery Logs – Every webhook delivery is recorded with the HTTP status code, response time, and any error message, providing full observability into delivery history.
- Firestore Security Rules – New security rules have been added for the
/webhooksand/webhooks/{id}/logscollections, scoped to admin andSPACE_MANAGEMENTpermission holders.
Token Permissions (V2 Tokens)
The token system has been redesigned to support granular, role-based access control.
- Token V2 – A new token version (
version: 2) introduces an explicitpermissionsarray, replacing the previous all-or-nothing token model. - Permission Scopes – Five distinct permissions are now available:
TRANSLATION_PUBLIC– Access to published translations.TRANSLATION_DRAFT– Access to draft translations.CONTENT_PUBLIC– Access to published content.CONTENT_DRAFT– Access to draft/preview content.DEV_TOOLS– Access to developer tooling endpoints (space metadata, OpenAPI schema, translation management).
- Backward Compatibility – Existing V1 tokens (without a
versionfield) are automatically treated as havingTRANSLATION_PUBLIC,TRANSLATION_DRAFT,CONTENT_PUBLIC, andCONTENT_DRAFTpermissions, ensuring zero downtime for existing integrations. - Token Management UI – The token creation and editing form has been updated to display and configure permissions through a checkbox list with human-readable labels.
Translation Draft Version
Translations now support a distinct draft version, enabling a safer publication workflow.
- Draft Storage Path – Draft translations are stored at
spaces/{spaceId}/translations/draft/{locale}.json, separate from the published path, ensuring published content is never inadvertently overwritten during editing. - Draft API Access – The V1 CDN API supports a
versionquery parameter; when set todraft, theTRANSLATION_DRAFTtoken permission is required. - Version-Aware Cache Paths – The translation service now resolves locale-specific cache paths dynamically based on the requested version, consolidating cache management logic.
AI-Powered Locale Translation
New locale translation capabilities allow entire locale sets to be translated automatically using AI or Google Cloud Translation.
- Locale Translate – A new background Cloud Function (
translateLocale) translates all translations in a source locale to a target locale for a given space, leveraging Google Cloud Translation API. - Content Locale Translate – A corresponding function (
translateContentLocale) translates the locale-specific content of a single content document from a source locale to a target locale. - AI Translation for Markdown Fields – Markdown-type schema fields are now eligible for AI translation, extending auto-translate coverage beyond plain text strings.
- Translate Locale Dialog – A new shared dialog component (
TranslateLocaleDialogComponent) guides users through selecting source and target locales, with validation and descriptive help text. - Performance Improvement – The locale translation pipeline has been optimized to reduce redundant Firestore reads, significantly improving throughput for large translation sets.
Translation Filter & Status
The Translations view has been enhanced with a rich filtering system.
- Filter by Translation Status – Translations can now be filtered by status:
Translated,Partially Translated, andUntranslated. - Filter by Locale Status – An additional
Locale Translated/Locale Untranslatedfilter allows viewing per-locale completion state. - Filter Reset – A one-click reset action clears all active filters, restoring the full translation list instantly.
- Unified Status Enums –
TranslationStatusandLocaleStatusenum values have been updated with explicit prefixes (TRANSLATION_*,LOCALE_*) to avoid naming collisions and improve clarity in serialized data.
Content Unpublish
- Unpublish Action – Content documents can now be explicitly unpublished through the Content Action Menu, transitioning them from a published state back to draft. This triggers the
content.unpublishedwebhook event.
Content Action Menu Enhancements
- Copy Slug – A new menu action copies the relative slug of a content document to the clipboard.
- Copy Full Slug – A new menu action copies the full hierarchical slug (including all ancestor path segments) to the clipboard, simplifying integration with external systems.
Space Danger Zone
- Delete All Translations – A new destructive action has been added to the Space Settings Danger Zone panel, allowing administrators to permanently delete all translations within a space. The operation requires explicit confirmation to prevent accidental data loss.
UI Version Check & Auto-Reload
- Version Polling – The application now periodically checks
/assets/version.jsonto detect whether a new deployment has been released. - Reload Prompt – When a new version is detected, a non-intrusive notification is shown, prompting the user to reload the application to pick up the latest changes.
- Version Generation – A new
version:generatenpm script generatessrc/assets/version.jsonat build time, embedding the Git commit SHA for precise version tracking.
Developer Tools V1 API (DEV_TOOLS Endpoints)
Two new developer-facing endpoints have been added to the V1 API, secured behind the DEV_TOOLS token permission.
GET /api/v1/spaces/:spaceId– Returns space metadata including name, available locales, and fallback locale configuration.GET /api/v1/spaces/:spaceId/open-api– Returns a dynamically generated OpenAPI 3.x specification for the content schemas defined in the space, enabling type-safe SDK generation.
🔄 Changes
Angular Upgrade to v21
The entire application has been upgraded to Angular v21, including all first-party packages (@angular/core, @angular/forms, @angular/material, @angular/fire, @angular/cdk, @angular/router). The upgrade brings improved performance, enhanced signal support, and updated compilation pipeline.
Complete UI Redesign with Spartan/Helm Component Library
The application UI has been comprehensively redesigned using the Spartan headless component library (@spartan-ng/brain) combined with Tailwind CSS, replacing the previous Angular Material-only approach for layout and structural components.
- 42 new Helm UI components have been added to the
libs/ui/workspace, covering: accordion, avatar, badge, breadcrumb, button group, card, checkbox, combobox, command palette, dialog, dropdown menu, form field, icon, input, kbd, label, popover, progress, radio group, resizable panels, scroll area, select, separator, sheet, sidebar, skeleton, sonner (toast), spinner, switch, tabs, textarea, toggle, toggle group, tooltip, and typography. - Sidebar – A new structured sidebar component has replaced the previous navigation approach, improving overall layout consistency and responsiveness.
- Breadcrumb Component – The custom breadcrumb components have been refactored to use the new Helm breadcrumb library, replacing the previous standalone implementation.
- Logo Component – A dedicated
LogoComponenthas been extracted as a standalone shared component (src/app/shared/components/logo/), providing a reusable SVG logo asset across the application. - Toast Notifications – Replaced with
ngx-sonnerfor a more modern and accessible notification experience. - PostCSS & Tailwind Configuration – Updated PostCSS configuration to support the Tailwind CSS v4 integration used by the Spartan components.
V1 API Modular Refactoring
The monolithic v1.ts Cloud Function (~445 lines) has been decomposed into three focused Express routers:
v1/cdn.ts(CDN) – Handles public-facing content and translation delivery:GET /translations/:locale,GET /contents/:contentId,GET /contents/slugs/*,GET /links,GET /assets/:assetId.v1/manage.ts(MANAGE) – Handles programmatic translation management:POST /translations/:locale(add-missing, update-existing, delete-missing operations).v1/dev-tools.ts(DEV_TOOLS) – Handles developer-facing metadata:GET /spaces/:spaceId,GET /spaces/:spaceId/open-api.- Middleware Layer – Introduced two middleware modules:
api-key-auth.middleware.ts– Validates tokens supplied via theAuthorizationheader (Bearer scheme).query-auth.middleware.ts– Validates tokens supplied via the?tokenquery parameter.- Both middleware implementations resolve the
TokenV1/TokenV2union, check the relevant permissions, and att...
v2.5.1 - Translation Tree
The following features are implemented :
- Add Tree For Translations
v2.5.0 - Improve Visual Editor Experience + Upgrade
The following features are implemented :
- Add Zoom for Digital Assets
- Add a Popup with Digital Asset Preview
- Generate Thumbnail for Video Assets
- Improve Digital Asset Metadata
- Add the possibility to regenerate Digital Asset Metadata for already uploaded assets
- Upgrade Angular Library to v19.2
- Improve Visual Editor Experience
- Improve Sync Script to handle Schema Fields
- Improve Link Schema Field
- Improve Reference Schema Field
- Improve Document Reference Metadata in API v1
- Improve Dashboard with Additional Translation Metadata
The following fixes are provided:
- Fix AI Translation
v2.4.0 - Asset Improvements + Unsplash Integration
The following features are implemented :
- Add Unsplash Integration
- Add Asset Grid Layout
- Add Image Preview
- Increase asset name from 50 to 100
- Add API for Image thumbnail
- Content and Translation history limited to 30
- Add File Upload from Asset Selector in Content Editor
The following fixes are provided:
- Fix the Content Import issue
v2.3.0 - Visual Editor integration improvements
The following features are implemented :
- Improve Visual Editor interaction with JS Library
- Mouse Over a Components in Visual Editor View are highlighted in Form for better navigation
- Update OpenAPI view library
- Improve OpenAPI generator
v2.2.0 - Big Bada Boom 🎆🎆🎆
The following features are implemented :
- Upgrade to Angular v18
- User Interface:
- Add Dark Theme 🌃
- Add Post Logo Text 🆕, to distinguish different environments
- Add Space Icon 🆕
- Show Only Update Date, and move Created Date to Toolptip
- Add Authentication page message/announcement
- Improve messages
- Move Paginator in Dialog from content to Action Bar
- All Tables are now with Sticky Header, improving the scrolling experience for small screens
- Asset:
- Move Feature 🆕
- Add Support for Animated Images like: GIFs and WebP
- Image Preview is Zoooming on mouse over 🔍
- Content:
- Move Feature 🆕
- Add Reference Selector 🆕
- Publish Folder with all Sub-Documents 🆕
- Add Rich Text Field (Beta)🆕
- Alert for Unsaved changes
- Add Schema Below and Above a specific existing Schema block, improve usability for the use case with a huge list of Schema blocks
- Add Translations with AI 🌐
- Sort Schemas and Enum Dropdown
- Add Screen Sizes for Visual Editor 🆕:
- Full Screen
- Smartphone: 640px
- Tablet: 768px
- Laptop: 1024px
- Desktop: 1280px
- Schema:
- Add Labels
- Add Reference Kind 🆕
- Add Rich Text Kind (Beta) 🆕
- Redesigned the Edit Form for Enum, Node, and Root 🆕
- Add more Metadata in the Field List view
- Alert for Unsaved changes
- Show In Use Schema and all References between Schemas
- Authentication 🪪:
- Upgraded to the latest version of Firebase Identity Provider
- Refactor Implementation from Firebase Authentication V1 to V2
- Developer 🧑💻:
- Improve Open API Specification Generator 🗎
- Improve V1 API
- Integration:
- DeepL as an alternative to Google Translate
- Deployment:
- Remove dependency on project Firebase Image
The following bugs are fixed:
- Fix conflict between Localess, PrismJS, and Stoplight
- A lot of small fixes
2.1.0 - Integration Improvements
The following features are implemented :
- Content:
- Move Feature
- Improve Text Area Editor
- Improve Markdown Editor
- Schema :
- Edit ID
- add Preview Fields as Drop-down
- add Description, it will appear in OpenAPI and Interaction with a Schema
- remove Preview Image
- Update ID requirements
- Add ID composition Helper
- Translation
- Edit ID
- Permissions
- add DEV_OPEN_API Role, for OpenAPI Section
The following bugs are fixed:
- Add Missing Index on Content
- Fix missing events for Content Visual Editor
- Remove import ID validation to be backward compatible with previous versions