The Shanda sponsor logo's alt text was `666ghj%2MiroFish | Shanda`,
missing the `F` from the URL-encoded `/`. Every other badge in both
READMEs uses the correct `666ghj%2FMiroFish`. Bring this one in line
with the rest.
- Add return type annotation (list[str]) to Config.validate()
- Add type annotations (msg: str, -> None) to logger convenience functions
- Add FileParser.is_supported() classmethod for checking file format support
- Add sans-serif font for English left-pane (status, workflow sections)
- Shorten English workflow step descriptions
- Reduce English report title font-size from 36px to 28px
- Use sans-serif font for English titles, descriptions and navbar
- Shorten English hero text to avoid overflow
- Fix :global() scoped CSS issue that was setting root font-size to 3.5rem
- Use separate unscoped style block for html[lang] selectors
Background threads (graph building, simulation prep, report generation,
profile generation) now inherit the requesting user's locale preference.
Previously these fell back to 'zh' because Flask request context was
unavailable in spawned threads.
Ensure poster_type stays PascalCase English and stance stays English enum
values regardless of language setting. Only natural language fields follow
the user's language preference.
The language instruction was causing LLM to change entity/relation naming
conventions. Now explicitly enforce PascalCase/UPPER_SNAKE_CASE for technical
identifiers while only applying language preference to description fields.
Fixes#150
## Problem
When a simulation is created with Twitter-only configuration (enable_reddit=false), all data retrieval APIs silently return empty results because they default to looking up Reddit data. No error is raised — the user sees an empty UI with no indication of what went wrong.
## Root Cause
- Platform parameter hardcoded to 'reddit' in 3+ API locations
- When Twitter-only simulation runs, reddit_simulation.db is never created
- APIs still look for Reddit data by default → empty results → user confusion
## Solution
1. Added - checks which db files actually exist
2. Added - intelligent fallback logic
3. Updated all 3 API endpoints to use auto-detection
## Changes
- backend/app/api/simulation.py:
- Line 994: get_simulation_profiles()
- Line 1108: get_simulation_profiles_realtime()
- Line 2053: get_simulation_posts()
## Logic
## Testing
- [x] Twitter-only simulation returns Twitter data (not empty)
- [x] Reddit-only simulation still works
- [x] Both-platform simulation defaults to Reddit (backward compatible)
## Impact
Eliminates silent data loss for Twitter-only simulations
- Added VITE_API_TIMEOUT environment variable support
- Default remains 300000ms (5 minutes)
- Users can increase timeout for slow local models like Ollama
- Example: VITE_API_TIMEOUT=600000 for 10 minutes
Fixes#58