Tags: adam2go/tilo-framework
Tags
release: 0.4.1 — py.typed, __version__, README coherence Library-quality polish: - Add tilo/py.typed so downstream users get full type checking (mypy/pyright) from `tilo` — verified it ships in the wheel. - Expose tilo.__version__ (from package metadata). - README repositioned for coherence with "library, not a framework": the spec/adapters/renderers are the core; the full ROAM runtime is clearly the optional tilo[server] path (no more "lib vs heavy framework" whiplash). 369 tests pass; clean-venv lean install verified (version + py.typed + hero path). npm @adam2go/tilo-react unchanged (source identical since 0.2.0) — no republish. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
docs+release: reposition as a lightweight library; AG-UI complementar… …y; 0.4.0 - README (EN + zh-CN): "a library, not a framework". Lead the Why section with the lean-install + render-anywhere story; add a complementary-stack table and an explicit "Tilo and AG-UI work together" comparison (compose, don't compete). - Install guidance updated to lean `pip install tilo` vs `tilo[server]`. - Adapter tables include AG-UI; CHANGELOG 0.4.0 entry. - Bump 0.4.0. Build + twine check pass; all docs links resolve. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
release: 0.3.0 — base_url providers, shell CLI generate, followups, r… …epair, lighter imports Makes the published package match the docs. Highlights since 0.2.0: - base_url → any OpenAI-compatible provider (DeepSeek/Groq/OpenRouter/local) - `tilo generate "goal"` shell command - generate_followup(), save_spec()/load_spec() - JSON repair retry, temperature + strict params, actionable errors - lazy schemas package (domain off the lightweight import path) Verified: twine check + clean-venv install of 0.3.0 OK; CI green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
release: 0.2.0 — lighter install, LLM extras, PyPI-ready - Bump 0.1.0 → 0.2.0 (Beta); new description matches the README pitch - Make psycopg an optional [postgres] extra — SQLite is the default and nothing imports psycopg eagerly, so `pip install tilo` is now much lighter (verified: clean-venv install runs tilo.generate/view with no LLM SDK, no psycopg) - Add LLM extras: tilo[openai], tilo[anthropic], tilo[langchain], tilo[all] - Add project URLs (Homepage/Docs/Repo/Changelog) for the PyPI sidebar - Add backend/README.md as the PyPI long description - Dockerfile installs .[postgres] (the compose stack uses Postgres) Verified: twine check passes, 293 tests pass, clean-venv end-to-end OK. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat(react): full block-renderer parity with tilo.generate() + viewer… … (0.2.0) The npm package's renderArtifactBlock() only handled 9 "rich" block types, so specs from tilo.generate() — which heavily use heading/metric/table/ checklist/confirmation/button_group/rating/form/progress — fell through to the generic fallback in React, even though the zero-setup Python viewer rendered them fully. Added 12 renderers so React matches the viewer exactly: heading, markdown, card, metric, table, list (content) progress (visualization) checklist, rating, button_group, form, confirmation (interactive) checklist + rating are lightly interactive (local useState). Bumped to 0.2.0 to match the Python package; typecheck + build pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
fix: rename @tilo/react → @adam2go/tilo-react (@tilo npm scope unavai… …lable)
feat: @tilo/react npm package (packages/react/)
Publishable React renderer SDK for Tilo AIP specs.
Exports:
TiloRenderer — surface spec renderer with blockWrapper + override API
renderArtifactBlock — artifact block renderer (chart/diff/code/timeline/kanban/…)
blockRenderers — registry for custom block type overrides
createTiloClient — configurable API client (baseUrl, custom fetcher)
useTiloSurface — hook: load SurfaceTurns for run or session, optional polling
All TypeScript types — SurfaceSpec, ArtifactBlock, BlockProps, TiloAction, …
Build: tsup (ESM + CJS + .d.ts), externals: react, react-dom, recharts, lucide-react
Peer deps: react ≥18, react-dom ≥18, recharts ≥2, lucide-react ≥0.400
CI: .github/workflows/npm-publish.yml — triggers on npm-v* tags,
publishes via NPM_TOKEN secret (set in GitHub → Settings → Secrets)
To publish:
1. Add NPM_TOKEN to GitHub repo secrets
2. git tag npm-v0.1.0 && git push --tags
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat: chart/diff/code/timeline/kanban block rendering + PyPI publish … …workflow Frontend — blockRenderers.tsx (recharts-powered, no breaking changes): - chart: bar, line, pie, radar via Recharts + ResponsiveContainer - diff: unified diff (color-coded +/- lines) or side-by-side before/after - code: monospace with language label + dark background - timeline: vertical dot-and-line layout (Tailwind, no CSS class deps) - kanban: horizontal columns with cards (Tailwind, no CSS class deps) - tool_preview / tool_call_preview: status badge + output pre block - memory_card / memory_candidate_card: indigo card + salience % - confirmation / confirmation_action: existing, registered explicitly All blocks fall back to ExtensionFallbackBlock for unknown types. Frontend build passes (Next.js 14, TypeScript strict). PyPI — .github/workflows/publish.yml: - Triggers on v* tags: git tag v0.1.0 && git push --tags - Uses OIDC trusted publishing (no API token needed in repo secrets) - Builds sdist + wheel from backend/ via python -m build - Publishes via pypa/gh-action-pypi-publish@release/v1 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>