meldivo 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/server/harnesses/claude.js +9 -0
- package/dist/server/harnesses/claude.js.map +1 -1
- package/dist/server/harnesses/opencode-voice-plugin.js +32 -0
- package/dist/server/harnesses/opencode-voice-plugin.js.map +1 -0
- package/dist/server/harnesses/opencode.js +127 -17
- package/dist/server/harnesses/opencode.js.map +1 -1
- package/dist/server/harnesses/pi-voice-extension.js +17 -0
- package/dist/server/harnesses/pi-voice-extension.js.map +1 -0
- package/dist/server/harnesses/pi.js +14 -1
- package/dist/server/harnesses/pi.js.map +1 -1
- package/dist/server/harnesses/voice-turn.js +49 -0
- package/dist/server/harnesses/voice-turn.js.map +1 -0
- package/dist/server/index.js +3 -1
- package/dist/server/index.js.map +1 -1
- package/dist/web/assets/index-ChgmFShS.js +80 -0
- package/dist/web/assets/{index-D6kH6Z3D.css → index-DqXNdnDD.css} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-BnaHg5f4.js +0 -80
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{color-scheme:dark;background:#050609;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;background:#050609}button{font:inherit}.voice-page{--color: 144 151 169;--level: 0;position:relative;display:grid;min-height:100vh;place-items:center;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 47%,rgb(var(--color) / .08),transparent 29%),#050609;transition:background .7s ease}.voice-page:before,.voice-page:after{position:absolute;z-index:-1;content:"";width:min(75vw,720px);aspect-ratio:1;border-radius:50%;border:1px solid rgb(var(--color) / .09);transition:border-color .5s ease}.voice-page:before{transform:scale(1.3) rotate(25deg)}.voice-page:after{transform:scale(.82) rotate(-20deg)}.voice-page[data-state=listening],.voice-page[data-state=hearing]{--color: 48 224 151}.voice-page[data-state=thinking]{--color: 173 139 255}.voice-page[data-state=running]{--color: 255 158 68}.voice-page[data-state=speaking]{--color: 70 154 255}.voice-page[data-state=muted]{--color: 95 104 119}.voice-page[data-state=error]{--color: 255 91 107}.voice-shape{position:relative;width:min(46vw,360px);min-width:220px;aspect-ratio:1;padding:0;border:0;border-radius:50%;cursor:pointer;background:transparent;-webkit-tap-highlight-color:transparent;outline:none}.voice-shape:focus-visible{outline:1px solid rgb(var(--color) / .85);outline-offset:20px}.voice-shape__halo,.voice-shape__ring,.voice-shape__core{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:42% 58% 62% 38%/48% 40% 60% 52%}.voice-shape__halo{top:-22%;right:-22%;bottom:-22%;left:-22%;opacity:calc(.15 + var(--level) * .35);background:radial-gradient(circle,rgb(var(--color) / .34),transparent 61%);filter:blur(28px);transform:scale(calc(1 + var(--level) * .25));transition:opacity .26s ease,transform .1s linear,background .5s ease}.voice-shape__ring{border:1px solid rgb(var(--color) / .65);box-shadow:inset 0 0 26px rgb(var(--color) / .11),0 0 calc(22px + var(--level) * 34px) rgb(var(--color) / calc(.11 + var(--level) * .27));transition:border-color .5s ease,box-shadow .16s ease}.voice-shape__ring--one{animation:orbit-one 10s linear infinite;transform:scale(calc(1 + var(--level) * .1))}.voice-shape__ring--two{top:12%;right:12%;bottom:12%;left:12%;opacity:.72;animation:orbit-two 7s linear infinite reverse;transform:scale(calc(1 + var(--level) * .17))}.voice-shape__core{top:27%;right:27%;bottom:27%;left:27%;background:radial-gradient(circle at 36% 31%,rgb(255 255 255 / .75),rgb(var(--color) / .84) 22%,rgb(var(--color) / .22) 61%,transparent 72%);box-shadow:0 0 calc(22px + var(--level) * 54px) rgb(var(--color) / calc(.25 + var(--level) * .45)),inset -10px -12px 25px #00000073;transform:scale(calc(.9 + var(--level) * .2));transition:transform 90ms linear,background .5s ease,box-shadow .15s ease;animation:breathe 4.2s ease-in-out infinite}.voice-page[data-state=hearing] .voice-shape__core{animation-duration:.72s}.voice-page[data-state=thinking] .voice-shape__ring{animation-duration:2.4s}.voice-page[data-state=running] .voice-shape__ring{animation-duration:1.6s}.voice-page[data-state=speaking] .voice-shape__core{animation-duration:.52s}.voice-page[data-state=muted] .voice-shape{opacity:.62}.voice-page[data-state=error] .voice-shape{animation:shake .35s ease-in-out 2}.voice-error{position:fixed;z-index:4;top:calc(50% + clamp(148px,27vw,208px));left:50%;display:flex;align-items:center;gap:10px;width:max-content;max-width:calc(100vw - 32px);margin:0;padding:7px 8px 7px 11px;transform:translate(-50%);border:1px solid rgb(255 178 183 / .28);border-radius:999px;background:#271016eb;box-shadow:0 8px 24px #00000047;color:#ffcbd0;font-size:12px;line-height:1.2}.voice-error span{overflow-wrap:anywhere}.voice-error__reconnect{flex:none;padding:5px 9px;border:1px solid rgb(255 178 183 / .32);border-radius:999px;color:inherit;background:#ffffff14;cursor:pointer;font-size:11px}.voice-error__reconnect:hover,.voice-error__reconnect:focus-visible{background:#ffffff2b;outline:none}.room-header{position:fixed;z-index:3;top:0;left:0;right:0;display:flex;align-items:center;gap:10px;padding:14px 16px;color:#e0e4eed9;font-size:13px}.room-header__back{flex:none;color:inherit;text-decoration:none;font-size:18px;line-height:1}.room-header__back:hover,.room-header__back:focus-visible{color:#fff;outline:none}.room-header__title{font-weight:600}.room-header__cwd{color:#d0d6e48c;font-size:11px}.room-status{position:fixed;z-index:3;top:88px;left:50%;margin:0;padding:5px 10px;transform:translate(-50%);border:1px solid rgb(255 255 255 / .12);border-radius:999px;background:#0d0f15cc;color:#d0d6e4d1;font-size:11px;white-space:nowrap}.voice-fallback-notice{top:112px}@keyframes orbit-one{to{rotate:1turn}}@keyframes orbit-two{to{rotate:1turn}}@keyframes breathe{50%{scale:1.08;filter:brightness(1.15)}}@keyframes shake{25%{translate:-7px}75%{translate:7px}}@media(prefers-reduced-motion:reduce){.voice-shape *,.voice-page:before,.voice-page:after{animation:none!important;transition-duration:.01ms!important}}.voice-context-menu,.voice-settings{position:fixed;z-index:5;border:1px solid rgb(255 255 255 / .14);border-radius:12px;background:#0d0f15f5;box-shadow:0 12px 36px #00000059;color:#f0f3fa;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.voice-context-menu{min-width:150px;padding:5px}.voice-context-menu button{width:100%;padding:9px 11px;border:0;border-radius:8px;color:inherit;background:transparent;cursor:pointer;text-align:left;font-size:13px}.voice-context-menu button:hover,.voice-context-menu button:focus-visible{background:#ffffff1a;outline:none}.voice-settings{top:50%;left:50%;width:min(390px,calc(100vw - 24px));max-height:min(720px,calc(100vh - 24px));overflow:auto;padding:16px;transform:translate(-50%,-50%)}.voice-settings__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.voice-settings h2{margin:0;font-size:15px;font-weight:600;letter-spacing:.01em}.voice-settings__close{width:26px;height:26px;padding:0;border:0;border-radius:7px;color:#e0e4eecc;background:transparent;cursor:pointer;font-size:21px;line-height:1}.voice-settings__close:hover,.voice-settings__close:focus-visible{background:#ffffff1a;outline:none}.voice-settings__label{display:block;margin-bottom:6px;color:#d0d6e4b3;font-size:11px}.voice-settings__choice{display:flex;gap:7px}.voice-settings select{min-width:0;flex:1;padding:8px 9px;border:1px solid rgb(255 255 255 / .16);border-radius:8px;color:inherit;background:#ffffff12;font-size:13px}.voice-settings select,.voice-settings option,.voice-settings optgroup{color:#f0f3fa;background-color:#0d0f15;color-scheme:dark}.voice-settings select:focus-visible{outline:1px solid rgb(var(--color) / .9);outline-offset:1px}.voice-settings__play{width:34px;padding:0;border:1px solid rgb(255 255 255 / .16);border-radius:8px;color:inherit;background:#ffffff12;cursor:pointer;font-size:12px}.voice-settings__play:hover:not(:disabled),.voice-settings__play:focus-visible:not(:disabled){background:#ffffff24;outline:none}.voice-settings button:disabled{cursor:default;opacity:.42}.voice-settings__current,.voice-settings__muted,.voice-settings__error,.voice-settings__notice{margin:9px 0 0;font-size:11px;line-height:1.4}.voice-settings__current,.voice-settings__muted{color:#d0d6e4a6}.voice-settings__error{color:#ffb2b7}.voice-settings__notice{color:#80e8bd}.voice-settings__actions{display:flex;gap:7px;margin-top:14px}.voice-settings__actions button{flex:1;padding:8px 9px;border:1px solid rgb(255 255 255 / .16);border-radius:8px;color:inherit;background:#ffffff14;cursor:pointer;font-size:11px}.voice-settings__actions button:first-child{border-color:rgb(var(--color) / .5);background:rgb(var(--color) / .17)}.voice-settings__actions button:hover:not(:disabled),.voice-settings__actions button:focus-visible:not(:disabled){background:#ffffff26;outline:none}.voice-settings__connection-fields{display:grid;gap:8px;padding-top:6px}.voice-settings__section-title{margin:7px 0 0;color:#d0d6e49e;font-size:10px;letter-spacing:.08em;text-transform:uppercase}.voice-settings__field{display:grid;gap:4px;color:#d0d6e4a6;font-size:10px}.voice-settings__field input,.voice-settings__field select{width:100%;min-width:0;padding:7px 8px;border:1px solid rgb(255 255 255 / .14);border-radius:7px;color:inherit;background:#ffffff0f;font-size:11px}.voice-settings__field-row{display:grid;grid-template-columns:1fr 1fr;gap:7px}.voice-settings__toggle{display:flex;align-items:center;gap:7px;color:#d0d6e4cc;font-size:11px}.voice-settings__toggle input{accent-color:rgb(var(--color))}.voice-settings__field input:focus-visible,.voice-settings__field select:focus-visible{outline:1px solid rgb(var(--color) / .9);outline-offset:1px}.voice-shape{touch-action:manipulation;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.voice-settings--advanced{width:min(500px,calc(100vw - 24px))}.voice-settings__back{margin:-4px 0 -4px -7px;padding:6px 7px;border:0;border-radius:7px;color:#e0e4eed1;background:transparent;cursor:pointer;font-size:12px}.voice-settings__back:hover,.voice-settings__back:focus-visible{color:#fff;background:#ffffff1a;outline:none}.voice-settings__availability{display:flex;align-items:center;gap:6px;margin:8px 0 0;color:#80e8bd;font-size:11px}.voice-settings__availability span{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.voice-settings__availability--checking{color:#d0d6e4a6}.voice-settings__availability--offline{color:#ffb2b7}.voice-settings__availability-note{margin:5px 0 0;color:#ffb2b7;font-size:11px;line-height:1.4}.voice-settings__advanced-link{width:100%;margin-top:15px;padding:10px 0 0;border:0;border-top:1px solid rgb(255 255 255 / .1);color:#e0e4eed1;background:transparent;cursor:pointer;font-size:12px;text-align:left}.voice-settings__advanced-link:hover,.voice-settings__advanced-link:focus-visible{color:#fff;outline:none}.voice-onboarding{position:fixed;z-index:8;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#0304079e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.voice-onboarding__card{width:min(360px,100%);padding:21px;border:1px solid rgb(255 255 255 / .16);border-radius:14px;background:#0d0f15fa;box-shadow:0 18px 48px #00000073;color:#f0f3fa;text-align:center}.voice-onboarding__card h2{margin:0;font-size:17px}.voice-onboarding__card p{margin:10px 0 18px;color:#d0d6e4c2;font-size:13px;line-height:1.45}.voice-onboarding__card button{min-width:90px;padding:8px 14px;border:1px solid rgb(var(--color) / .5);border-radius:8px;color:inherit;background:rgb(var(--color) / .17);cursor:pointer}.voice-onboarding__card button:hover,.voice-onboarding__card button:focus-visible{background:#ffffff26;outline:none}.auth-screen{display:grid;place-items:center;min-height:100vh;margin:0;padding:24px;color:#d0d6e4cc;font-size:14px;text-align:center;background:#050609}.auth-screen code{padding:2px 6px;border-radius:5px;background:#ffffff14;font-size:13px}.voice-health{position:fixed;z-index:3;top:56px;left:50%;margin:0;padding:5px 10px;transform:translate(-50%);border:1px solid rgb(255 205 123 / .3);border-radius:999px;background:#2a1f0dd1;color:#ffeec7;font-size:11px;white-space:nowrap}.hub-page{min-height:100vh;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) 20px 64px;max-width:760px;overflow-x:clip;color:#f0f3fa;background:#050609}.hub-header{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:24px}.hub-header h1{margin:0;font-size:20px;font-weight:650}.hub-speech-status{margin:0;color:#80e8bd;font-size:12px}.hub-speech-status--warn{color:#ffcd7b}.hub-remote-button{margin-left:auto;padding:8px 13px;border:1px solid rgb(255 255 255 / .16);border-radius:999px;color:inherit;background:#ffffff12;cursor:pointer;font-size:12px}.hub-remote-button:hover,.hub-remote-button:focus-visible{background:#ffffff24;outline:none}.hub-empty{margin:18px 2px;color:#d0d6e499;font-size:13px;line-height:1.45}.hub-machines{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(148px,1fr);gap:10px;margin:0 -20px 18px;padding:2px 20px 6px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.hub-machines::-webkit-scrollbar{display:none}.hub-machine{display:flex;flex-direction:column;gap:4px;min-width:0;padding:12px 13px;border:1px solid rgb(255 255 255 / .12);border-radius:14px;color:inherit;background:#ffffff0a;cursor:pointer;text-align:left;scroll-snap-align:start;transition:background .15s,border-color .15s}.hub-machine:hover,.hub-machine:focus-visible{background:#ffffff14;outline:none}.hub-machine--selected{border-color:#469affbf;background:#469aff1f;box-shadow:0 0 0 1px #469aff59 inset}.hub-machine--offline{opacity:.55}.hub-machine__name{display:flex;align-items:center;gap:8px;overflow:hidden;font-size:14px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.hub-machine__name .hub-dot{margin-top:0}.hub-machine__meta{overflow:hidden;color:#d0d6e499;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.hub-panel{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.hub-search{position:sticky;z-index:2;top:0;display:flex;gap:8px;margin:0 -20px;padding:10px 20px;background:#050609eb;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.hub-search__input{flex:1;min-width:0;padding:10px 13px;border:1px solid rgb(255 255 255 / .14);border-radius:11px;color:inherit;background:#ffffff0d;font:inherit;font-size:16px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.hub-search__input:focus{border-color:#469affb3}.hub-search__input::placeholder{color:#d0d6e473}.hub-chip{flex:none;padding:7px 12px;border:1px solid rgb(255 255 255 / .14);border-radius:11px;color:#d0d6e4d9;background:#ffffff0a;cursor:pointer;font-size:12px;white-space:nowrap}.hub-chip--on{border-color:#469affbf;color:#f0f3fa;background:#469aff2e}.hub-chip:disabled{cursor:default;opacity:.4}.hub-sessions{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin:0;padding:0;list-style:none}.hub-session{display:flex;align-items:flex-start;gap:11px;width:100%;min-width:0;padding:11px 13px;border:1px solid rgb(255 255 255 / .08);border-radius:12px;color:inherit;background:#ffffff09;cursor:pointer;text-align:left}.hub-session:hover,.hub-session:focus-visible{background:#ffffff14;outline:none}.hub-session__body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.hub-session__title{display:-webkit-box;overflow:hidden;font-size:14px;font-weight:550;line-height:1.35;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.hub-session__meta{display:flex;align-items:center;gap:8px;min-width:0;color:#d0d6e48c;font-size:11px}.hub-session__badge{flex:none;padding:1px 7px;border-radius:999px;background:#ffffff14;color:#e0e4eecc}.hub-session__cwd{min-width:0;overflow:hidden;font-family:ui-monospace,monospace;text-overflow:ellipsis;white-space:nowrap}.hub-session__time{flex:none;margin-left:auto}.hub-session__hint{color:#80e8bdd9;font-size:11px}.hub-more{justify-self:center;margin-top:4px;padding:9px 16px;border:1px solid rgb(255 255 255 / .14);border-radius:999px;color:inherit;background:transparent;cursor:pointer;font-size:12px}.hub-more:hover,.hub-more:focus-visible{background:#ffffff14;outline:none}.hub-primary{flex:none;padding:0 16px;border:0;border-radius:11px;color:#fff;background:#2e7deb;cursor:pointer;font-size:14px;font-weight:600;white-space:nowrap}.hub-primary:hover:not(:disabled),.hub-primary:focus-visible:not(:disabled){background:#428efa;outline:none}.hub-primary:disabled{cursor:default;opacity:.45}.hub-newchat .hub-primary{padding:10px 18px}.hub-newchat{display:grid;gap:12px;padding:14px;border:1px solid rgb(70 154 255 / .35);border-radius:14px;background:#469aff12}.hub-newchat__row{display:grid;gap:7px}.hub-newchat__label{color:#d0d6e4a6;font-size:12px}.hub-newchat__actions{display:flex;justify-content:flex-end;gap:8px}.hub-newchat__actions .hub-more{margin:0}.hub-filters{display:grid;gap:8px}.hub-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.hub-chips::-webkit-scrollbar{display:none}.hub-chip__count{margin-left:3px;color:#d0d6e48c;font-size:11px}.hub-chip--on .hub-chip__count{color:#f0f3facc}.hub-selects{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}.hub-selects .hub-select:first-child{grid-column:1 / -1}.hub-select{min-width:0;padding:8px 10px;border:1px solid rgb(255 255 255 / .14);border-radius:10px;color:inherit;background:#ffffff0d;font:inherit;font-size:13px;text-overflow:ellipsis}.hub-select--wide{width:100%;font-size:16px}.hub-select option{color:#111}.hub-count{margin:0 2px;color:#d0d6e48c;font-size:12px}.hub-link{padding:0;border:0;color:#78b4ff;background:none;cursor:pointer;font:inherit;text-decoration:underline}.hub-folder{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}.hub-folder__title{display:flex;justify-content:space-between;gap:10px;margin:6px 2px 0;color:#d0d6e4b3;font-family:ui-monospace,monospace;font-size:12px;font-weight:500}.hub-folder__title span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hub-folder__count{flex:none;color:#d0d6e473}.hub-dot--online{background:#50d696;box-shadow:0 0 6px #50d69699}@media(min-width:720px){.hub-machines{grid-auto-flow:row;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));margin:0 0 18px;padding:2px 0 6px;overflow:visible}.hub-search{margin:0;padding:10px 0}.hub-selects{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr)}.hub-selects .hub-select:first-child{grid-column:auto}}.hub-muted{margin:0;color:#d0d6e48c;font-size:13px}.hub-error{margin:0 0 16px;padding:9px 12px;border:1px solid rgb(255 178 183 / .3);border-radius:10px;background:#271016b3;color:#ffcbd0;font-size:12px}.hub-dot{flex:none;width:8px;height:8px;margin-top:4px;border-radius:50%;background:#5f6877}.hub-dot--open{background:#469aff;box-shadow:0 0 6px #469affb3}.hub-dot--busy{background:#ff9e44;box-shadow:0 0 6px #ff9e44b3}.hub-dot--idle{background:#5f6877}.hub-remote{position:fixed;z-index:6;top:50%;left:50%;width:min(360px,calc(100vw - 24px));max-height:min(560px,calc(100vh - 24px));overflow:auto;padding:16px;transform:translate(-50%,-50%);border:1px solid rgb(255 255 255 / .14);border-radius:12px;background:#0d0f15fa;box-shadow:0 18px 48px #00000073;color:#f0f3fa}.hub-remote__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.hub-remote__header h2{margin:0;font-size:15px;font-weight:600}.hub-remote__close{width:26px;height:26px;padding:0;border:0;border-radius:7px;color:#e0e4eecc;background:transparent;cursor:pointer;font-size:21px;line-height:1}.hub-remote__close:hover,.hub-remote__close:focus-visible{background:#ffffff1a;outline:none}.hub-remote__options{display:grid;gap:7px;margin:0;padding:0;list-style:none}.hub-remote__options button{width:100%;padding:9px 11px;border:1px solid rgb(255 255 255 / .14);border-radius:8px;color:inherit;background:#ffffff0f;cursor:pointer;font-size:13px;text-align:left}.hub-remote__options button:hover:not(:disabled),.hub-remote__options button:focus-visible:not(:disabled){background:#ffffff1f;outline:none}.hub-remote__options button:disabled{cursor:default;opacity:.45}.hub-remote__active{display:grid;gap:10px;justify-items:center;text-align:center}.hub-remote__url{margin:0;padding:8px 10px;border-radius:8px;background:#ffffff0f;color:#d0d6e4d9;font-size:11px;word-break:break-all}.hub-remote__qr{width:180px;height:180px;border-radius:8px;background:#fff;padding:8px}.hub-remote__active button{width:100%;padding:9px 11px;border:1px solid rgb(255 178 183 / .3);border-radius:8px;color:#ffcbd0;background:#ffffff0f;cursor:pointer;font-size:12px}.hub-remote__active button:hover,.hub-remote__active button:focus-visible{background:#ffffff1f;outline:none}
|
|
1
|
+
:root{color-scheme:dark;background:#050609;font-family:Inter,ui-sans-serif,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;overflow-x:hidden;background:#050609}button{font:inherit}.voice-page{--color: 144 151 169;--level: 0;position:relative;display:grid;min-height:100vh;place-items:center;overflow:hidden;isolation:isolate;background:radial-gradient(circle at 50% 47%,rgb(var(--color) / .08),transparent 29%),#050609;transition:background .7s ease}.voice-page:before,.voice-page:after{position:absolute;z-index:-1;content:"";width:min(75vw,720px);aspect-ratio:1;border-radius:50%;border:1px solid rgb(var(--color) / .09);transition:border-color .5s ease}.voice-page:before{transform:scale(1.3) rotate(25deg)}.voice-page:after{transform:scale(.82) rotate(-20deg)}.voice-page[data-state=listening],.voice-page[data-state=hearing]{--color: 48 224 151}.voice-page[data-state=thinking]{--color: 173 139 255}.voice-page[data-state=running]{--color: 255 158 68}.voice-page[data-state=speaking]{--color: 70 154 255}.voice-page[data-state=muted]{--color: 95 104 119}.voice-page[data-state=error]{--color: 255 91 107}.voice-shape{position:relative;width:min(46vw,360px);min-width:220px;aspect-ratio:1;padding:0;border:0;border-radius:50%;cursor:pointer;background:transparent;-webkit-tap-highlight-color:transparent;outline:none}.voice-shape:focus-visible{outline:1px solid rgb(var(--color) / .85);outline-offset:20px}.voice-shape__halo,.voice-shape__ring,.voice-shape__core{position:absolute;top:0;right:0;bottom:0;left:0;display:block;border-radius:42% 58% 62% 38%/48% 40% 60% 52%}.voice-shape__halo{top:-22%;right:-22%;bottom:-22%;left:-22%;opacity:calc(.15 + var(--level) * .35);background:radial-gradient(circle,rgb(var(--color) / .34),transparent 61%);filter:blur(28px);transform:scale(calc(1 + var(--level) * .25));transition:opacity .26s ease,transform .1s linear,background .5s ease}.voice-shape__ring{border:1px solid rgb(var(--color) / .65);box-shadow:inset 0 0 26px rgb(var(--color) / .11),0 0 calc(22px + var(--level) * 34px) rgb(var(--color) / calc(.11 + var(--level) * .27));transition:border-color .5s ease,box-shadow .16s ease}.voice-shape__ring--one{animation:orbit-one 10s linear infinite;transform:scale(calc(1 + var(--level) * .1))}.voice-shape__ring--two{top:12%;right:12%;bottom:12%;left:12%;opacity:.72;animation:orbit-two 7s linear infinite reverse;transform:scale(calc(1 + var(--level) * .17))}.voice-shape__core{top:27%;right:27%;bottom:27%;left:27%;background:radial-gradient(circle at 36% 31%,rgb(255 255 255 / .75),rgb(var(--color) / .84) 22%,rgb(var(--color) / .22) 61%,transparent 72%);box-shadow:0 0 calc(22px + var(--level) * 54px) rgb(var(--color) / calc(.25 + var(--level) * .45)),inset -10px -12px 25px #00000073;transform:scale(calc(.9 + var(--level) * .2));transition:transform 90ms linear,background .5s ease,box-shadow .15s ease;animation:breathe 4.2s ease-in-out infinite}.voice-page[data-state=hearing] .voice-shape__core{animation-duration:.72s}.voice-page[data-state=thinking] .voice-shape__ring{animation-duration:2.4s}.voice-page[data-state=running] .voice-shape__ring{animation-duration:1.6s}.voice-page[data-state=speaking] .voice-shape__core{animation-duration:.52s}.voice-page[data-state=muted] .voice-shape{opacity:.62}.voice-page[data-state=error] .voice-shape{animation:shake .35s ease-in-out 2}.voice-error{position:fixed;z-index:4;top:calc(50% + clamp(148px,27vw,208px));left:50%;display:flex;align-items:center;gap:10px;width:max-content;max-width:calc(100vw - 32px);margin:0;padding:7px 8px 7px 11px;transform:translate(-50%);border:1px solid rgb(255 178 183 / .28);border-radius:999px;background:#271016eb;box-shadow:0 8px 24px #00000047;color:#ffcbd0;font-size:12px;line-height:1.2}.voice-error span{overflow-wrap:anywhere}.voice-error__reconnect{flex:none;padding:5px 9px;border:1px solid rgb(255 178 183 / .32);border-radius:999px;color:inherit;background:#ffffff14;cursor:pointer;font-size:11px}.voice-error__reconnect:hover,.voice-error__reconnect:focus-visible{background:#ffffff2b;outline:none}.room-header{position:fixed;z-index:3;top:0;left:0;right:0;display:flex;align-items:center;gap:10px;padding:14px 16px;color:#e0e4eed9;font-size:13px}.room-header__back{flex:none;color:inherit;text-decoration:none;font-size:18px;line-height:1}.room-header__back:hover,.room-header__back:focus-visible{color:#fff;outline:none}.room-header__title{font-weight:600}.room-header__cwd{color:#d0d6e48c;font-size:11px}.room-status{position:fixed;z-index:3;top:88px;left:50%;margin:0;padding:5px 10px;transform:translate(-50%);border:1px solid rgb(255 255 255 / .12);border-radius:999px;background:#0d0f15cc;color:#d0d6e4d1;font-size:11px;white-space:nowrap}.voice-fallback-notice{top:112px}@keyframes orbit-one{to{rotate:1turn}}@keyframes orbit-two{to{rotate:1turn}}@keyframes breathe{50%{scale:1.08;filter:brightness(1.15)}}@keyframes shake{25%{translate:-7px}75%{translate:7px}}@media(prefers-reduced-motion:reduce){.voice-shape *,.voice-page:before,.voice-page:after{animation:none!important;transition-duration:.01ms!important}}.voice-context-menu,.voice-settings{position:fixed;z-index:5;border:1px solid rgb(255 255 255 / .14);border-radius:12px;background:#0d0f15f5;box-shadow:0 12px 36px #00000059;color:#f0f3fa;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.voice-context-menu{min-width:150px;padding:5px}.voice-context-menu button{width:100%;padding:9px 11px;border:0;border-radius:8px;color:inherit;background:transparent;cursor:pointer;text-align:left;font-size:13px}.voice-context-menu button:hover,.voice-context-menu button:focus-visible{background:#ffffff1a;outline:none}.voice-settings{top:50%;left:50%;width:min(390px,calc(100vw - 24px));max-height:min(720px,calc(100vh - 24px));overflow:auto;padding:16px;transform:translate(-50%,-50%)}.voice-settings__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.voice-settings h2{margin:0;font-size:15px;font-weight:600;letter-spacing:.01em}.voice-settings__close{width:26px;height:26px;padding:0;border:0;border-radius:7px;color:#e0e4eecc;background:transparent;cursor:pointer;font-size:21px;line-height:1}.voice-settings__close:hover,.voice-settings__close:focus-visible{background:#ffffff1a;outline:none}.voice-settings__label{display:block;margin-bottom:6px;color:#d0d6e4b3;font-size:11px}.voice-settings__choice{display:flex;gap:7px}.voice-settings select{min-width:0;flex:1;padding:8px 9px;border:1px solid rgb(255 255 255 / .16);border-radius:8px;color:inherit;background:#ffffff12;font-size:13px}.voice-settings select,.voice-settings option,.voice-settings optgroup{color:#f0f3fa;background-color:#0d0f15;color-scheme:dark}.voice-settings select:focus-visible{outline:1px solid rgb(var(--color) / .9);outline-offset:1px}.voice-settings__play{width:34px;padding:0;border:1px solid rgb(255 255 255 / .16);border-radius:8px;color:inherit;background:#ffffff12;cursor:pointer;font-size:12px}.voice-settings__play:hover:not(:disabled),.voice-settings__play:focus-visible:not(:disabled){background:#ffffff24;outline:none}.voice-settings button:disabled{cursor:default;opacity:.42}.voice-settings__current,.voice-settings__muted,.voice-settings__error,.voice-settings__notice{margin:9px 0 0;font-size:11px;line-height:1.4}.voice-settings__current,.voice-settings__muted{color:#d0d6e4a6}.voice-settings__error{color:#ffb2b7}.voice-settings__notice{color:#80e8bd}.voice-settings__actions{display:flex;gap:7px;margin-top:14px}.voice-settings__actions button{flex:1;padding:8px 9px;border:1px solid rgb(255 255 255 / .16);border-radius:8px;color:inherit;background:#ffffff14;cursor:pointer;font-size:11px}.voice-settings__actions button:first-child{border-color:rgb(var(--color) / .5);background:rgb(var(--color) / .17)}.voice-settings__actions button:hover:not(:disabled),.voice-settings__actions button:focus-visible:not(:disabled){background:#ffffff26;outline:none}.voice-settings__connection-fields{display:grid;gap:8px;padding-top:6px}.voice-settings__section-title{margin:7px 0 0;color:#d0d6e49e;font-size:10px;letter-spacing:.08em;text-transform:uppercase}.voice-settings__field{display:grid;gap:4px;color:#d0d6e4a6;font-size:10px}.voice-settings__field input,.voice-settings__field select{width:100%;min-width:0;padding:7px 8px;border:1px solid rgb(255 255 255 / .14);border-radius:7px;color:inherit;background:#ffffff0f;font-size:11px}.voice-settings__field-row{display:grid;grid-template-columns:1fr 1fr;gap:7px}.voice-settings__toggle{display:flex;align-items:center;gap:7px;color:#d0d6e4cc;font-size:11px}.voice-settings__toggle input{accent-color:rgb(var(--color))}.voice-settings__field input:focus-visible,.voice-settings__field select:focus-visible{outline:1px solid rgb(var(--color) / .9);outline-offset:1px}.voice-shape{touch-action:manipulation;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.voice-settings--advanced{width:min(500px,calc(100vw - 24px))}.voice-settings__back{margin:-4px 0 -4px -7px;padding:6px 7px;border:0;border-radius:7px;color:#e0e4eed1;background:transparent;cursor:pointer;font-size:12px}.voice-settings__back:hover,.voice-settings__back:focus-visible{color:#fff;background:#ffffff1a;outline:none}.voice-settings__availability{display:flex;align-items:center;gap:6px;margin:8px 0 0;color:#80e8bd;font-size:11px}.voice-settings__availability span{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 8px currentColor}.voice-settings__availability--checking{color:#d0d6e4a6}.voice-settings__availability--offline{color:#ffb2b7}.voice-settings__availability-note{margin:5px 0 0;color:#ffb2b7;font-size:11px;line-height:1.4}.voice-settings__advanced-link{width:100%;margin-top:15px;padding:10px 0 0;border:0;border-top:1px solid rgb(255 255 255 / .1);color:#e0e4eed1;background:transparent;cursor:pointer;font-size:12px;text-align:left}.voice-settings__advanced-link:hover,.voice-settings__advanced-link:focus-visible{color:#fff;outline:none}.voice-onboarding{position:fixed;z-index:8;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#0304079e;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.voice-onboarding__card{width:min(360px,100%);padding:21px;border:1px solid rgb(255 255 255 / .16);border-radius:14px;background:#0d0f15fa;box-shadow:0 18px 48px #00000073;color:#f0f3fa;text-align:center}.voice-onboarding__card h2{margin:0;font-size:17px}.voice-onboarding__card p{margin:10px 0 18px;color:#d0d6e4c2;font-size:13px;line-height:1.45}.voice-onboarding__card button{min-width:90px;padding:8px 14px;border:1px solid rgb(var(--color) / .5);border-radius:8px;color:inherit;background:rgb(var(--color) / .17);cursor:pointer}.voice-onboarding__card button:hover,.voice-onboarding__card button:focus-visible{background:#ffffff26;outline:none}.auth-screen{display:grid;place-items:center;min-height:100vh;margin:0;padding:24px;color:#d0d6e4cc;font-size:14px;text-align:center;background:#050609}.auth-screen code{padding:2px 6px;border-radius:5px;background:#ffffff14;font-size:13px}.voice-health{position:fixed;z-index:3;top:56px;left:50%;margin:0;padding:5px 10px;transform:translate(-50%);border:1px solid rgb(255 205 123 / .3);border-radius:999px;background:#2a1f0dd1;color:#ffeec7;font-size:11px;white-space:nowrap}.hub-page{min-height:100vh;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) 20px 64px;max-width:760px;overflow-x:clip;color:#f0f3fa;background:#050609}.hub-header{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin-bottom:24px}.hub-header h1{margin:0;font-size:20px;font-weight:650}.hub-speech-status{margin:0;color:#80e8bd;font-size:12px}.hub-speech-status--warn{color:#ffcd7b}.hub-remote-button{margin-left:auto;padding:8px 13px;border:1px solid rgb(255 255 255 / .16);border-radius:999px;color:inherit;background:#ffffff12;cursor:pointer;font-size:12px}.hub-remote-button:hover,.hub-remote-button:focus-visible{background:#ffffff24;outline:none}.hub-empty{margin:18px 2px;color:#d0d6e499;font-size:13px;line-height:1.45}.hub-machines{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(148px,1fr);gap:10px;margin:0 -20px 18px;padding:2px 20px 6px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.hub-machines::-webkit-scrollbar{display:none}.hub-machine{display:flex;flex-direction:column;gap:4px;min-width:0;padding:12px 13px;border:1px solid rgb(255 255 255 / .12);border-radius:14px;color:inherit;background:#ffffff0a;cursor:pointer;text-align:left;scroll-snap-align:start;transition:background .15s,border-color .15s}.hub-machine:hover,.hub-machine:focus-visible{background:#ffffff14;outline:none}.hub-machine--selected{border-color:#469affbf;background:#469aff1f;box-shadow:0 0 0 1px #469aff59 inset}.hub-machine--offline{opacity:.55}.hub-machine__name{display:flex;align-items:center;gap:8px;overflow:hidden;font-size:14px;font-weight:620;text-overflow:ellipsis;white-space:nowrap}.hub-machine__name .hub-dot{margin-top:0}.hub-machine__meta{overflow:hidden;color:#d0d6e499;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.hub-panel{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.hub-search{position:sticky;z-index:2;top:0;display:flex;gap:8px;margin:0 -20px;padding:10px 20px;background:#050609eb;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}.hub-search__input{flex:1;min-width:0;padding:10px 13px;border:1px solid rgb(255 255 255 / .14);border-radius:11px;color:inherit;background:#ffffff0d;font:inherit;font-size:16px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.hub-search__input:focus{border-color:#469affb3}.hub-search__input::placeholder{color:#d0d6e473}.hub-chip{flex:none;padding:7px 12px;border:1px solid rgb(255 255 255 / .14);border-radius:11px;color:#d0d6e4d9;background:#ffffff0a;cursor:pointer;font-size:12px;white-space:nowrap}.hub-chip--on{border-color:#469affbf;color:#f0f3fa;background:#469aff2e}.hub-chip:disabled{cursor:default;opacity:.4}.hub-sessions{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;margin:0;padding:0;list-style:none}.hub-session{display:flex;align-items:flex-start;gap:11px;width:100%;min-width:0;padding:11px 13px;border:1px solid rgb(255 255 255 / .08);border-radius:12px;color:inherit;background:#ffffff09;cursor:pointer;text-align:left}.hub-session:hover,.hub-session:focus-visible{background:#ffffff14;outline:none}.hub-session__body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.hub-session__title{display:-webkit-box;overflow:hidden;font-size:14px;font-weight:550;line-height:1.35;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.hub-session__meta{display:flex;align-items:center;gap:8px;min-width:0;color:#d0d6e48c;font-size:11px}.hub-session__badge{flex:none;padding:1px 7px;border-radius:999px;background:#ffffff14;color:#e0e4eecc}.hub-session__cwd{min-width:0;overflow:hidden;font-family:ui-monospace,monospace;text-overflow:ellipsis;white-space:nowrap}.hub-session__time{flex:none;margin-left:auto}.hub-session__hint{color:#80e8bdd9;font-size:11px}.hub-more{justify-self:center;margin-top:4px;padding:9px 16px;border:1px solid rgb(255 255 255 / .14);border-radius:999px;color:inherit;background:transparent;cursor:pointer;font-size:12px}.hub-more:hover,.hub-more:focus-visible{background:#ffffff14;outline:none}.hub-primary{flex:none;padding:0 16px;border:0;border-radius:11px;color:#fff;background:#2e7deb;cursor:pointer;font-size:14px;font-weight:600;white-space:nowrap}.hub-primary:hover:not(:disabled),.hub-primary:focus-visible:not(:disabled){background:#428efa;outline:none}.hub-primary:disabled{cursor:default;opacity:.45}.hub-newchat .hub-primary{padding:10px 18px}.hub-newchat{display:grid;gap:12px;padding:14px;border:1px solid rgb(70 154 255 / .35);border-radius:14px;background:#469aff12}.hub-newchat__row{display:grid;gap:7px}.hub-newchat__label{color:#d0d6e4a6;font-size:12px}.hub-newchat__actions{display:flex;justify-content:flex-end;gap:8px}.hub-newchat__actions .hub-more{margin:0}.hub-filters{display:grid;gap:8px}.hub-chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}.hub-chips::-webkit-scrollbar{display:none}.hub-chip__count{margin-left:3px;color:#d0d6e48c;font-size:11px}.hub-chip--on .hub-chip__count{color:#f0f3facc}.hub-selects{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px}.hub-selects .hub-select:first-child{grid-column:1 / -1}.hub-select{min-width:0;padding:8px 10px;border:1px solid rgb(255 255 255 / .14);border-radius:10px;color:inherit;background:#ffffff0d;font:inherit;font-size:13px;text-overflow:ellipsis}.hub-select--wide{width:100%;font-size:16px}.hub-select option{color:#111}.hub-count{margin:0 2px;color:#d0d6e48c;font-size:12px}.hub-link{padding:0;border:0;color:#78b4ff;background:none;cursor:pointer;font:inherit;text-decoration:underline}.hub-folders{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.hub-folder{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0;padding:10px;border:1px solid rgb(255 255 255 / .1);border-radius:14px;background:#ffffff06}.hub-folder__list{max-height:min(22rem,55vh);overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding-right:2px}.hub-folder__search{min-width:0;padding:7px 11px;border:1px solid rgb(255 255 255 / .12);border-radius:9px;color:inherit;background:#ffffff0a;font:inherit;font-size:16px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.hub-folder__search:focus{border-color:#469affb3}.hub-folder__search::placeholder{color:#d0d6e466}.hub-folder__none{margin:2px 4px 4px;font-size:13px}.hub-folder__title{display:flex;justify-content:space-between;gap:10px;margin:0 4px;color:#d0d6e4b3;font-family:ui-monospace,monospace;font-size:12px;font-weight:500}.hub-folder__title span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hub-folder__count{flex:none;color:#d0d6e473}.hub-dot--online{background:#50d696;box-shadow:0 0 6px #50d69699}@media(min-width:720px){.hub-machines{grid-auto-flow:row;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));margin:0 0 18px;padding:2px 0 6px;overflow:visible}.hub-search{margin:0;padding:10px 0}.hub-selects{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr)}.hub-selects .hub-select:first-child{grid-column:auto}}.hub-muted{margin:0;color:#d0d6e48c;font-size:13px}.hub-error{margin:0 0 16px;padding:9px 12px;border:1px solid rgb(255 178 183 / .3);border-radius:10px;background:#271016b3;color:#ffcbd0;font-size:12px}.hub-dot{flex:none;width:8px;height:8px;margin-top:4px;border-radius:50%;background:#5f6877}.hub-dot--open{background:#469aff;box-shadow:0 0 6px #469affb3}.hub-dot--busy{background:#ff9e44;box-shadow:0 0 6px #ff9e44b3}.hub-dot--idle{background:#5f6877}.hub-remote{position:fixed;z-index:6;top:50%;left:50%;width:min(360px,calc(100vw - 24px));max-height:min(560px,calc(100vh - 24px));overflow:auto;padding:16px;transform:translate(-50%,-50%);border:1px solid rgb(255 255 255 / .14);border-radius:12px;background:#0d0f15fa;box-shadow:0 18px 48px #00000073;color:#f0f3fa}.hub-remote__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.hub-remote__header h2{margin:0;font-size:15px;font-weight:600}.hub-remote__close{width:26px;height:26px;padding:0;border:0;border-radius:7px;color:#e0e4eecc;background:transparent;cursor:pointer;font-size:21px;line-height:1}.hub-remote__close:hover,.hub-remote__close:focus-visible{background:#ffffff1a;outline:none}.hub-remote__options{display:grid;gap:7px;margin:0;padding:0;list-style:none}.hub-remote__options button{width:100%;padding:9px 11px;border:1px solid rgb(255 255 255 / .14);border-radius:8px;color:inherit;background:#ffffff0f;cursor:pointer;font-size:13px;text-align:left}.hub-remote__options button:hover:not(:disabled),.hub-remote__options button:focus-visible:not(:disabled){background:#ffffff1f;outline:none}.hub-remote__options button:disabled{cursor:default;opacity:.45}.hub-remote__active{display:grid;gap:10px;justify-items:center;text-align:center}.hub-remote__url{margin:0;padding:8px 10px;border-radius:8px;background:#ffffff0f;color:#d0d6e4d9;font-size:11px;word-break:break-all}.hub-remote__qr{width:180px;height:180px;border-radius:8px;background:#fff;padding:8px}.hub-remote__active button{width:100%;padding:9px 11px;border:1px solid rgb(255 178 183 / .3);border-radius:8px;color:#ffcbd0;background:#ffffff0f;cursor:pointer;font-size:12px}.hub-remote__active button:hover,.hub-remote__active button:focus-visible{background:#ffffff1f;outline:none}
|
package/dist/web/index.html
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
<link rel="icon" type="image/png" sizes="192x192" href="/logo-192.png" />
|
|
9
9
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png" />
|
|
10
10
|
<title>Meldivo</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-ChgmFShS.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DqXNdnDD.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body><div id="root"></div></body>
|
|
15
15
|
</html>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "meldivo",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Always-on local voice hub for coding agents: talk hands-free to your Pi, OpenCode, and Claude Code sessions from any browser or phone. Private on-device speech (Parakeet + Kokoro). No cloud speech APIs.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|