PartCAD
CAD 파일을 위한 최초의 패키지 매니저
Žemaitukas – TypeScript로 만든 사모기아니아 전통 SVG 캐릭터
Žemaitukas — animated Samogitian Samoyed SVG character in TypeScript. Lip-syncs to translator audio; turns into a warrior of Perkūnas in dark mode.
디자인TypeScript · HTMLGitHub @bonsaivaras온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An animatable SVG character written in TypeScript. In light mode it's a fluffy Samoyed wearing the colours of Samogitia (Žemaitija). In dark mode it becomes a storm-lit pagan warrior of Perkūnas (in Samogitia also called Dundulis). It moves its mouth in sync whenever a translator plays audio.
| Light mode, friendly | Dark mode, warrior |
|---|---|
Live demo: bonsaivaras.github.io/zemaitukas.
speak(text, { lang }): browser text-to-speech (Web Speech API)attachAudio(audioEl): any <audio> or <video> element, such as a translation service's outputattachStream(mediaStream): live audio, such as a WebRTC call or a microphonesetMouthOpen(0..1): drive the mouth yourself, for example from viseme dataimport { SamogitianSamoyed, LINES } from './src/samogitian-samoyed';
const dog = new SamogitianSamoyed(document.getElementById('stage')!, {
theme: 'auto', // follows <html data-theme>, <html class="dark"> and prefers-color-scheme
onSpeakStart: (text) => console.log(text),
});
dog.speak(LINES[dog.getMode()].lt, { lang: 'lt-LT' }); // Lithuanian
dog.attachAudio(document.querySelector('audio')!); // translator audio
dog.setTheme('dark'); // force warrior mode
| Method | What it does |
|---|---|
getMode() / setMode('friendly' | 'warrior') | Read or force the mode |
setTheme('auto' | 'light' | 'dark') | Theme source. Light gives friendly, dark gives warrior |
speak(text?, { lang, rate, pitch, voice }) | Speak with TTS and lip-sync. Returns a Promise |
stopSpeaking() | Cancel TTS |
attachAudio(el) / attachStream(stream, { monitor }) / detachAudio() | Lip-sync to audio |
setMouthOpen(v | null) | Manual mouth control. null releases it |
destroy() | Stop everything and remove the SVG |
crossOrigin="anonymous" on the media element. Without them the analyser hears silence.speak() or attachAudio() from a click or tap.npm install
npm run build # type-check, then bundle into dist/index.html
npm run preview # build and serve dist/
On every push to main, the included workflow (.github/workflows/pages.yml) builds the demo and publishes it to GitHub Pages. To turn it on, go to Settings → Pages → Source: GitHub Actions.
prompts/gemini-implementation-brief.md is a complete brief you can give Gemini, or any other coding model. It covers the rules, the spec, 15 known pitfalls, an acceptance checklist, and the full reference source.
MIT © Aivaras Bonckus