Skip to content

Releases: Lessify/localess

v3.0.1 - Translation Webhook

12 Mar 22:33

Choose a tag to compare

Add Translation WebHooks

v3.0.0 - Release v3

09 Mar 19:35

Choose a tag to compare

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 /webhooks and /webhooks/{id}/logs collections, scoped to admin and SPACE_MANAGEMENT permission 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 explicit permissions array, 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 version field) are automatically treated as having TRANSLATION_PUBLIC, TRANSLATION_DRAFT, CONTENT_PUBLIC, and CONTENT_DRAFT permissions, 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 version query parameter; when set to draft, the TRANSLATION_DRAFT token 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, and Untranslated.
  • Filter by Locale Status – An additional Locale Translated / Locale Untranslated filter 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 EnumsTranslationStatus and LocaleStatus enum 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.unpublished webhook 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.json to 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:generate npm script generates src/assets/version.json at 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 LogoComponent has 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-sonner for 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 the Authorization header (Bearer scheme).
    • query-auth.middleware.ts – Validates tokens supplied via the ?token query parameter.
    • Both middleware implementations resolve the TokenV1/TokenV2 union, check the relevant permissions, and att...
Read more

v2.5.1 - Translation Tree

08 Jun 20:28

Choose a tag to compare

The following features are implemented :

  • Add Tree For Translations

v2.5.0 - Improve Visual Editor Experience + Upgrade

16 May 12:01

Choose a tag to compare

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

29 Jan 11:07

Choose a tag to compare

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

09 Jan 20:04

Choose a tag to compare

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 🎆🎆🎆

17 Dec 23:09

Choose a tag to compare

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

08 Jun 13:35

Choose a tag to compare

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

2.0.0 - Open API 🚀🚀🚀

21 Apr 12:40

Choose a tag to compare

We are very happy to announce our new major release, where we are working on code optimization and performance and Open API Specification generation.

The following features are implemented :

  • Open API Specification
  • Braking changes for Translations, Schema and Content
  • Update Angular to version 17.3
  • Moving Signal Store
  • Improve Translations Audit Logs
  • Improve Content Audit Logs
  • Improve Tasks error message traces
  • Multiple UI Improvements
  • Improve Performance

The following bugs are fixed:

  • Content API when no locale is provided
  • Fix ID requirements for Schema and Translation
  • Fix the issue with the Content recursion delete

1.7.0 - 🎄2024 🎄

02 Feb 22:15

Choose a tag to compare

The following features are implemented :

  • Update Angular to version 17.1
  • Add Enum Schema for reusable List of values
  • Replace validator from AVJ to ZOD for performance improvement reasons.
  • Add History for Translations
  • Add History for Content
  • Add Dashboard with usage Overview
  • Refactor Breadcrumb
  • Migrate from BootStrap to Tailwind
  • Add Help Pages
  • Add Default Locale for Content
  • Add Asset Upload Queue panel
  • Asset name can be changed
  • Assets can be rearranged in Content
  • Add References Schema

The following fixes are fixed:

  • Fix the Schema Picture Preview issue
  • Fix Export Issues
  • Fix Save during Publishing issue
  • Fix Publish during the Saving issue
  • Fix the issue with a special character in the asset name

Full Changelog: 1.6.0...1.7.0