Skip to content

Releases: o2sdev/openselfservice

Open Self Service Release 1.5.0

29 Jan 13:58
0cba812

Choose a tag to compare

header

We're excited to announce Release 1.5.0 of Open Self Service! This release delivers a comprehensive Permission-Based Access Control system that works alongside role-based access, full ticket creation in Zendesk with attachments and custom fields, and also an improved development workflow with granular watch commands for Turborepo.

Let's dive into what's new!

New features

Permission-Based Access Control

We've introduced a comprehensive Permission-Based Access Control system that works together with an already existing Role-Based Access Control. You now get a full, organization-level access control: roles and permissions are kept at the organization/customer level, so the same user can have different access when switching between organizations.

Framework and core

  • Enhanced with abstract permission logic with methods (like hasPermission or hasRole) to check for roles and permissions. Specific integrations can now implement them on their own to provide permissions from your IAM system.
  • Global RolesGuard and PermissionsGuard are now available, so all protected endpoints can enforce roles and permissions consistently.

Securing controllers with @Permissions

Use the @Auth.Decorators.Permissions decorator to protect block and API endpoints by resource and actions:

import { Auth } from '@o2s/framework/modules';

@Controller(URL)
export class TicketListController {
    @Get()
    @Auth.Decorators.Permissions({ resource: 'tickets', actions: ['view'] })
    getTicketListBlock(...) {
        ...
    }
}

You can combine @Auth.Decorators.Roles and @Auth.Decorators.Permissions on the same handler when you need both role-based and permission-based checks.

Data filtering based on user roles

Mappers (e.g., page.mapper, header/footer navigation mappers) can filter UI elements based on user roles. Navigation items and other CMS-driven content can be restricted by role so users only see links and sections they are allowed to access.

For organization-level access control, roles vs. permissions, and multi-organization support, see Authentication overview and API Harmonization authentication.

Ticket creation in Zendesk integration

The Zendesk integration now supports creating tickets end-to-end, in addition to viewing and listing them.

zendesk integration

  • You can now create new tickets via the Tickets API. The Zendesk integration implements createTicket and forwards requests to the Zendesk API.
    • Attachments are supported when creating tickets.
    • Custom field mapping is handled by the ZendeskFieldMapper. Configure environment variables (e.g., ZENDESK_DEVICE_NAME_FIELD_ID) and add corresponding entries in your CMS mappers to display custom field labels in the UI.
  • Using our Survey.js form block, you can submit custom forms to Zendesk. This gives you full control over form layout (single- or multi-step, splitting fields into sections/columns, and more) independently of Zendesk configuration.

Dev watch task improvement

The development workflow has been improved with granular watch commands for Turborepo:

  • watch:deps: runs turbo watch build for all packages except apps. Use this to build and watch dependencies (packages, integrations, blocks) so that changes propagate to apps.
  • watch:apps: runs turbo run dev for apps. Use this to run Next.js and Nest.js dev servers.

You can run watch:deps in one terminal and watch:apps in another for a more controlled dev setup. This provides better output handling than a single monorepo-wide dev command and aligns with Turborepo’s recommended patterns for large workspaces.

Prefer npm run watch:deps and npm run watch:apps over npm run dev when you need fine-grained control over building dependencies versus running app dev servers.

The npm run dev script is now deprecated and will be removed in future versions.

Other changes

Dependency updates

This release includes notable dependency upgrades:

  • Next.js 16.1.6 across the frontend and relevant packages,
  • React monorepo updates,
  • Storybook 10.2.1,
  • Other updates across the stack (e.g., recharts, swiper, next-intl) for compatibility and security.

Documentation improvements

  • Authentication and authorization docs now cover the new Permission-Based Access Control, organization-level access control, and when to use roles vs. permissions.
  • Zendesk integration docs have been updated for ticket creation, custom fields, and Survey.js-driven forms.
  • Various fixes and clarifications across integration and main-component documentation.

Bugfixing and security updates

