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>
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>
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>
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>
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>
- 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>
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>
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>
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>
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>
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>
- 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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
- 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>
Replace old Pro-only cost limits with unified system for all models:
- Per-user limits: $0.15/day, $0.50/week, $1.00/month (degressive)
- Global portal budget: $25/month (~100 PLN) tracked and displayed
- Two progress bars in chat header: personal daily + global portal usage
- Color-coded bars (green→yellow→red at 60%/90%)
- Limit exceeded banner with "request higher limits" button
- Backend endpoint logs requests for admin review
- Flash model recommended as default (economical)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hide quality badges (basic/enhanced/complete) from admin company list,
company detail, and navigation menu. Remove dead CSS from public
company detail template. Backend scoring remains for internal use.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>