Tavotto
AI drew your research figure. Tavotto makes it publication-ready: edit matplotlib figures on a canvas, lay out in mm, check journal rules. Free, open source.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
From visual evidence to explorable systems. Banana Hacks 2026 (Image AI) project.
Photograph any object. The Physical Lab finds its parts, cuts each one out, estimates depth, and builds an interactive exploded diagram you can rotate, pull apart, inspect part by part, and question with "what if I remove this?".檢視完整 README ↗From visual evidence to explorable systems. Banana Hacks 2026 (Image AI) project.
Photograph any object. The Physical Lab finds its parts, cuts each one out, estimates depth, and builds an interactive exploded diagram you can rotate, pull apart, inspect part by part, and question with "what if I remove this?".
Paste a screenshot of any website or app. The Digital Lab rebuilds it as working HTML or React (compare it with the original using a wipe slider, then ask for changes), writes a step-by-step plan for building it for real, and shows the component structure behind it. Several screenshots of one app become one clickable app; the rebuild can be refined against its own render, edited by clicking it, checked on phone/tablet/laptop and opened as a live StackBlitz project. A multi-screen explorer maps user workflows between screens and compares versions.
Both labs produce the same SystemAnalysis shape: components, relationships, evidence and an observed / inferred status for every item.
Built during the Banana Hacks 2026 hacking window. Status: work in progress.
Everything shown is labelled seen in photo or inferred. Samples: three saved real analyses (iPhone 17, Game Boy, mouse) and two curated reference models (MacBook Air M3, gaming PC), labelled as such. Details: docs/PHYSICAL_LAB.md.
box_2d, converted to 0–1), types, evidence and parent links.observed if the boxes agree, inferred if not); missing parents are derived from geometry (estimated).appears_related_to with a note.scripts/eval_digital.py scores live output against ground truth from three team-made mock screens (recall at IoU ≥ 0.5, mean IoU, type agreement). On 10 Oct with gemini-3.8-flash: recall 1.0 on all three screens, mean IoU 0.89–0.95. Three synthetic screens are a sanity check, not a benchmark.Open /digital. Upload several screens to map the workflow (hypothesised transitions labelled with the control that triggers them), two versions to compare (added / removed / moved / reworded, plus optional AI style check), or one screen to rebuild it as a starter HTML/React draft with measured design tokens and generated docs. Click any component for its tree position, evidence and a what-if (same engine shape as the Physical Lab). Details: docs/DIGITAL_LAB.md.
Guided tour (for the demo video): open http://localhost:8000/?tour. A title card, the Physical Lab (iPhone 17: exact-model identification, 3D model seen from the right, explode with every part lifting out, parts pulled out by hand, X-ray wiring, part details, battery failure cascade, system graph), a bridge, the Digital Lab (teardown, compare, X-ray, Inspect, a change request, React Native, build plan, backend, accessibility) and a closing card play by themselves with captions in a bar over the page header, about 2.5 minutes, from saved results only (no live AI call). /digital?demo plays only the Digital Lab part. Keep the Chrome window in front while recording.
cd apps/api
python -m venv .venv && . .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements-dev.txt
cp .env.example .env # add your free key from aistudio.google.com/apikey
uvicorn app.main:app --reload --port 8000
Open http://localhost:8000 and upload a photo. Deploying (Docker, Render or Hugging Face Spaces): docs/DEPLOY.md. Tests: cd apps/api && pytest -q. Live Digital Lab check (uses your key): python scripts/eval_digital.py --chat.
Both labs share one vision client: Gemini first, switching Flash models when a free daily quota runs out, then a local LM Studio model (VISION_PROVIDER=auto). Results are cached by image hash, so the same image never costs a second call. Frontend types: contracts/system-analysis.ts; full contract: docs/API_CONTRACT.md.
| Method | Path | Purpose |
|---|---|---|
| GET | /api/health | Provider readiness (no secrets) |
| POST | /api/physical/analyze | multipart image → SystemAnalysis (+ scene layers) |
| POST | /api/physical/identify | photos (+ optional typed model) → exact product, dimensions, alternatives |
| POST | /api/physical/whatif | {analysisId, removedComponentId} → verdict, % working, affected parts + paths |
| GET | /api/physical/teardown?q=&topic= | iFixit teardown guides for the product (credited, CC BY-NC-SA) |
| GET | /api/physical/samples | Saved real analyses and curated reference models (sample mode) |
| POST | /api/digital/analyze | multipart image (screenshot) → SystemAnalysis (domain digital) |
| GET | /api/digital/samples | Saved real Digital Lab results (+ /{id}, /{id}/image) |
| POST | /api/digital/whatif · /workflow · /diff · /reconstruct | Digital explorer (see docs/DIGITAL_LAB.md) |
| GET | /api/analysis/{analysisId} | Any stored analysis (either lab) |
| POST | /api/analysis/{analysisId}/chat | {question, selectedComponentIds} → grounded answer with cited ids |
All errors use one shape: {"error": {"code": "...", "message": "..."}}.