As always, we're committed to maintaining a stable and secure platform. This release includes various bug fixes and security updates, including dependency updates with security patches.

create-o2s-app@1.2.0

29 Jan 12:52
2c87a18

Choose a tag to compare

Minor Changes

  • 72391c1: ### Authorization & PBAC Implementation

    This release introduces a comprehensive Policy-Based Access Control system interlaced with Role-Based Access Control.

    Framework & Core

    • @o2s/framework (AuthService): Enhanced with abstract permission logic (getPermissions, hasPermission), role checks (hasRole, requireRoles), and action batching (canPerformActions).

    • @o2s/api-harmonization: Implemented global RolesGuard and PermissionsGuard in AppModule.

    • @o2s/utils.api-harmonization: Added extractUserRolesFromJwt to unify role extraction from different JWT claims.

      Features

    • Decorators: New @Auth.Decorators.Permissions({ resource, actions }) for securing controllers.

    • Data Filtering: Mappers (e.g., page.mapper.ts) now filter UI elements (header/footer navigation) based on user roles.

      This provides granular control over resource access and UI visibility based on user roles and permissions.

Patch Changes

  • Updated dependencies [72391c1]
    • @o2s/telemetry@1.2.0

Open Self Service Release 1.4.0

20 Jan 13:29
fb64d68

Choose a tag to compare

header

We're excited to announce Release 1.4.0 of Open Self Service! This release expands O2S capabilities with new features that enhance both the end-user experience and developer productivity.

On the feature front, we're introducing comprehensive product catalog support that enables rich e-commerce experiences within your self-service portals. We're also adding new summary blocks that provide users with quick insights at a glance, and tile view layouts across all list blocks, giving users flexible ways to view their information.

Let's dive into what's new!

New features

Product Catalog blocks

This update introduces comprehensive product catalog support with three new blocks that enable you to build rich e-commerce and product browsing experiences within your self-service portal.

Product Details block

Product Details block

The new @o2s/blocks.product-details block provides a complete product presentation experience:

  • Product Gallery with thumbnail navigation and lightbox support for detailed image viewing
  • Key specifications displayed in an organized, scannable format
  • Product descriptions with rich text support
  • Badges for highlighting product attributes like "New", "Sale", or custom labels
  • Action buttons for adding to cart, requesting quotes, or custom CTAs
npm install @o2s/blocks.product-details --workspace=@o2s/api-harmonization --workspace=@o2s/frontend

Product List block

product list block

The @o2s/blocks.product-list block enables powerful product browsing with flexible display options:

  • Grid and Table views - switch between visual card layouts and detailed table formats
  • Product sorting - sort products by name, price, date, or custom attributes
  • Filtering support - integrate with the existing filter system for faceted navigation
  • Product cards with images, pricing, badges, and quick actions
npm install @o2s/blocks.product-list --workspace=@o2s/api-harmonization --workspace=@o2s/frontend

Recommended Products block

Recommended Products block

The @o2s/blocks.recommended-products block helps drive cross-selling by showcasing related products:

  • Product carousel with smooth scrolling and navigation controls
  • Product cards with images, pricing, and badges
  • Seamless integration with Product Details pages or any other page layout
npm install @o2s/blocks.recommended-products --workspace=@o2s/api-harmonization --workspace=@o2s/frontend

Currently implemented with mock data, with CMS integrations coming in future releases. See implementation status in Strapi blocks documentation and Contentful blocks documentation.

Content blocks collection

We've migrated a comprehensive set of blocks from our DXP starter, designed for building rich content experiences. These blocks are perfect for marketing pages, landing pages, and content-rich sections of your portal:

  • Hero Section - eye-catching hero areas with images, headlines, and call-to-action buttons
  • Feature Section - showcase product features with icons, descriptions, and visual layouts
  • Feature Section Grid - display multiple features in a responsive grid layout
  • CTA Section - compelling call-to-action sections to drive user engagement
  • Pricing Section - display pricing plans and comparison tables
  • Media Section - embed videos, images, and rich media content
  • Bento Grid - modern bento-box style layouts for visual storytelling
  • Document List - display downloadable documents and resources

