feat: add "Wypróbuj" deep links to release notes items
Some checks are pending
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Maciej Pienczyn 2026-03-12 11:26:26 +01:00
parent 4d0a91f97c
commit c63bcb065b
3 changed files with 95 additions and 7 deletions

View File

@ -959,9 +959,11 @@ def _get_releases():
'version': 'v1.43.0', 'version': 'v1.43.0',
'date': '12 marca 2026', 'date': '12 marca 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'starred_links': { 'links': {
'Zdjęcie profilowe': '/konto', 'Zdjęcie profilowe': '/konto',
'Profile użytkowników': '/kalendarz', 'Profile użytkowników': '/kalendarz',
'Klikalne lokalizacje': '/kalendarz',
'Lista wydarzeń po polsku': '/kalendarz',
}, },
'new': [ 'new': [
'<strong>Nowości na stronie głównej</strong> - pod nagłówkiem katalogu firm wyświetla się informacja o najnowszych zmianach na platformie z linkiem do pełnej listy', '<strong>Nowości na stronie głównej</strong> - pod nagłówkiem katalogu firm wyświetla się informacja o najnowszych zmianach na platformie z linkiem do pełnej listy',
@ -988,6 +990,11 @@ def _get_releases():
'version': 'v1.42.0', 'version': 'v1.42.0',
'date': '11 marca 2026', 'date': '11 marca 2026',
'badges': ['new', 'improve'], 'badges': ['new', 'improve'],
'links': {
'Załączniki do wiadomości': '/wiadomosci/nowa',
'Wyszukiwanie odbiorcy': '/wiadomosci/nowa',
'Historia korespondencji': '/wiadomosci',
},
'new': [ 'new': [
'★ <strong>Załączniki do wiadomości</strong> - do każdej wiadomości prywatnej można dołączyć pliki (dokumenty, zdjęcia, PDF) zarówno przy wysyłaniu nowej wiadomości, jak i przy odpowiedzi', '★ <strong>Załączniki do wiadomości</strong> - do każdej wiadomości prywatnej można dołączyć pliki (dokumenty, zdjęcia, PDF) zarówno przy wysyłaniu nowej wiadomości, jak i przy odpowiedzi',
'★ <strong>Wyszukiwanie odbiorcy</strong> - zamiast rozwijanej listy wystarczy zacząć wpisywać imię, nazwisko lub nazwę firmy, a portal podpowie pasujące osoby', '★ <strong>Wyszukiwanie odbiorcy</strong> - zamiast rozwijanej listy wystarczy zacząć wpisywać imię, nazwisko lub nazwę firmy, a portal podpowie pasujące osoby',
@ -1004,6 +1011,9 @@ def _get_releases():
'version': 'v1.41.0', 'version': 'v1.41.0',
'date': '7 marca 2026', 'date': '7 marca 2026',
'badges': ['new', 'improve'], 'badges': ['new', 'improve'],
'links': {
'Oznaczenie „Nowe"': '/pulpit',
},
'new': [ 'new': [
'<strong>Oznaczenie „Nowe"</strong> - na pulpicie widoczne jest, które wydarzenia i ogłoszenia pojawiły się od ostatniego logowania', '<strong>Oznaczenie „Nowe"</strong> - na pulpicie widoczne jest, które wydarzenia i ogłoszenia pojawiły się od ostatniego logowania',
'<strong>Oznaczenia dostępu do wydarzeń</strong> - wydarzenia z ograniczonym dostępem (tylko dla Rady lub ukryte) mają widoczne etykiety', '<strong>Oznaczenia dostępu do wydarzeń</strong> - wydarzenia z ograniczonym dostępem (tylko dla Rady lub ukryte) mają widoczne etykiety',
@ -1016,6 +1026,10 @@ def _get_releases():
'version': 'v1.40.0', 'version': 'v1.40.0',
'date': '7 marca 2026', 'date': '7 marca 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'Sekcja Aktualności': '/aktualnosci',
'Ulepszona sztuczna inteligencja': '/chat',
},
'new': [ 'new': [
'<strong>Sekcja Aktualności</strong> - ogłoszenia i informacje dla członków Izby z wyróżnionymi wydarzeniami, zdjęciami i załącznikami', '<strong>Sekcja Aktualności</strong> - ogłoszenia i informacje dla członków Izby z wyróżnionymi wydarzeniami, zdjęciami i załącznikami',
'<strong>Ulepszona sztuczna inteligencja</strong> - NordaGPT korzysta teraz z najnowszej generacji modeli Google Gemini 3.1 z lepszym rozumieniem pytań', '<strong>Ulepszona sztuczna inteligencja</strong> - NordaGPT korzysta teraz z najnowszej generacji modeli Google Gemini 3.1 z lepszym rozumieniem pytań',
@ -1033,6 +1047,9 @@ def _get_releases():
'version': 'v1.39.0', 'version': 'v1.39.0',
'date': '23 lutego 2026', 'date': '23 lutego 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'Zarządzanie powiadomieniami': '/konto/prywatnosc',
},
'new': [ 'new': [
'★ <strong>Powiadomienia e-mail o wiadomościach</strong> - po otrzymaniu wiadomości prywatnej przychodzi e-mail z podglądem treści i linkiem do odpowiedzi', '★ <strong>Powiadomienia e-mail o wiadomościach</strong> - po otrzymaniu wiadomości prywatnej przychodzi e-mail z podglądem treści i linkiem do odpowiedzi',
'<strong>Zarządzanie powiadomieniami</strong> - w ustawieniach prywatności można włączyć lub wyłączyć powiadomienia e-mail o nowych wiadomościach', '<strong>Zarządzanie powiadomieniami</strong> - w ustawieniach prywatności można włączyć lub wyłączyć powiadomienia e-mail o nowych wiadomościach',
@ -1051,6 +1068,9 @@ def _get_releases():
'version': 'v1.38.0', 'version': 'v1.38.0',
'date': '22 lutego 2026', 'date': '22 lutego 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'Osoby kontaktowe na profilu firmy': '/',
},
'new': [ 'new': [
'★ <strong>Osoby kontaktowe na profilu firmy</strong> - na profilu każdej firmy widoczne są osoby powiązane z firmą wraz z danymi kontaktowymi i możliwością wysłania wiadomości', '★ <strong>Osoby kontaktowe na profilu firmy</strong> - na profilu każdej firmy widoczne są osoby powiązane z firmą wraz z danymi kontaktowymi i możliwością wysłania wiadomości',
'<strong>Wiadomości w menu głównym</strong> - nowy skrót do wiadomości prywatnych w górnym menu z licznikiem nieprzeczytanych', '<strong>Wiadomości w menu głównym</strong> - nowy skrót do wiadomości prywatnych w górnym menu z licznikiem nieprzeczytanych',
@ -1293,6 +1313,12 @@ def _get_releases():
'version': 'v1.27.0', 'version': 'v1.27.0',
'date': '6 lutego 2026', 'date': '6 lutego 2026',
'badges': ['security', 'new', 'improve', 'fix'], 'badges': ['security', 'new', 'improve', 'fix'],
'links': {
'Edycja profilu firmy przez właściciela': '/pulpit',
'Pobieranie danych z rejestrów urzędowych': '/',
'NordaGPT zna Izbę NORDA': '/chat',
'Sekcja "Co nowego w Izbie?" na pulpicie': '/pulpit',
},
'security': [ 'security': [
'<strong>Przegląd bezpieczeństwa platformy</strong> - naprawiono 8 wykrytych luk (1 krytyczna, 7 średnich)', '<strong>Przegląd bezpieczeństwa platformy</strong> - naprawiono 8 wykrytych luk (1 krytyczna, 7 średnich)',
'<strong>Ochrona wyszukiwarki i bazy wiedzy ZOPK</strong> - zabezpieczenie przed atakami przez złośliwe zapytania', '<strong>Ochrona wyszukiwarki i bazy wiedzy ZOPK</strong> - zabezpieczenie przed atakami przez złośliwe zapytania',
@ -1363,6 +1389,10 @@ def _get_releases():
'version': 'v1.25.0', 'version': 'v1.25.0',
'date': '4 lutego 2026', 'date': '4 lutego 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'Strefa RADA': '/rada',
'Korzyści dla Członków': '/korzysci',
},
'new': [ 'new': [
'★ <strong>Strefa RADA</strong> - zamknięta sekcja dla członków Rady Izby z listą posiedzeń i członków', '★ <strong>Strefa RADA</strong> - zamknięta sekcja dla członków Rady Izby z listą posiedzeń i członków',
'<strong>Zarządzanie posiedzeniami Rady</strong> - program, lista obecności i protokół w jednym miejscu', '<strong>Zarządzanie posiedzeniami Rady</strong> - program, lista obecności i protokół w jednym miejscu',
@ -1419,6 +1449,9 @@ def _get_releases():
'version': 'v1.23.0', 'version': 'v1.23.0',
'date': '1 lutego 2026', 'date': '1 lutego 2026',
'badges': ['security', 'new', 'improve', 'fix'], 'badges': ['security', 'new', 'improve', 'fix'],
'links': {
'Składanie wniosków o członkostwo': '/rejestracja',
},
'security': [ 'security': [
'<strong>6 poziomów dostępu</strong> - od gościa przez członka, pracownika, kierownika po administratora', '<strong>6 poziomów dostępu</strong> - od gościa przez członka, pracownika, kierownika po administratora',
'<strong>NordaGPT dostępny tylko dla członków Izby</strong>', '<strong>NordaGPT dostępny tylko dla członków Izby</strong>',
@ -1465,6 +1498,10 @@ def _get_releases():
'version': 'v1.22.0', 'version': 'v1.22.0',
'date': '31 stycznia 2026', 'date': '31 stycznia 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'Tablica B2B: Przycisk "Jestem zainteresowany"': '/b2b',
'Forum: Reakcje emoji': '/forum',
},
'new': [ 'new': [
'★ <strong>Tablica B2B: Przycisk "Jestem zainteresowany"</strong> - wyrażenie zainteresowania ofertą', '★ <strong>Tablica B2B: Przycisk "Jestem zainteresowany"</strong> - wyrażenie zainteresowania ofertą',
'<strong>Tablica B2B: Publiczne pytania i odpowiedzi</strong> pod ogłoszeniami', '<strong>Tablica B2B: Publiczne pytania i odpowiedzi</strong> pod ogłoszeniami',
@ -1509,6 +1546,9 @@ def _get_releases():
'version': 'v1.21.0', 'version': 'v1.21.0',
'date': '30 stycznia 2026', 'date': '30 stycznia 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'Moje konto': '/konto',
},
'new': [ 'new': [
'<strong>Moje konto</strong> - edycja danych osobowych, ustawienia prywatności i bezpieczeństwa', '<strong>Moje konto</strong> - edycja danych osobowych, ustawienia prywatności i bezpieczeństwa',
'<strong>Moderacja forum</strong> - administrator może usuwać, przypinać i blokować wpisy', '<strong>Moderacja forum</strong> - administrator może usuwać, przypinać i blokować wpisy',
@ -1531,6 +1571,10 @@ def _get_releases():
'version': 'v1.20.0', 'version': 'v1.20.0',
'date': '29 stycznia 2026', 'date': '29 stycznia 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'Aplikacja mobilna': '/',
'NordaGPT: Nowy silnik AI': '/chat',
},
'new': [ 'new': [
'<strong>NordaGPT: Nowy silnik AI</strong> - Google Gemini 3 Flash z lepszym rozumieniem pytań', '<strong>NordaGPT: Nowy silnik AI</strong> - Google Gemini 3 Flash z lepszym rozumieniem pytań',
'<strong>NordaGPT: Dwa tryby</strong> - podstawowy (bezpłatny) i zaawansowany (dokładniejszy)', '<strong>NordaGPT: Dwa tryby</strong> - podstawowy (bezpłatny) i zaawansowany (dokładniejszy)',
@ -1557,6 +1601,10 @@ def _get_releases():
'version': 'v1.19.0', 'version': 'v1.19.0',
'date': '28 stycznia 2026', 'date': '28 stycznia 2026',
'badges': ['new', 'improve', 'security'], 'badges': ['new', 'improve', 'security'],
'links': {
'Ukrywanie telefonu i email': '/konto/prywatnosc',
'Blokowanie użytkowników': '/konto/blokady',
},
'new': [ 'new': [
'<strong>Ukrywanie telefonu i email</strong> - można wybrać w ustawieniach, co jest widoczne na profilu', '<strong>Ukrywanie telefonu i email</strong> - można wybrać w ustawieniach, co jest widoczne na profilu',
'<strong>Blokowanie użytkowników</strong> - zablokowana osoba nie może wysyłać wiadomości', '<strong>Blokowanie użytkowników</strong> - zablokowana osoba nie może wysyłać wiadomości',
@ -1582,6 +1630,9 @@ def _get_releases():
'version': 'v1.17.0', 'version': 'v1.17.0',
'date': '26 stycznia 2026', 'date': '26 stycznia 2026',
'badges': ['new'], 'badges': ['new'],
'links': {
'Sekcja Aktualności': '/aktualnosci',
},
'new': [ 'new': [
'<strong>Sekcja Aktualności</strong> - wiadomości i ogłoszenia dla członków Izby', '<strong>Sekcja Aktualności</strong> - wiadomości i ogłoszenia dla członków Izby',
'Panel zarządzania aktualnościami dla administratora', 'Panel zarządzania aktualnościami dla administratora',
@ -1614,6 +1665,10 @@ def _get_releases():
'version': 'v1.15.0', 'version': 'v1.15.0',
'date': '13 stycznia 2026', 'date': '13 stycznia 2026',
'badges': ['new', 'improve', 'fix'], 'badges': ['new', 'improve', 'fix'],
'links': {
'NordaGPT zna więcej danych': '/chat',
'Kalendarz: Widok miesięczny': '/kalendarz',
},
'new': [ 'new': [
'<strong>NordaGPT zna więcej danych</strong> - rekomendacje, kalendarz, ogłoszenia B2B, forum i dane KRS', '<strong>NordaGPT zna więcej danych</strong> - rekomendacje, kalendarz, ogłoszenia B2B, forum i dane KRS',
'<strong>NordaGPT: Klikalne linki</strong> i adresy email w odpowiedziach chatbota', '<strong>NordaGPT: Klikalne linki</strong> i adresy email w odpowiedziach chatbota',
@ -1655,6 +1710,9 @@ def _get_releases():
'version': 'v1.13.0', 'version': 'v1.13.0',
'date': '11 stycznia 2026', 'date': '11 stycznia 2026',
'badges': ['new', 'improve'], 'badges': ['new', 'improve'],
'links': {
'Mapa Powiązań': '/mapa-powiazan',
},
'new': [ 'new': [
'★ <strong>Mapa Powiązań</strong> - interaktywna wizualizacja powiązań między firmami i osobami', '★ <strong>Mapa Powiązań</strong> - interaktywna wizualizacja powiązań między firmami i osobami',
'<strong>Profile osób</strong> - dane z rejestrów urzędowych i portalu', '<strong>Profile osób</strong> - dane z rejestrów urzędowych i portalu',
@ -1742,6 +1800,9 @@ def _get_releases():
'version': 'v1.4.0', 'version': 'v1.4.0',
'date': '1 grudnia 2025', 'date': '1 grudnia 2025',
'badges': ['new'], 'badges': ['new'],
'links': {
'Kalendarz wydarzeń': '/kalendarz',
},
'new': [ 'new': [
'<strong>Rekomendacje</strong> - firmy mogą polecać się nawzajem', '<strong>Rekomendacje</strong> - firmy mogą polecać się nawzajem',
'<strong>Panel składek członkowskich</strong>', '<strong>Panel składek członkowskich</strong>',
@ -1752,6 +1813,10 @@ def _get_releases():
'version': 'v1.3.0', 'version': 'v1.3.0',
'date': '28 listopada 2025', 'date': '28 listopada 2025',
'badges': ['new', 'improve'], 'badges': ['new', 'improve'],
'links': {
'Chatbot NordaGPT': '/chat',
'Wyszukiwarka firm': '/search',
},
'new': [ 'new': [
'★ <strong>Chatbot NordaGPT</strong> - asystent AI znający wszystkie firmy członkowskie', '★ <strong>Chatbot NordaGPT</strong> - asystent AI znający wszystkie firmy członkowskie',
'<strong>Wyszukiwarka firm</strong> - rozpoznaje synonimy i literówki', '<strong>Wyszukiwarka firm</strong> - rozpoznaje synonimy i literówki',
@ -1764,6 +1829,9 @@ def _get_releases():
'version': 'v1.2.0', 'version': 'v1.2.0',
'date': '25 listopada 2025', 'date': '25 listopada 2025',
'badges': ['new'], 'badges': ['new'],
'links': {
'System wiadomości prywatnych': '/wiadomosci',
},
'new': [ 'new': [
'<strong>System wiadomości prywatnych</strong> między użytkownikami', '<strong>System wiadomości prywatnych</strong> między użytkownikami',
'Powiadomienia o nowych wiadomościach', 'Powiadomienia o nowych wiadomościach',

View File

@ -915,7 +915,7 @@
{% set all_items = (latest_release.new or []) + (latest_release.improve or []) %} {% set all_items = (latest_release.new or []) + (latest_release.improve or []) %}
{% set starred = [] %} {% set starred = [] %}
{% for item in all_items %}{% if item.startswith('★') %}{% if starred.append(item) %}{% endif %}{% endif %}{% endfor %} {% for item in all_items %}{% if item.startswith('★') %}{% if starred.append(item) %}{% endif %}{% endif %}{% endfor %}
{% set starred_links = latest_release.get('starred_links', {}) if latest_release.get is defined else {} %} {% set starred_links = latest_release.get('links', {}) if latest_release.get is defined else {} %}
{% if starred %} {% if starred %}
{% for item in starred %} {% for item in starred %}
{% set item_title = item|striptags|replace('★ ', '') %} {% set item_title = item|striptags|replace('★ ', '') %}

View File

@ -171,6 +171,19 @@
content: none; content: none;
} }
.try-link {
color: var(--primary);
font-weight: 500;
text-decoration: none;
font-size: var(--font-size-xs);
margin-left: 6px;
white-space: nowrap;
}
.try-link:hover {
text-decoration: underline;
}
.stats-banner { .stats-banner {
background: linear-gradient(135deg, var(--primary), var(--primary-dark, #1a56db)); background: linear-gradient(135deg, var(--primary), var(--primary-dark, #1a56db));
color: white; color: white;
@ -234,6 +247,13 @@
</style> </style>
{% endblock %} {% endblock %}
{% macro render_item(item, release) -%}
{%- set title = item|striptags|replace('★ ', '') -%}
{%- set title_short = title.split(' - ')[0]|trim -%}
{%- set link = release.get('links', {}).get(title_short, '') if release.get is defined else '' -%}
{{ item|safe }}{% if link %} <a href="{{ link }}" class="try-link">Wypróbuj &rarr;</a>{% endif %}
{%- endmacro %}
{% block content %} {% block content %}
<div class="container"> <div class="container">
<div class="page-header"> <div class="page-header">
@ -289,7 +309,7 @@
<h4>Nowości</h4> <h4>Nowości</h4>
<ul class="change-list"> <ul class="change-list">
{% for item in release.new %} {% for item in release.new %}
<li{% if item.startswith('') %} class="release-highlight"{% endif %}>{{ item|safe }}</li> <li{% if item.startswith('') %} class="release-highlight"{% endif %}>{{ render_item(item, release) }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
@ -300,7 +320,7 @@
<h4>Ulepszenia</h4> <h4>Ulepszenia</h4>
<ul class="change-list"> <ul class="change-list">
{% for item in release.improve %} {% for item in release.improve %}
<li{% if item.startswith('') %} class="release-highlight"{% endif %}>{{ item|safe }}</li> <li{% if item.startswith('') %} class="release-highlight"{% endif %}>{{ render_item(item, release) }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
@ -311,7 +331,7 @@
<h4>Naprawione</h4> <h4>Naprawione</h4>
<ul class="change-list"> <ul class="change-list">
{% for item in release.fix %} {% for item in release.fix %}
<li{% if item.startswith('') %} class="release-highlight"{% endif %}>{{ item|safe }}</li> <li>{{ item|safe }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
@ -322,7 +342,7 @@
<h4>Bezpieczeństwo</h4> <h4>Bezpieczeństwo</h4>
<ul class="change-list"> <ul class="change-list">
{% for item in release.security %} {% for item in release.security %}
<li{% if item.startswith('') %} class="release-highlight"{% endif %}>{{ item|safe }}</li> <li>{{ item|safe }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>
@ -333,7 +353,7 @@
<h4>W fazie testów (BETA)</h4> <h4>W fazie testów (BETA)</h4>
<ul class="change-list"> <ul class="change-list">
{% for item in release.beta %} {% for item in release.beta %}
<li{% if item.startswith('') %} class="release-highlight"{% endif %}>{{ item|safe }}</li> <li>{{ item|safe }}</li>
{% endfor %} {% endfor %}
</ul> </ul>
</div> </div>