Commit Graph

201 Commits

Author SHA1 Message Date
66856a697d refactor(phase1): Extract blueprints for reports, contacts, classifieds, calendar
Phase 1 of app.py refactoring - reducing from ~14,455 to ~13,699 lines.

New structure:
- blueprints/reports/ - 4 routes (/raporty/*)
- blueprints/community/contacts/ - 6 routes (/kontakty/*)
- blueprints/community/classifieds/ - 4 routes (/tablica/*)
- blueprints/community/calendar/ - 3 routes (/kalendarz/*)
- utils/ - decorators, helpers, notifications, analytics
- extensions.py - Flask extensions (csrf, login_manager, limiter)
- config.py - environment configurations

Updated templates with blueprint-prefixed url_for() calls.

⚠️ DO NOT DEPLOY before presentation on 2026-01-30 19:00

Tested on DEV: all endpoints working correctly.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 10:10:45 +01:00
819b8d9c13 fix(contacts): Ukrywanie widoku kart przy przełączeniu na tabelę
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:59:57 +01:00
ffc766d034 feat(contacts): Modal "Dodaj z AI" + widoki grupowanie/tabela
- Dodano modal "Dodaj z AI" z parsowaniem tekstu/obrazów przez Gemini
- API endpoints: /api/contacts/ai-parse, /api/contacts/bulk-create
- Nowy widok grupowania kontaktów po organizacji (domyślny)
- Widok tabeli dla kompaktowego przeglądu
- Przełącznik widoków z zapamiętywaniem preferencji
- Drag & drop dla zdjęć wizytówek
- Docker: PostgreSQL 16 (zgodność z produkcją)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:52:35 +01:00
21a78befad feat(contacts): Baza kontaktów zewnętrznych dla członków Norda
- Nowy model ExternalContact z pełnymi danymi kontaktowymi, social media, related_links (JSONB)
- Migracja SQL 020_external_contacts.sql z full-text search
- Routes: /kontakty (lista), /kontakty/dodaj, /kontakty/<id>, /kontakty/<id>/edytuj
- Szablony: lista z filtrami, karta szczegółów, formularz CRUD
- Nawigacja: link "Kontakty zewnętrzne" w dropdown Społeczność
- Poprawka: aktualizacja liczby firm z 80 na 111

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:35:06 +01:00
a172f7af49 feat(announcements): Śledzenie odczytów ogłoszeń (seen by)
- Nowa tabela announcement_reads do śledzenia kto przeczytał
- Avatary użytkowników z inicjałami (tooltip z nazwiskiem)
- Statystyki: liczba i procent użytkowników którzy przeczytali
- Progress bar wizualizujący zasięg ogłoszenia
- Automatyczny zapis odczytu przy otwarciu ogłoszenia

Autor: Maciej Pienczyn
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 08:19:39 +01:00
da8eb48f2b ux(announcements): Dodanie autora ogłoszenia na stronie szczegółów
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:23:09 +01:00
505f40e1c1 nav: Dodanie linku Aktualności w menu Społeczność
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:16:06 +01:00
e14d95394d feat(announcements): System ogłoszeń i aktualności dla członków
- Model Announcement z kategoriami, statusami, slugami URL
- Panel admina /admin/announcements (CRUD, filtry, AJAX)
- Strona /ogloszenia tylko dla zalogowanych członków
- Szczegóły ogłoszenia /ogloszenia/<slug>
- Migracja SQL rozszerzająca istniejącą tabelę
- Testowe ogłoszenia: ARP baza noclegowa, Tytani Przedsiębiorczości
- Pliki PDF regulaminu i harmonogramu konkursu Tytani

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 22:10:54 +01:00
9e82c00ca4 ux(landing): Przeniesiono "Jak to działa?" wyżej na stronie głównej
Feedback od testera: sekcja wyjaśniająca flow powinna być widoczna
wcześniej, przed szczegółowymi kartami funkcji.

Nowa kolejność:
1. Hero (nagłówek + statystyki + CTA)
2. "Jak to działa?" (1→2→3) ← przeniesione wyżej
3. Karty funkcji (Pełny katalog, AI Asystent, Filtry)
4. "Do czego użyjesz tego portalu?"
5. Bottom CTA

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 08:29:09 +01:00
c1ab97e60a fix(chat): Naprawa z-index - dropdown navbar widoczny nad purpurowym paskiem
Dodano position: relative i z-index: 50 do .chat-header, aby elementy
dropdown menu użytkownika (z-index: 200) były wyświetlane nad paskiem NordaGPT.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-21 21:00:11 +01:00
4d67dfa079 feat(zopk): Frontend dla sugestii Timeline z bazy wiedzy
- Dodano przycisk 'Sugestie z bazy wiedzy' na stronie Timeline
- Modal z listą sugestii milestone z bazy wiedzy:
  - Statystyki (total facts, w timeline, do dodania)
  - Karty sugestii z edytowalnym tytułem i kategorią
  - Przyciski Dodaj/Pomiń dla każdej sugestii
- Toast notifications dla feedbacku
- Auto-refresh timeline po dodaniu sugestii

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 17:37:03 +01:00
43c22650f1 feat(zopk): Modal przeglądu wyników uczenia z weryfikacji
- Backend zwraca teraz pełne dane zweryfikowanych faktów (nie tylko count)
- Nowy modal pokazuje listę zweryfikowanych faktów z:
  - Tekstem faktu i typem
  - Procentem podobieństwa do wzorca
  - Fragmentem wzorca który dopasował
- Możliwość cofnięcia weryfikacji dla pojedynczych faktów
- Statystyki: zweryfikowane / wzorce użyte / cofnięte
- Stylizowane karty z animacjami

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:33:39 +01:00
f126341eed fix(zopk): Naprawka importu func + ładne toasty/modale w UI
Poprawki:
- Dodano brakujący import `func` w find_similar_to_verified_facts()
- Dodano brakujący import `func` w auto_verify_similar_to_verified()

UI/UX:
- Zamieniono brzydkie alert() na stylizowane toasty
- Zamieniono confirm() na ładne modale z ikonami
- Dodano animacje slideIn/slideOut dla toastów
- Dodano animacje fadeIn/scaleIn dla modali

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:29:20 +01:00
818ddd96eb feat(zopk-knowledge): Dodanie funkcji uczenia się z weryfikacji
- Nowa funkcja find_similar_to_verified_facts() w zopk_knowledge_service.py
  używa pg_trgm do wyszukiwania podobnych faktów
- Nowa funkcja auto_verify_similar_to_verified() automatycznie weryfikuje
  fakty podobne do już zweryfikowanych (próg 80% podobieństwa)
- Nowy endpoint POST /api/zopk/knowledge/auto-verify/similar
- Nowy endpoint GET /api/zopk/knowledge/suggest-similar-facts
- Przycisk "Ucz się z weryfikacji" na dashboardzie bazy wiedzy ZOPK

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 16:21:08 +01:00
56bfbeed37 fix(zopk): Poprawka statystyk weryfikacji na dashboardzie
- Funkcja renderVerificationStats używała nieistniejącego klucza data.verification
- API zwraca dane w strukturze: data.entities, data.facts, data.chunks
- Naprawiono mapowanie danych do właściwej struktury
- Obliczanie 'oczekuje' jako total - verified
2026-01-17 11:27:01 +01:00
5d24aa30b0 fix(zopk): Poprawka wyświetlania confidence_score w deduplikacji faktów 2026-01-17 11:21:53 +01:00
96fa0058c2 feat(zopk): Rozbudowa bazy wiedzy ZOPK
- Dodano skrypt cron do automatycznej ekstrakcji wiedzy (scripts/cron_extract_knowledge.py)
- Dodano panel deduplikacji faktów (/admin/zopk/knowledge/fact-duplicates)
- Dodano API i funkcje auto-weryfikacji encji i faktów
- Dodano panel Timeline ZOPK (/admin/zopk/timeline) z CRUD
- Rozszerzono dashboard bazy wiedzy o statystyki weryfikacji i przyciski auto-weryfikacji
- Dodano migrację 016_zopk_milestones.sql dla tabeli kamieni milowych
- Naprawiono duplikat modelu ZOPKMilestone w database.py

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:57:11 +01:00
3b27dcaf0d fix(zopk): Naprawa NaN w podglądzie faktów przy łączeniu encji
Problem: JS oczekiwał facts_subject + facts_object, API zwraca facts
Rozwiązanie: Zmiana JS na ${p.transfers.facts || 0}

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 10:32:41 +01:00
36d24d1735 fix(zopk): Naprawa inicjalizacji grafu relacji
Problem: D3.js ładowane przez base.html PO bloku extra_js,
więc initGraph() była wywoływana gdy D3 jeszcze nie istniało.

Rozwiązanie: użycie window.addEventListener('load', ...)
zamiast natychmiastowego sprawdzenia typeof d3.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:24:33 +01:00
85c3f75e9b feat(zopk): Graf relacji encji (Priorytet 5)
- Dodano endpoint /admin/zopk/knowledge/graph z wizualizacją D3.js
- Dodano API endpoint /api/zopk/knowledge/graph/data
- Graf współwystępowania encji z kolorami według typu
- Rozmiar węzłów proporcjonalny do liczby wzmianek
- Filtry: typ encji, minimalna liczba współwystąpień
- Tooltips z informacjami o encjach
- Zoom i drag-and-drop interakcje

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:14:30 +01:00
143f5c674a feat(zopk): Implementacja łączenia duplikatów encji (Priorytet 4)
Nowe funkcje w zopk_knowledge_service.py:
- find_duplicate_entities() - wyszukiwanie podobnych encji (pg_trgm)
- merge_entities() - łączenie encji z transferem relacji
- get_entity_merge_preview() - podgląd przed połączeniem

Nowe endpointy w app.py:
- GET /admin/zopk/knowledge/duplicates - panel zarządzania duplikatami
- POST /api/zopk/knowledge/duplicates/preview - podgląd merge
- POST /api/zopk/knowledge/duplicates/merge - wykonanie merge

Nowy szablon:
- templates/admin/zopk_knowledge_duplicates.html - UI z kartami encji

Dodatkowo:
- Aktualizacja CLAUDE.md z procedurą wdrażania
- Skrypt scripts/run_migration.py do uruchamiania migracji SQL

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:09:22 +01:00
6d1f75bce5 fix(admin): Naprawiono błędne nazwy endpointów w breadcrumbs
Zmieniono admin_dashboard i admin_zopk_dashboard na admin_zopk

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 09:03:01 +01:00
d0dda10bd7 feat(zopk): Panel admina bazy wiedzy, poprawa odpowiedzi AI, timeline
Priorytet 1 - Panel admina bazy wiedzy ZOPK:
- /admin/zopk/knowledge - dashboard ze statystykami
- /admin/zopk/knowledge/chunks - lista chunks z filtrowaniem
- /admin/zopk/knowledge/facts - lista faktów z typami
- /admin/zopk/knowledge/entities - lista encji z mentions
- CRUD operacje: weryfikacja, usuwanie

Priorytet 2 - Poprawa jakości odpowiedzi NordaGPT:
- Linki markdown do źródeł w kontekście ZOPK
- Ulepszone formatowanie (bold, listy, nagłówki)
- Sekcja "Źródła" na końcu odpowiedzi
- Instrukcje w system prompt dla lepszej prezentacji

Priorytet 3 - Timeline ZOPK:
- Model ZOPKMilestone w database.py
- Migracja 016_zopk_milestones.sql z sample data
- Sekcja "Roadmapa ZOPK" na stronie /zopk
- Pionowa oś czasu z markerami lat
- Statusy: completed, in_progress, planned, delayed

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 08:56:55 +01:00
37af8abc73 feat(admin): Paski postępu dla operacji AI w panelu ZOPK
Dodano Server-Sent Events (SSE) dla śledzenia postępu w czasie rzeczywistym:
- Scraping treści artykułów
- Ekstrakcja wiedzy przez Gemini AI
- Generowanie embeddingów

Funkcje:
- Modal z paskiem postępu i statystykami
- Live log operacji z kolorowaniem statusów
- Podsumowanie na zakończenie (sukces/błędy/czas)
- Możliwość zamknięcia modalu po zakończeniu

Zmiany techniczne:
- 3 nowe SSE endpointy (/stream)
- ProgressUpdate dataclass w scraperze
- Callback pattern w batch_scrape, batch_extract, generate_chunk_embeddings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 23:23:05 +01:00
31d5a112b8 feat(admin): Sekcja Baza Wiedzy AI w panelu ZOPK
- Dodano sekcję "🧠 Baza Wiedzy AI" do /admin/zopk
- Statystyki scrapingu: zatwierdzonych, zescrapowanych, oczekujących
- Statystyki wiedzy: chunks, fakty, encje
- Statystyki embeddingów: z/bez embeddingów
- Przyciski: Scrapuj treść, Ekstrakcja AI, Generuj embeddingi
- Top encje z kolorowymi pillami (firmy, osoby, miejsca, projekty)
- Rozszerzono get_extraction_statistics() o pending_scrape i embeddings

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 22:17:44 +01:00
a20d94883e feat(admin): Konfigurowalne limity dla operacji ZOPK
- Scraping: domyślnie 1, max 100
- Ekstrakcja: domyślnie 1, max 100
- Embeddingi: domyślnie 1, max 500
- Usunięto stałe liczby z etykiet przycisków

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 20:30:54 +01:00
0797afe162 fix(admin): Poprawiono czytelność wyświetlania statystyk ZOPK
- Dodano white-space: pre-line do modala
- Wyrównano kolumny wartości
- Dodano separatory sekcji
- Usunięto zbędne emoji w nagłówkach

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 20:29:26 +01:00
498f273aba fix(admin): Naprawiono strukturę danych w przyciskach ZOPK
- Naprawiono showKnowledgeStats - używa prawidłowej zagnieżdżonej struktury
- Naprawiono endpoint embeddings - renamed 'success' count to 'generated'
- Naprawiono endpoint extract - renamed 'success' count to 'processed'
- Unikamy nadpisywania flagi 'success: True' przez spread operator

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 20:27:02 +01:00
8b065d84d0 feat(admin): Przyciski do scrapingu i ekstrakcji wiedzy ZOPK
- Dodano przyciski: Scrapuj treść, Ekstraktuj wiedzę, Generuj embeddingi
- Dodano przycisk Statystyki z podglądem bazy wiedzy
- Przyciski widoczne w panelu /admin/zopk/news

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 20:21:55 +01:00
82d4c870a0 style(zopk): Ujednolicenie stylu kart newsów z /zopk/aktualnosci
- Obrazki newsów (lub zielony placeholder z ikoną)
- Większy padding i promień zaokrąglenia kart
- Dłuższe opisy (250 znaków zamiast 200)
- Data w formacie DD.MM.YYYY w jednej linii ze źródłem
- Hover z efektem podniesienia (translateY)
- Responsive: obrazki na pełną szerokość na mobile

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 06:00:10 +01:00
819192bdad feat(zopk): Rozszerzony widok aktualności ze statystykami czasowymi
- Dodano pasek statystyk newsów (łącznie, dzień, tydzień, miesiąc)
- Zwiększono limit wyświetlanych newsów z 10 do 25
- Usunięto przycisk "Zobacz wszystkie" - pełny widok od razu
- Przycisk "Starsze aktualności" pojawia się gdy jest więcej niż 25

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 05:56:00 +01:00
3beacd8806 fix(zopk): Naprawa duplikatu ID aiEvalResult w modalu
Były dwa elementy z tym samym ID - JavaScript znajdował pierwszy
(poza modalem) zamiast właściwego wewnątrz modala.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 05:46:39 +01:00
1193a2bf48 feat(zopk): Re-ewaluacja newsów z niską oceną zawierających kluczowe tematy
- Nowa funkcja reevaluate_low_score_news() szuka newsów z 1-2★
  zawierających Via Pomerania, NORDA, S6, Droga Czerwona, etc.
- Nowy endpoint POST /admin/zopk/news/reevaluate-low-scores
- Przycisk w UI "Re-ewaluuj niskie oceny" z szczegółowym raportem
- Automatyczne auto-approve jeśli nowa ocena >= 3★

Problem: Artykuły o Via Pomerania miały 1★ bo były ocenione
         przed dodaniem tego tematu do promptu AI.
Rozwiązanie: Re-ewaluacja nowym promptem podniesie ich oceny.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 05:38:20 +01:00
0cbdcaaad6 feat(zopk): Szczegółowe statystyki wyników wyszukiwania newsów
- Zamiana auto-odświeżania na przycisk OK
- Dodanie sekcji szczegółowych statystyk (12 metryk)
- Dodanie listy artykułów odrzuconych przez AI
- Śledzenie czasu przetwarzania
- API zwraca nowe pola: sent_to_ai, ai_rejected_articles, processing_time

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 05:28:10 +01:00
61b8a8e797 feat(zopk): Add AI model info banner to dashboard
Shows:
- Current model: gemini-2.5-flash-lite
- Prompt version: v2 (2026-01-15)
- New topics: +7 infrastructure projects

Tooltip lists: Via Pomerania, S6, Droga Czerwona, etc.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 05:19:12 +01:00
db02d3660f feat(zopk): Improve AI scoring and auto-approve threshold
Changes:
- Lower auto-approve threshold from 4★ to 3★ (verified 2026-01-15)
- Add detailed progress bar for ZOPK search process
- Add auto-approved articles list with star ratings
- Document ZOPK topics (ZOP Kaszubia) in CLAUDE.md
- Add 8-second countdown before auto-refresh

Technical:
- zopk_news_service.py: Changed score threshold from >=4 to >=3
- Templates: New CSS for progress phases and results display
- CLAUDE.md: Added "ZOP Kaszubia News" section with topic guidelines

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 05:05:41 +01:00
90da6b9c64 fix: Treat HTTP 429 as OK in health check
429 (Too Many Requests) means the endpoint is working correctly
and is protected by rate limiting - this is expected behavior
for /register endpoint.

- Add 429 to acceptable status codes (200, 302, 304, 429)
- Update legend to explain 429 means protection is working
- Apply to all health check endpoints

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 04:15:39 +01:00
54b3b94482 feat: Add graphical Health Check dashboard
- Add /admin/health route with visual status indicators
- Create health_dashboard.html with category-based endpoint cards
- Color-coded status: green (OK), yellow (warning), red (error)
- Show response times with color indicators (fast/medium/slow)
- Add HTTP status code legend
- Auto-refresh every 2 minutes
- Add link in admin navigation menu
- Categories: public pages, auth, API, admin panel, company profiles

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:56:43 +01:00
23f109db2c fix: Update technology stack with verified versions only
- Verify all software versions via SSH (NORDABIZ-01, R11-REVPROXY-01, Proxmox)
- Remove Redis (not used), Gunicorn (app runs directly via python)
- Add PostgreSQL version dynamic fetch from database
- Add Docker version for R11-REVPROXY-01
- Update all package versions to verified values
- Handle unknown versions (Fortigate) with yellow "nieznana" badge
- Add comment with verification date (2026-01-14)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:48:21 +01:00
03bd90f33b feat: Add system status dashboard with tech stack visualization
- Add /admin/status route with real-time system metrics (CPU, RAM, disk)
- Add /api/admin/status API endpoint for auto-refresh
- Add technology stack section showing all platform technologies
- Add auto-refresh (5 min) to GeoIP stats in security dashboard
- Add "Status systemu" link to admin navigation menu
- Fix /health/full endpoint list (remove non-existent endpoints)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:35:25 +01:00
9fdcee35d0 fix: Fix alert_breakdown sum in security dashboard template
Changed from sum(attribute='value') to values()|sum for dict type

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:23:02 +01:00
e9e37796c7 feat: Add security mechanisms list and GeoIP stats to admin dashboard
- New 'Mechanisms' tab listing all security features with star ratings (5★=critical)
- New 'GeoIP' tab with blocking statistics (daily/monthly/yearly/total)
- Country breakdown with flags for blocked connections
- Status indicators for each security mechanism

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 22:16:33 +01:00
1a06b6ab29 feat: Add security dashboard link to admin menu 2026-01-14 21:45:05 +01:00
cfdcfea093 fix: Remove duplicate CSRF input in 2fa_settings.html
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 21:41:01 +01:00
6ec830fabc fix: CSRF token in 2FA templates
Changed {{ csrf_token() }} to proper hidden input field.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 21:35:19 +01:00
0dba52e9c4 feat: Add security features - 2FA, audit log, alerting
Security enhancements:
- Two-Factor Authentication (TOTP) for all users
  - Enable/disable 2FA in settings
  - Backup codes for recovery
  - Login flow with 2FA verification
- Audit log for admin actions
  - Track all sensitive operations
  - IP address and user agent logging
- Security alerts system
  - Alert types: brute_force, honeypot_hit, account_locked, geo_blocked
  - Email notifications for high/critical alerts
  - Dashboard for alert management
- Admin security dashboard (/admin/security)
  - View/acknowledge/resolve alerts
  - Unlock locked accounts
  - 2FA status overview

New files:
- security_service.py: Security utilities
- templates/auth/verify_2fa.html
- templates/auth/2fa_settings.html
- templates/auth/2fa_setup.html
- templates/auth/2fa_backup_codes.html
- templates/admin/security_dashboard.html

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 21:23:27 +01:00
af3ba43c89 feat: Dynamic stats in release notes (companies, categories from DB) 2026-01-14 17:31:10 +01:00
26c76cc691 fix: Update release notes stats (111 firms, 19 categories) 2026-01-14 15:47:43 +01:00
8c9d95cca9 refactor: Update tagline from "Katalog Firm Członkowskich" to "Platforma Networkingu"
Changed branding across the application:
- email_service.py: Updated footers in password reset and welcome emails
- base.html: Updated meta description and footer text
- landing.html: Updated page title

New tagline: "Platforma Networkingu Regionalnej Izby Przedsiębiorców Norda Biznes"

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 11:35:58 +01:00
2f37267475 feat: Update footer with INPI branding
- Add INPI logo with link to inpi.pl
- Change copyright to INPI as creator
- Update contact email to maciej.pienczyn@inpi.pl
- Add WhatsApp contact link
- Make phone and email clickable (tel:/mailto:)
- Add CSS styles for footer creator section

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-14 08:23:43 +01:00