Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1afe8601ed | ||
|
|
989419665e |
@@ -71,6 +71,7 @@
|
||||
- [x] Collapsible sidebar — icon-only mode, `localStorage` persistence
|
||||
- [x] Favicon — Landmark icon
|
||||
- [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
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
```bash
|
||||
|
||||
62
frontend/public/robots.txt
Normal file
62
frontend/public/robots.txt
Normal 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: /
|
||||
Reference in New Issue
Block a user