Commit Graph

1674 Commits

Author SHA1 Message Date
51f041baa4 fix(messages): use HTML strong tag instead of markdown, remove reply_to mapping from migration
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 (1M context) <noreply@anthropic.com>
2026-03-27 13:43:21 +01:00
f8f8c22bee fix(messages): move CSS link to head_extra block (extra_css is inside style tag)
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 (1M context) <noreply@anthropic.com>
2026-03-27 13:40:24 +01:00
f622706bb7 fix(messages): handle self-messages in migration script (sender==recipient)
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 (1M context) <noreply@anthropic.com>
2026-03-27 13:36:29 +01:00
bca1decf97 test(messages): add unit tests for conversation models and link preview
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 Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 13:31:44 +01:00
5841116ff1 feat(messages): add data migration script (old → unified model)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 13:27:03 +01:00
9a4afa6907 feat(messages): redirect old inbox to new conversation view
Move legacy inbox to /wiadomosci/stare, promote /wiadomosci-v2 to /wiadomosci,
and update nav links in base.html to point to conversations_page.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 13:25:26 +01:00
755520ee62 feat(messages): add conversation view JavaScript
Vanilla JS IIFE implementing the full messaging UI frontend:
- ConversationList: render, select, search, update conversations
- ChatView: load/render messages with date separators, scroll-up pagination
- MessageActions: context menu with reply/react/forward/pin/edit/delete
- Reactions: emoji picker, toggle reaction pills
- Composer: Quill editor, Enter to send, file attachments, typing indicator
- SSEClient: EventSource with auto-reconnect (exponential backoff), heartbeat
- Presence: batch fetch, 60s polling, online dot in header
- NewMessageModal: recipient search, pill badges, create conversation
- Pins: pinned bar, overlay list, scroll to pinned message
- Time formatting: Polish locale (teraz, 5 min, wczoraj, date)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:23:55 +01:00
aa351ef60f feat(messages): add conversation view template
Jinja2 template for the conversation-based messaging UI with:
- Two-panel layout (conversation list + chat view)
- Quill rich text editor for message composition
- Context menu with reply/react/forward/pin/edit/delete actions
- Emoji picker, typing indicator, pinned messages bar
- New message modal with recipient search
- Reply preview in input area
- File attachment support
- SVG icons (Heroicons-style, stroke-based)
- Dynamic JS loading to ensure data variables are set before conversations.js

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:17:29 +01:00
e719f4036d feat(messages): add conversation view CSS
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:13:36 +01:00
5182be0748 feat(messages): add link preview for URLs in messages 2026-03-27 13:10:34 +01:00
362ff74b91 feat(messages): add reactions and pins API
Implements 5 endpoints: add/remove emoji reactions (6 allowed emojis, IntegrityError-safe dedup), pin/unpin messages, and list conversation pins. All endpoints verify ConversationMember access and publish SSE events to conversation participants.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 13:09:36 +01:00
8b74901ad4 feat(messages): add message send/edit/delete/forward API
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 13:07:54 +01:00
d8d7637bc7 feat(messages): add SSE stream, typing indicator, and presence endpoints
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 13:01:37 +01:00
ccbbf0f141 feat(messages): add Redis service for pub/sub and presence
Singleton Redis client module with graceful fallback when Redis is
unavailable. Provides pub/sub (SSE events) and presence tracking
(online status, last_seen) for the messaging redesign.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 12:59:21 +01:00
d4fd1f3b06 feat(messages): add unified conversation models and migration SQL
Add 5 new SQLAlchemy models (Conversation, ConversationMember, ConvMessage,
MessageReaction, MessagePin) and extend MessageAttachment with conv_message_id FK.
Migration 091 creates all tables with indexes, FKs, and grants.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 12:56:35 +01:00
29bd3b2e39 Add release notes v1.51.0 (25 March 2026)
Some checks failed
NordaBiz Tests / Unit & Integration Tests (push) Has been cancelled
NordaBiz Tests / E2E Tests (Playwright) (push) Has been cancelled
NordaBiz Tests / Smoke Tests (Production) (push) Has been cancelled
NordaBiz Tests / Send Failure Notification (push) Has been cancelled
New: calendar subscription (iCal), AI enrichment with preview/checkboxes,
profile completeness indicator, parent-child company labels.
Improved: mobile calendar grid, featured events in red, mobile user menu
bottom sheet, NordaGPT usage limits display, www badges truncation,
company edit permissions info.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:32:18 +01:00
5ca0cdd139 Add profile completeness indicator and two enrichment modes
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
1. Completeness bar above buttons: "Profil 65%" with missing field list
2. Two buttons:
   - "Uzupełnij brakujące" (fill mode) — only fills empty fields,
     skips existing data, all results pre-checked
   - "Sprawdź aktualizacje" (full mode) — shows all changes including
     updates to existing fields, changes unchecked by default
