Open
Conversation
… alternative prompts
…se to replace mocked data
…dd logic in the backend service to store the relationship in database
…rod.txt uv.lock format generated by newer uv versions is incompatible with uv:0.5.11 in Docker. Pre-generate requirements.prod.txt locally to avoid uv version mismatch at build time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Untrack routeTree.gen.ts from .gitignore and commit it (needed for Docker build) - Add src/client/index.ts stub for ApiError type (utils.ts legacy import) - Add src/hooks/useMobile.ts with useIsMobile hook (used by sidebar.tsx) - Fix button size "icon-sm" → "icon" in password-input.tsx - Remove unused Activity import in DashboardPageLayout.tsx - Fix NumericKey index type in PerformanceDetailTable.tsx Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
nginx resolves upstream hostnames at startup by default, which fails when backend/frontend containers aren't ready yet. Using resolver 127.0.0.11 with $variables defers resolution to request time. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AppLayout: - Sidebar becomes a fixed overlay drawer on mobile (hamburger in header) - Mobile backdrop closes sidebar on tap - Desktop collapse behavior unchanged - Nav links close mobile drawer on tap Dashboard & Insight pages: - p-8 → p-4 sm:p-6 lg:p-8 responsive padding - text-4xl → text-2xl sm:text-4xl responsive headings - Headers stack vertically on mobile (flex-col → sm:flex-row) - w-[350px]/w-[220px] selects → w-full sm:w-[350px] - Brand selector row stacks on mobile - Tab + time-range controls stack on mobile - Custom date inputs stack on mobile (flex-col → sm:flex-row) - Risk cards: grid-cols-5 → grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 - Charts: h-96 → h-64 sm:h-80 lg:h-96 BrandAwarenessScore: - 12-col grid → grid-cols-1 md:grid-cols-12 - col-span-6 → md:col-span-6 (stacks on mobile) - Segment header stacks on mobile - w-[300px] → w-full sm:w-[300px] Landing pages: - Hero heading: text-5xl → text-3xl sm:text-5xl md:text-6xl - ProductSection: responsive grid gaps, reduced padding on mobile Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…t 22:00 UTC Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
asyncpg attempts SSL by default and fails with name resolution error when connecting to host.docker.internal in production. Appending ?ssl=disable forces a plain TCP connection. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The PostgreSQL password contains '@' which broke URL parsing — uvloop's URL parser split at the first '@' and tried to resolve the remainder as a hostname. quote_plus() encodes '@' as '%40' so the URL parses correctly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
uvloop's c-ares DNS resolver ignores /etc/hosts, so host.docker.internal cannot be resolved from inside Docker containers. Use the docker0 bridge IP directly to avoid DNS resolution entirely. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces redirect-to-stripe.com with an embedded checkout form rendered directly on the /app/onboarding page using EmbeddedCheckoutProvider. - Backend: ui_mode=embedded, return client_secret instead of checkout_url - Frontend: EmbeddedCheckout component from @stripe/react-stripe-js - PricingPage upgrade button navigates to /app/onboarding?plan=pro - Added VITE_STRIPE_PUBLISHABLE_KEY to Dockerfile, compose, and deploy Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
AppGuard was redirecting new users to /profile-setup before they could see the payment page. Now /onboarding is excluded from that redirect so the checkout renders first. After payment, Stripe redirects to /settings where AppGuard picks up the profile-setup redirect naturally. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Nav items and plan badge are visually dimmed and non-interactive while the user is on /app/onboarding, preventing navigation away mid-checkout. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… stripping in env.py Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Pydantic schemas (BlogPostListItem, BlogPostPublicResponse, BlogPostAdminResponse, BlogPostCreateRequest, BlogPostUpdateRequest) in app/models/blog.py - Add require_super_user FastAPI dependency to app/api/deps.py - Create app/api/routes/blog.py with public list/get and admin CRUD + publish-toggle endpoints - Register blog router in app/api/main.py - Add 4 passing tests in tests/api/routes/test_blog.py (TDD) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Added new blog API client (blog.ts) with full CRUD operations for blog posts including public endpoints (getPosts, getPost) and admin endpoints for creating, updating, deleting, and publishing blog posts. Also installed marked package for markdown parsing support. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…debar Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ed migrate manually before deploy
Implements the fixed 240px dark sidebar panel for the Actionable Insights feature, showing today's alert summary badges and a grouped signal list with selection state, severity indicators, and skeleton loading state. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements SignalDetail.tsx (Task 3) with Why Fired metrics, Competitor Breakdown table, and Recommended Actions with expandable QueryDrillDown toggle. Also adds QueryDrillDown stub to unblock TypeScript compilation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.