Each block follows the O2S architecture with API harmonization, frontend components, and SDK methods, making them fully customizable and CMS-configurable. You can see all these blocks in action in our Storybook.

This migration is part of our broader strategy to merge O2S and DXP starters into one unified, more powerful and flexible tool that can handle a variety of use cases. Stay tuned for more updates!

Summary blocks

Two new summary blocks provide quick insights directly on dashboard and list pages:

Ticket Summary block

Ticket Summary Block

The @o2s/blocks.ticket-summary block displays a quick overview of ticket statistics:

  • Total ticket counts by status
  • Visual indicators for pending, open, and resolved tickets
  • Configurable through CMS for custom layouts

Notification Summary block

Notification Summary Block

The @o2s/blocks.notification-summary block shows notification statistics at a glance:

  • Unread notification counts
  • Categorized notification summaries
  • Quick access to notification management

Both summary blocks are designed to complement their respective list blocks, providing users with immediate insights without navigating to detail pages.

DataView component with tile layouts

We've introduced a new DataView component that unifies grid and list rendering across data-heavy blocks. This enhancement brings tile (card) view support to:

  • Ticket List - view tickets as cards with status indicators and quick actions
  • Order List - browse orders in a visual card format
  • Invoice List - see invoice summaries at a glance
  • Notification List - scan notifications in a scannable tile layout

Users can now toggle between traditional table views and the new tile views based on their preference. The view mode can also be configured via CMS to set default display preferences per page.

Other changes

Storybook migration to Vite

We've migrated Storybook from Webpack to Vite, resulting in faster development experience:

  • Faster startup times - Storybook now launches much quicker
  • Instant hot module replacement - see changes immediately as you develop
  • Improved build performance - faster production builds for the component library

Our public Storybook at https://storybook-o2s.openselfservice.com/ now runs on Vite, providing a snappier experience when browsing components and blocks.

Developer experience improvements

This release includes improvements to the development workflow:

  • Next.js 16 upgrade - upgraded to the latest Next.js version with improved performance and new features
  • Turbopack FileSystem Cache - enabled Turbopack caching for development, which saves and restores data between builds to greatly speed up subsequent dev sessions
  • Optimized dev tasks - reduced CPU and RAM usage during development by limiting Node.js processes and improving task orchestration
  • Improved build times - faster incremental builds through better Turborepo configuration

UI component enhancements

We've added and improved several UI components:

  • Phone Input - new international phone number input with country code selection and validation
  • Inline Filters with expandable sections - filters can now be displayed inline with collapsible sections for better space utilization
  • Checkboxes in lists - enhanced list components with selection support for bulk actions
  • Improved Breadcrumbs - better navigation breadcrumb rendering and accessibility
  • ActionList and MoreActionMenu - enhanced action menus with better UX patterns
  • Collapsible component - now supports defaultOpen prop for controlling initial state

Documentation reorganization

We've reorganized and improved our integration documentation:

  • Restructured Strapi, Redis, Medusa, and Algolia documentation for better discoverability
  • Updated block documentation with implementation status for Contentful and Strapi
  • Added Products module to the normalized data model documentation
  • Enhanced theming documentation and starter pages

Bugfixing and security updates

As always, we're committed to maintaining a stable and secure platform. This release includes various bug fixes and security updates including:

  • Fixed notification and ticket title rendering with proper links
  • Improved filter layout on mobile devices
  • Enhanced toggle group component with icon support
  • Fixed incorrect price rendering in DataView component
  • Resolved ESLint warnings across all blocks
  • Updated dependency versions with security patches

docs-v1.4.0

20 Jan 11:05
8e20ec5

Choose a tag to compare

