2 Commits
dev ... main

Author SHA1 Message Date
Jack Levy
1afe8601ed chore: expand robots.txt — block AI scrapers and SEO bots
Add blocks for AI training crawlers (GPTBot, CCBot, Bytespider, anthropic-ai,
Google-Extended, PerplexityBot, YouBot, cohere-ai), SEO tool bots (AhrefsBot,
SemrushBot, DotBot, MJ12bot, BLEXBot), and /_next/ static chunks. Add
Crawl-delay: 10 for well-behaved bots.

Authored by: Jack Levy
2026-03-15 21:49:05 -04:00
Jack Levy
989419665e chore: add robots.txt, update docs with mobile layout fix
- Add frontend/public/robots.txt: allow public pages, block auth/user-private routes and /api/
- ROADMAP.md: add mobile layout fix to UX & Polish shipped items
- TROUBLESHOOTING.md: add section on Android Chrome viewport overflow root cause and fix

Authored by: Jack Levy
2026-03-15 21:36:46 -04:00
3 changed files with 101 additions and 0 deletions

View File

@@ -71,6 +71,7 @@
- [x] Collapsible sidebar — icon-only mode, `localStorage` persistence - [x] Collapsible sidebar — icon-only mode, `localStorage` persistence
- [x] Favicon — Landmark icon - [x] Favicon — Landmark icon
- [x] LLM Batch API — OpenAI + Anthropic async batch endpoints; 50% cost reduction; state tracked in `AppSetting("llm_active_batch")` - [x] LLM Batch API — OpenAI + Anthropic async batch endpoints; 50% cost reduction; state tracked in `AppSetting("llm_active_batch")`
- [x] Mobile layout fix — `min-w-0` on flex content column in `AuthGuard` prevents long URLs from forcing viewport overflow on Android Chrome; app shell switched to `fixed inset-0` for stable visual-viewport anchoring
--- ---

View File

@@ -132,6 +132,44 @@ docker compose logs -f api worker
--- ---
## Mobile page wider than viewport (Android Chrome zoom / dead space)
**Symptom**
On Android Chrome, a page zooms out to fit an oversized layout. The content is readable but the bottom third of the screen is dead space (background color only). The same page looks fine on all other devices, and other pages on the same device are fine.
**Root cause**
Flex items default to `min-width: auto`, meaning they cannot shrink below their content's natural width. If any descendant (e.g. a long URL in an input field) is wider than the viewport, the containing flex column expands to match, making the entire page layout wider than the viewport. Android Chrome then zooms the viewport out to fit the full layout width — which makes the layout taller than the visual viewport, leaving dead space at the bottom.
**Fix**
Add `min-w-0` (Tailwind) / `min-width: 0` (CSS) to the flex item that forms the main content column. This allows the column to shrink to zero, enabling children to wrap and truncate normally.
In `AuthGuard.tsx` the content column needs both `flex-1` and `min-w-0`:
```tsx
// Before — missing min-w-0
<div className="flex-1 flex flex-col min-h-0">
// After
<div className="flex-1 flex flex-col min-h-0 min-w-0">
```
Also switch the outer shell from `h-dvh` to `fixed inset-0 flex overflow-hidden` so the shell is anchored to the visual viewport directly (avoids `dvh` staleness issues on Android):
```tsx
// Before
<div className="flex h-dvh bg-background">
// After
<div className="fixed inset-0 flex overflow-hidden bg-background">
```
**General rule**: any `flex-1` column that can contain user-supplied text or long URLs should also carry `min-w-0`.
---
## Inspecting the database ## Inspecting the database
```bash ```bash

View File

@@ -0,0 +1,62 @@
User-agent: *
Allow: /
Allow: /bills
Allow: /bills/
Allow: /members
Allow: /members/
Allow: /topics
Allow: /how-it-works
Allow: /share/
Disallow: /login
Disallow: /register
Disallow: /settings
Disallow: /notifications
Disallow: /following
Disallow: /collections
Disallow: /alignment
Disallow: /api/
Disallow: /_next/
Crawl-delay: 10
# AI training crawlers
User-agent: GPTBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: anthropic-ai
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: YouBot
Disallow: /
User-agent: cohere-ai
Disallow: /
# SEO tool crawlers
User-agent: AhrefsBot
Disallow: /
User-agent: SemrushBot
Disallow: /
User-agent: DotBot
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: BLEXBot
Disallow: /