3. "Uzupełnij" button hidden when profile is 100% complete
4. Backend provides profile_filled, profile_total, profile_missing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:22:59 +01:00
c2fc5abe6d AI enrichment: show current vs proposed comparison with color coding
Some checks are pending
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Review panel now shows side-by-side comparison for each field:
- Red block "Obecne:" shows current value (what will be replaced)
- Green block "Propozycja:" shows AI suggestion
- Badge: NOWE (green) for empty fields, ZMIANA (yellow) for updates
- New fields are pre-checked, changes are unchecked (safer default)
- Unchanged fields are hidden (no noise)
- Backend now returns current_data alongside proposed_data

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:16:19 +01:00
25e34d254c Two-step AI enrichment: preview with checkboxes before saving
Some checks are pending
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Redesigned AI enrichment flow:
1. Button renamed to "Zbierz informacje o firmie" with tooltip explaining
   what will happen (search web, show results for approval)
2. After AI analysis: show clean review panel with checkboxes for each
   field (description, services, USPs, tags, etc.) instead of tech log
3. User selects which fields to keep, clicks "Zapisz wybrane (N)"
4. Only checked fields are sent to /approve endpoint
5. Progress messages simplified to non-technical Polish

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 17:04:14 +01:00
f8fdb6a106 Fix desktop calendar grid — show event titles instead of empty colored bars
Some checks are pending
NordaBiz Tests / E2E Tests (Playwright) (push) Blocked by required conditions
NordaBiz Tests / Smoke Tests (Production) (push) Blocked by required conditions
NordaBiz Tests / Unit & Integration Tests (push) Waiting to run
NordaBiz Tests / Send Failure Notification (push) Blocked by required conditions
Event text was removed when switching to div+modal. Added it back as
<span class="calendar-event-text"> visible on desktop, hidden on mobile.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:54:50 +01:00
2aea030d2f Add VTIMEZONE definition for Google Calendar timezone recognition
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
Google Calendar showed UTC instead of Europe/Warsaw because the iCal
feed lacked a VTIMEZONE component. Added full CET/CEST definition.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:49:18 +01:00
eb13fc857f Android: subscription-only with step-by-step computer instructions
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
Remove .ics download option. Show clear 5-step instructions for
subscribing via calendar.google.com on computer, with copy button.
Explain that phone syncs automatically after computer setup.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:48:01 +01:00
338e02fb75 Android: download .ics as primary action, subscription as secondary
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
Google Calendar Android app has no "add by URL" option.
Primary: download .ics file → opens in Google Calendar (one-time import)
Secondary: instructions + copy link for computer subscription (auto-sync)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:46:22 +01:00
53fc7237f3 Android subscribe: auto-copy URL + open Google Calendar settings page
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
One tap does two things:
1. Copies iCal URL to clipboard automatically
2. Opens Google Calendar "Add by URL" settings page
User just needs to paste and click "Add calendar".

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:43:52 +01:00
047c25f271 Fix Google Calendar cid parameter — use https:// instead of webcal://
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
webcal:// in cid= caused garbled calendar name on Android.
Use properly URL-encoded https:// URL instead.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:41:49 +01:00
e14d53efcc Android calendar: add manual URL copy with step-by-step instructions
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
Auto-subscribe link often fails on Android. Now shows both:
- Direct Google Calendar link (try first)
- Copy button + step-by-step Polish instructions for manual add
  via calendar.google.com → "Z adresu URL"

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:38:04 +01:00
638c42ce4b Remove Content-Disposition from iCal feed for Google Calendar compatibility
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
Google Calendar treats attachment disposition as download instead of
subscription. Remove it so Google properly subscribes to the feed.
Set 1h cache for CDN-friendly serving.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:32:32 +01:00
ab9a4170df Android calendar: open Google Calendar web subscription page
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
Instead of downloading .ics (one-time import), Android users get a link
to Google Calendar subscription page. This creates a live subscription
that auto-syncs new events to their phone. iOS keeps webcal:// link.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:29:50 +01:00
b439bc50c2 Fix Android calendar subscribe — download .ics instead of webcal://
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
Android PWA doesn't handle webcal:// protocol. Now detects platform:
- iOS/Mac: webcal:// link (opens Apple Calendar)
- Android/other: direct .ics download (opens system picker → Google Calendar)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:27:53 +01:00
c404e78d51 Simplify calendar subscribe — single webcal:// button for all platforms
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
One "Dodaj do kalendarza" button with webcal:// protocol works on:
- iPhone/Mac: opens Apple Calendar
- Android: opens app picker (Google Calendar, Samsung Calendar, etc.)
- Desktop: opens default calendar app
Manual URL copy kept as fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:26:34 +01:00
292c5bdb52 Fix Google Calendar subscribe link — use /r?cid= format
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
Previous /render?cid=webcal:// format didn't add the calendar.
New format /r?cid=https:// is the correct way to subscribe.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:25:42 +01:00
355e2a152e Calendar subscribe: clickable buttons instead of copy-paste instructions
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
- Apple Calendar: webcal:// link opens native iOS/macOS calendar directly
- Google Calendar: direct link to calendar.google.com/render?cid=
- Outlook: direct link to outlook.live.com/addfromweb
- Manual copy-paste link kept as fallback at bottom

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:16:00 +01:00
d5b95dff48 Soften today highlight in calendar grid — light blue instead of thick border
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 (1M context) <noreply@anthropic.com>
2026-03-25 16:13:51 +01:00
60c43cd8a0 Add red color for featured/important events in calendar
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
Featured events (is_featured=true) now display in red (#fee2e2)
instead of inheriting their type color. Applies to grid cells,
list view (red left border), bottom sheet modal dots, and legend.
Currently featured: portal presentation (Apr 9), nuclear meeting
with Governor (Apr 7), conference (Apr 9), gala (Nov 21).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:08:28 +01:00
a8e4d2d822 Change external events color from gray to light orange
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
Gray blended with empty cells. New color: orange (#fff7ed bg, #fb923c
accent) — visible but understated compared to blue (meetings).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:05:42 +01:00
88cc65091f Calendar grid: tap day opens bottom sheet with event list
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
Instead of direct links on colored cells, tapping a day with events
opens a bottom sheet modal showing all events for that day with:
- Event type color dot, title, time, location
- Tap event row to navigate to details
- Polish month names in modal title ("25 marca 2026")
- Smooth slide-up animation, overlay tap to close

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 16:03:09 +01:00
12dcb9c21c Mobile calendar grid: colored cell fills instead of dots
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
On mobile, events now fill entire day cells as colored blocks:
- 1 event: full cell background in event type color
- 2+ events: cell split into colored horizontal strips
- Each strip is clickable (links to event details)
- Day number overlaid on top with z-index
- Desktop unchanged (text labels in cells)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:59:25 +01:00
a364dfcf58 Fix calendar grid view on mobile — events as colored dots
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
On narrow screens (≤768px), calendar grid events become small colored
dots (8x8px circles) instead of text labels that overflow cells.
Day cells reduced to min-height 60px, day headers to 9px font.
Grid stays 7-column but compact enough for mobile screens.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:55:42 +01:00
5229433ea8 Shorten "Jestem zainteresowany" to "Zainteresowany" for mobile fit
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 (1M context) <noreply@anthropic.com>
2026-03-25 15:53:36 +01:00
4fb2bd04ed Fix calendar horizontal overflow on mobile (iOS/Android)
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
- Add flex-wrap to event cards so actions wrap below on narrow screens
- Add overflow-x:hidden to html,body to prevent horizontal scroll
- Smaller h1 on mobile calendar header

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:50:46 +01:00
2c5aa22ab3 Move user menu outside header for iOS z-index stacking fix
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
On iOS, elements inside a stacking context (nav-menu z-index:99) cannot
escape above it regardless of their own z-index. Move overlay and
bottom sheet to body level (after </header>) so they render on top of
everything. Close hamburger menu before opening bottom sheet on mobile.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:44:19 +01:00
362f092d5b Fix iOS bottom sheet — use visibility+transform instead of display:none
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
iOS Safari doesn't recalculate height properly with display:none→block.
Switch to display:block!important + visibility:hidden + translateY(100%)
+ pointer-events:none for hidden state. This ensures iOS renders the
full sheet height before showing it. Also remove overflow:hidden from
base .user-menu that was clipping content.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:35:39 +01:00
abd2a8a95c Mobile user menu as bottom sheet instead of dropdown
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
On mobile (≤768px), user menu now slides up from bottom as a sheet:
- Full name displayed in header with avatar
- Larger touch targets (14px padding)
- Dark overlay behind (tap to close)
- Smooth slide-up animation (translateY)
- Safe area inset for iPhone notch/home indicator
- Handle bar at top (standard bottom sheet pattern)
Desktop behavior unchanged (absolute dropdown).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:31:26 +01:00
b28d3c1879 Add iCal subscription feed for Norda Biznes events
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
New endpoint /kalendarz/ical returns .ics file with all upcoming events.
Compatible with Google Calendar, iOS Calendar, and Outlook subscription.
- Auto-refreshes every 6 hours (REFRESH-INTERVAL)
- Includes event time, location, description, organizer
- Handles all-day events (no time_start) and timed events
- "Subscribe" button on calendar page with copy-to-clipboard modal
- Instructions for iPhone, Google Calendar, and Outlook

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:17:34 +01:00
be4bbfc1fd Add permissions info banner to company edit panel
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
Show users what they can edit (description, services, contacts, social,
logo) and what is auto-populated from registries (NIP, REGON, KRS,
address). Addresses user confusion reported at March 23 meeting.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:09:21 +01:00
5b0c2a4e2f Limit www badges to 15 services + 10 keywords with expand button
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
Companies with large websites (e.g. Waterm: 94 badges, Chopin TV: 172)
now show max 25 badges by default with a "+ jeszcze N" button to expand.
Data in database unchanged — only display limit in template.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 15:01:28 +01:00
c1523b840e Fix mobile menu positioning on iOS — use fixed + getBoundingClientRect
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
Replace position:absolute (unreliable inside sticky header on iOS Safari)
with position:fixed + dynamic top calculated from header bottom edge.
Add -webkit-overflow-scrolling:touch for smooth scrolling on iOS.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 14:47:15 +01:00
795882a456 Show parent-child company relationships on catalog tiles
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
Display relationship labels on company cards in the directory:
- Child companies show "marka [Parent Name]" (e.g. "marka Forte Media")
- Parent companies show comma-separated list of child brands
- Handles inactive parents (e.g. Forte Media → Scantric, You're Welcome)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 14:20:04 +01:00
0e1ac7652e Rewrite NordaGPT info modal and limits in plain Polish
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
Replace technical jargon (tokens, thinking mode, benchmarks) with
user-friendly language: number of questions per day/week/month,
page equivalents (~160 pages per query), how to write questions,
costs explanation, and future billing notice. Update dropdown
descriptions and limit exceeded messages.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 14:13:05 +01:00
a816d8adf7 Fix AI cost calculation — derive thinking tokens and correct pricing
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
- Thinking tokens were not counted (SDK field doesn't exist), now derived
  from total_token_count - prompt - candidates
- Remove separate thinking price rate — Google bills thinking at output rate
- Update GEMINI_PRICING to match Google pricing page (verified 2026-03-25)
- Net effect: ~2% cost increase per query (previously undercharging)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-25 14:05:43 +01:00