docs: update documentation for information about new release (#553)

* docs: update documentation for information about new release

* docs: add Recommended Products block to product details documentation

* docs: update O2S Release 1.4.0 documentation with enhanced feature descriptions

* docs: add Michał Nowak as an author for O2S Release 1.4.0

* docs: update O2S Release 1.4.0 documentation with optimized development tasks and bug fixes

* docs: enhance O2S Release 1.4.0 documentation with new content blocks and feature updates

* docs: update O2S Release 1.4.0 documentation to include Storybook link for new content blocks

* docs: add images for new O2S content blocks in Release 1.4.0 documentation

* docs: add images for Ticket and Notification Summary blocks in O2S Release 1.4.0 documentation

* docs: update O2S Release 1.4.0 documentation to remove outdated features and improve clarity

* docs: update O2S Release 1.4.0 documentation

@o2s/utils.frontend@0.3.0

20 Jan 11:29
fb64d68

Choose a tag to compare

Minor Changes

Patch Changes

  • Updated dependencies [e78c11a]
  • Updated dependencies [79b7c87]
    • @o2s/framework@1.15.0

@o2s/utils.api-harmonization@0.2.0

20 Jan 11:29
fb64d68

Choose a tag to compare

Minor Changes

Patch Changes

  • Updated dependencies [e78c11a]
  • Updated dependencies [79b7c87]
    • @o2s/framework@1.15.0

@o2s/modules.surveyjs@0.3.0

20 Jan 11:29
fb64d68

Choose a tag to compare

Minor Changes

Patch Changes

  • e11b23a: reworked data fetching a little to overcome ESlint warnings
  • Updated dependencies [5947ca4]
  • Updated dependencies [e11b23a]
  • Updated dependencies [e78c11a]
  • Updated dependencies [8f39c25]
  • Updated dependencies [79b7c87]
  • Updated dependencies [e11b23a]
  • Updated dependencies [d197b89]
  • Updated dependencies [cd483b7]
  • Updated dependencies [d197b89]
    • @o2s/ui@1.8.0
    • @o2s/utils.api-harmonization@0.2.0
    • @o2s/configs.integrations@0.3.0
    • @o2s/utils.frontend@0.3.0
    • @o2s/framework@1.15.0

@o2s/integrations.mocked@1.16.0

20 Jan 11:28
fb64d68

Choose a tag to compare

Minor Changes

  • e78c11a: feat: Added sorting support for products in mocked integration

    • Added sorting functionality to mapProducts and mapRelatedProducts in mocked integration
    • Supports sorting by name and price in ascending/descending order (format: name_ASC, name_DESC, price_ASC, price_DESC)
    • Sorting is applied to filtered product lists before returning results
  • 79b7c87: add inline filters variant with expandable sections

Patch Changes

  • Updated dependencies [e78c11a]
  • Updated dependencies [79b7c87]
    • @o2s/framework@1.15.0

@o2s/framework@1.15.0

20 Jan 11:29
fb64d68

Choose a tag to compare

Minor Changes

  • e78c11a: feat: Added sorting support for products in mocked integration

    • Added sorting functionality to mapProducts and mapRelatedProducts in mocked integration
    • Supports sorting by name and price in ascending/descending order (format: name_ASC, name_DESC, price_ASC, price_DESC)
    • Sorting is applied to filtered product lists before returning results
  • 79b7c87: add inline filters variant with expandable sections

@o2s/blocks.user-account@1.2.0

20 Jan 11:28
fb64d68

Choose a tag to compare

Minor Changes

Patch Changes

  • e11b23a: reworked data fetching a little to overcome ESlint warnings
  • Updated dependencies [5947ca4]
  • Updated dependencies [e11b23a]
  • Updated dependencies [e78c11a]
  • Updated dependencies [8f39c25]
  • Updated dependencies [79b7c87]
  • Updated dependencies [e11b23a]
  • Updated dependencies [d197b89]
  • Updated dependencies [cd483b7]
  • Updated dependencies [d197b89]
    • @o2s/ui@1.8.0
    • @o2s/utils.api-harmonization@0.2.0
    • @o2s/configs.integrations@0.3.0
    • @o2s/utils.frontend@0.3.0
    • @o2s/framework@1.15.0