Glasshouse
루팅된 LG webOS TV용 대시보드·프라이버시 제어·Home Assistant 연동
프레임워크에 삽입 가능한 라이브러리로, 제공된 데이터로 실시간 반응형 캔버스 만화 스트립을 렌더링, Astro와 MIT 라이선스 지원
A framework-embeddable library that renders comic strips from caller-supplied data as live, responsive canvas widgets. Astro-ready, MIT.
개발 도구TypeScript · MDXGitHub @dkdev24온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Embeddable canvas comic-strip library: render panels, characters, balloons and backdrops from data, responsive and framework-agnostic.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A framework-embeddable library that renders a comic strip — panels,
characters, poses, emotions, speech/thought balloons, backdrops — from
caller-supplied data, as a live, responsive, canvas-based widget. Not a flat
pre-rendered image: panels are drawn on real <canvas> elements and
re-render as their container resizes.
toonstrip does not generate content. You supply panels, dialogue, and
emotion as data (by hand, by script, by calling an LLM yourself); toonstrip
only renders it. See TOONSTRIP_DEV_PLAN.md §0 for the full list of
non-goals.
Site: toonstrip.danielkimdev.com — intro,
docs, playground, changelog. Source in site/.
| Pre-rendered PNG | Exported SVG | toonstrip | |
|---|---|---|---|
| Reflows to the container | No — one fixed layout | Scales, doesn't reflow | Column count follows width |
| Sharp on any display | Only at export size | Yes | Yes — DPR-aware backing store |
| Screen readers | One alt text, if you wrote it | Depends on the export | Every panel described from its own lines |
| Change one line of dialogue | Re-render, re-upload | Re-export | Edit the JSON |
| Page weight (3-panel strip) | One large image | Text-heavy vector | Only the sprites it references |
Does toonstrip generate the comic for me? No. It renders the document you give it — the dialogue, emotions, and direction are yours, your script's, or an LLM you call yourself.
Can I use it commercially? Yes. The code is MIT, and the default pack's
Comic Chat art is redistributed under MIT terms (see NOTICE).
How big is it? About 36 KB gzipped for element + core + schema validator; sprite sheets load per character actually used.
Does it render on the server? The Astro component emits an inert tag on
the server and the browser draws. For static PNGs, the CLI runs the same
renderer in Node: npx -p @toonstrip/cli toonstrip render strip.json --out strip.png.
Full FAQ: toonstrip.danielkimdev.com/docs/faq/.
| Package | What it is |
|---|---|
packages/schema | The ComicStripDocument v1 types, JSON Schema, and a runtime validator |
packages/core | The framework-agnostic rendering engine (figures, balloons, backdrops, layout) |
packages/element | <comic-strip>, a zero-framework-deps custom element wrapping core |
packages/astro | An Astro integration + <ComicStrip> component wrapping element |
packages/react | A <ComicStrip> React component wrapping element |
packages/vue | A <ComicStrip> Vue component wrapping element |
packages/next | Deprecated — react's <ComicStrip> now carries its own 'use client' directive and cli exports the SSR-placeholder helper directly; see docs/next.md |
packages/pack-comic-chat | The default asset pack: the original 15-character Comic Chat roster + 3 backdrops (MIT, see its NOTICE) |
packages/pack-example | A second, small, wholly original pack proving the pack contract isn't coupled to pack-comic-chat |
packages/cli | The toonstrip CLI (pack validate, render to PNG) |
packages/asset-packager | The toonstrip-pack CLI: turns per-pose PNGs or grid sheets into a valid pack (validate, slice, register, sheet-pack, derive join anchors). No model, no network |
examples/astro-blog | A minimal Astro site embedding a live strip in a blog post |
examples/react-vite | A minimal Vite + React app embedding a live strip, prop-updated without a remount |
examples/vue-vite | A minimal Vite + Vue app embedding a live strip, prop-updated without a remount |
examples/next-app |
Dependency direction is one-way: schema → core → element → astro, and
element → react → next and element → vue alongside it (next also
depends on cli for its SSR placeholder). Asset packs depend on schema
only.
pnpm install
pnpm build
pnpm test
See CONTRIBUTING.md for the full workspace guide,
including how to add a new character or asset pack.
docs/schema.md — the ComicStripDocument formatdocs/packs.md — the asset pack contract, and a
worked walkthrough for adding a characterdocs/asset-image-spec.md — the rules a
character/backdrop PNG must follow to be packed by
@toonstrip/asset-packager into a packdocs/asset-sheets.md — sheet input: one generated
image holding a grid of poses or scenes, sliced into many pack assetsdocs/astro.md — embedding a strip in Astrodocs/react.md — embedding a strip with @toonstrip/reactdocs/vue.md — embedding a strip with @toonstrip/vuedocs/next.md — embedding a strip in Next.js App Router
with @toonstrip/react + @toonstrip/cli, including the SSR placeholder
(@toonstrip/next is deprecated — this doc covers the replacement)docs/vanilla-html.md — embedding a strip with
no build step at all (plain HTML, CDN imports)MIT (see LICENSE). The default pack-comic-chat asset pack incorporates
Microsoft Comic Chat art under the same license, with its own attribution —
see NOTICE and THIRD_PARTY.md at the repo root, and
packages/pack-comic-chat/NOTICE.
| A minimal Next.js App Router app: server-rendered PNG placeholder swapped for the live canvas on hydration |
examples/vanilla-html | A single .html file embedding a live strip with no build step — CDN imports, no package.json |
skills/toonstrip | An agent skill teaching an AI coding agent to author and validate a ComicStripDocument, and to build an asset pack from generated art |
site | toonstrip.danielkimdev.com (Astro; deployed by Cloudflare Pages on push) |
TOONSTRIP_DEV_PLAN.mdSITE_DEV_PLAN.md / DESIGN.md — the M7
plan and UI/UX guide for the public site, toonstrip.danielkimdev.comHANDOFF.md / WORKLOG.md — cross-session
state and version history, for anyone (human or agent) picking up this
project across sessions