- Always check INPI and Waterm profiles (fixed)
- Add 3 random company profiles each refresh
- Total 5 company profiles tested for better coverage
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- 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>
- 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>
- Checks 14 critical endpoints (public + admin pages)
- Returns JSON with pass/fail status for each endpoint
- HTTP 200 if all OK, HTTP 503 if any failures
- Useful for deployment verification and monitoring
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add GeoIP blocking, security panel, and stats to v1.16.0 release notes
- Add comprehensive security mechanisms table to CLAUDE.md
- Document GeoIP configuration and MaxMind setup
- List all 12 security mechanisms with star ratings
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- Update security_service.py with BLOCKED_COUNTRIES list
- Add check_geoip() middleware in app.py
- Log blocked attempts with security alerts
- Uses MaxMind GeoLite2-Country database
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Trap URLs: /wp-admin, /phpmyadmin, /.env, /.git/config, etc.
- Log to security.log for fail2ban integration
- Instant 24h ban via fail2ban after 1 hit
Outlook and some email clients don't render CSS gradients properly.
Added solid background-color (#1e3a8a) as fallback before gradient.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
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>
- Added proper Polish characters (ą, ę, ó, ł, ś, ć, ż, ź, ń)
- Improved header contrast with darker gradient and text-shadow
- Added meta charset UTF-8 for proper encoding
- Fixed warning box text color for better readability
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Previously showed "InPi Notifications" which was confusing.
Now emails will display as "Norda Biznes Hub <noreply@inpi.pl>"
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add EmailLog model to database.py for tracking sent emails
- Modify email_service.py to log all sent emails to database
- Track email type (welcome, password_reset, notification)
- Record sender, recipient, subject, status, timestamps
- Supports monitoring email delivery success/failure
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Company.category is a relationship, not a column
- Use Company.category_id for grouping and filtering
- Load category names via separate query to Category table
Fixes 500 error on /raporty/struktura-branzowa
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add .label('category') to SQLAlchemy query for proper Row attribute access
- Change filter_by to filter() for better NULL handling
Fixes 500 error on /raporty/struktura-branzowa
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- 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>
- Changed all "Chat AI" labels to "NordaGPT" in navigation menus
- Updated dashboard quick links
- NordaGPT is now the official product name for AI assistant
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Added regex to convert [text](url) markdown links to <a> tags
- Updated raw URL regex with lookbehind/lookahead to avoid duplicate links
- Links now display as clickable text instead of raw markdown syntax
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed AI model from Gemini 2.0 Flash to Gemini 2.5 Flash-Lite
- Added info button next to model badge in chat header
- Created modal with technical specs and development history timeline
- Benefits: 8x longer responses (65k tokens), 4x daily limit (1000 RPD)
- Model remains FREE (Free Tier)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Endpointy /api/chat/start i /api/chat/{id}/message
wymagały tokenu CSRF, co blokowało żądania z JavaScript.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Zamiast otwierać modal, kliknięcie w banner NordaGPT
przenosi bezpośrednio do strony /chat z historią rozmów.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Element emptyState może nie istnieć po załadowaniu poprzedniej rozmowy.
Dodano sprawdzenie if (emptyState) przed ustawieniem style.display.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Dodano API /api/chat/conversations (lista konwersacji użytkownika)
- Dodano API DELETE /api/chat/<id>/delete (usuwanie konwersacji)
- Przebudowano chat.html z sidebarem historii (styl ChatGPT)
- Sidebar z listą konwersacji, przyciski "Nowa rozmowa" i usuwania
- Responsywny design dla mobile (toggle sidebar)
- Integracja ze stylem NordaGPT (purple gradient header)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Zmieniono company.category na company.category.name
(category to relacja do obiektu Category, nie string)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Zmieniono url_for('company_detail', slug=...) na
url_for('company_detail', company_id=...) we wszystkich raportach.
Route company_detail wymaga company_id, nie slug.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Dodano link Raporty w menu nawigacyjnym (dla zalogowanych)
- Utworzono 3 raporty generowane w czasie rzeczywistym:
- Staż członkostwa w Izbie NORDA
- Pokrycie Social Media (6 platform)
- Struktura branżowa (kategorie firm)
- Dodano dokumentację strategii monetyzacji 3-tier pricing
- Release notes v1.18.0
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Changed card color from blue to green (#10b981)
- Added "Źródło: Izba NORDA" text below years count
- Consistent styling with other legal info cards
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Data przystąpienia do Izby NORDA (member_since)
- Karta "Członek Izby NORDA od" z datą i stażem w latach
- Import 57 firm z historią od 1997 roku
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Nowa kolumna member_since w tabeli companies
- Karta "Członek Izby NORDA od" na profilu firmy (niebieski kolor #3b82f6)
- Wyświetlanie liczby lat w Izbie
- Import 57 dat przystąpienia z pliku Excel od Artura
- Skrypt import_member_since.py do importu dat
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>