tandem-editor 0.11.0 → 0.11.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tandem-editor",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "description": "Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,3 +0,0 @@
1
- import{p as Ea,c as La,o as Oa,s,a as i,i as m,g as a,b as l,d as Ra,e as B,m as Da,u as F,f as Ba,h as d,j as Na,t as k,k as Z,l as w,n as C,q as x,r as c,v as Aa,w as Wa,C as Ma,x as aa,y as ja,z as Ua,A as $,B as ea,D as Va,E as Ka,F as Pa,G as qa}from"./index-vu_QxvyU.js";var Ga=c('<div data-testid="cowork-settings-loading" style="font-size: 12px; color: var(--tandem-fg-subtle);">Loading Cowork status...</div>'),Ha=c(`<div data-testid="cowork-settings-unsupported">Cowork integration is available on Windows in v0.8.0. macOS/Linux support tracked in #316 /
2
- #317.</div>`),Ja=c('<div data-testid="cowork-settings-undetected"> <a href="https://github.com/bloknayrb/tandem#cowork" target="_blank" rel="noreferrer" style="color: var(--tandem-accent);">Learn more</a></div>'),Qa=c(`<div data-testid="cowork-enable-confirm" role="dialog" style="border: 1px solid var(--tandem-warning-border); background: var(--tandem-warning-bg); color: var(--tandem-warning-fg-strong); border-radius: var(--tandem-r-3); padding: 8px 10px; font-size: 12px;"><div style="font-weight: 600; margin-bottom: 4px;">Confirm: Enable Cowork</div> <div style="margin-bottom: 8px;">Windows will prompt for admin permission to modify firewall rules. This is expected.
3
- Tandem will write plugin entries to every detected Cowork workspace.</div> <div style="display: flex; gap: 8px;"><button data-testid="cowork-enable-confirm-btn" type="button">Enable</button> <button data-testid="cowork-enable-cancel-btn" type="button">Cancel</button></div></div>`),Xa=c('<div data-testid="cowork-vethernet-cidr" style="font-size: 12px;">Detected VM subnet: <code> </code></div>'),Ya=c('<div><label data-testid="cowork-lan-ip-override"><input data-testid="cowork-lan-ip-override-checkbox" type="checkbox" style="accent-color: var(--tandem-accent);"/> <span>Use LAN IP instead of host.docker.internal</span></label> <div> </div></div>'),Za=c('<div style="font-size: 12px; color: var(--tandem-fg-subtle);">No Cowork workspaces detected yet.</div>'),ae=c('<a href="mailto:maintainers@tandem.invalid?subject=Cowork%20schema%20drift" style="color: var(--tandem-error-fg-strong); text-decoration: underline;">Report</a>'),ee=c('<div><span style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap;"> </span> <span style="font-weight: 600; white-space: nowrap;"> </span> <!></div>'),te=c('<div data-testid="cowork-workspace-table" style="display: flex; flex-direction: column; gap: 4px;"></div>'),re=c('<label data-testid="cowork-toggle"><input data-testid="cowork-toggle-checkbox" type="checkbox" style="accent-color: var(--tandem-accent);"/> <span>Enable Cowork integration</span></label> <div> </div> <!> <!> <!> <div><div> </div> <!> <button data-testid="cowork-rescan-btn" type="button">Re-scan workspaces</button></div>',1),oe=c('<div data-testid="cowork-settings-error" role="alert"> </div>'),ne=c('<div data-testid="cowork-inline-toast" role="alert"> </div>'),de=c('<div data-testid="cowork-settings" style="display: flex; flex-direction: column; gap: 10px;"><div>Cowork Integration</div> <!> <!> <!></div>');function se(ta,ra){Ea(ra,!0);const oa={success:{bg:"var(--tandem-success-bg)",fg:"var(--tandem-success-fg-strong)",border:"var(--tandem-success-border)"},warning:{bg:"var(--tandem-warning-bg)",fg:"var(--tandem-warning-fg-strong)",border:"var(--tandem-warning-border)"},error:{bg:"var(--tandem-error-bg)",fg:"var(--tandem-error-fg-strong)",border:"var(--tandem-error-border)"}},N="font-size: 11px; font-weight: 600; color: var(--tandem-fg); margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px;",A="font-size: 10px; color: var(--tandem-fg-subtle); margin-top: 4px;",W="border: 1px solid var(--tandem-info-border); background: var(--tandem-info-bg); color: var(--tandem-info-fg-strong); border-radius: var(--tandem-r-3); padding: 8px 10px; font-size: 12px;",M="border: 1px solid var(--tandem-error-border); background: var(--tandem-error-bg); color: var(--tandem-error-fg-strong); border-radius: var(--tandem-r-3); padding: 8px 10px; font-size: 12px;",na="padding: 4px 10px; font-size: 12px; border: 1px solid var(--tandem-accent); border-radius: var(--tandem-r-2); background: var(--tandem-accent); color: var(--tandem-accent-fg); cursor: pointer; font-weight: 600;",da="padding: 4px 10px; font-size: 12px; border: 1px solid var(--tandem-border-strong); border-radius: var(--tandem-r-2); background: var(--tandem-surface); color: var(--tandem-fg-muted); cursor: pointer;",u=La(()=>!0),{refetch:S}=u;let I=B(null),z=B(null),b=B(!1);const j=Da(Ma);Oa(()=>j.cancel());const E=F(()=>Ba(u.status));async function T(t,e){x(b,!0);try{const n=await Aa();await t(n),x(I,null)}catch(n){const _=n instanceof Error?n.message:String(n),y=Wa(_);x(I,`${e}: ${y}`)}finally{x(b,!1)}}async function ia(){await T(async t=>{await aa(t,!0),await S(),x(z,null)},"Failed to enable Cowork")}async function sa(){await T(async t=>{await aa(t,!1),await S()},"Failed to disable Cowork")}function la(){j.schedule(()=>{T(async t=>{await ja(t),await S()},"Re-scan failed")})}async function ca(t){await T(async e=>{await Pa(e,t),await S()},"Failed to update LAN-IP override")}function va(t){const e=ea(t),n=oa[qa(e)];return`display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 4px 6px; border: 1px solid ${n.border}; background: ${n.bg}; color: ${n.fg}; border-radius: var(--tandem-r-2); font-size: 11px;`}var U=de(),V=d(U);s(V,N);var K=i(V,2);{var pa=t=>{var e=Ga();l(t,e)},ga=t=>{var e=Ha();s(e,W),l(t,e)},ba=t=>{var e=Ja();s(e,W);var n=d(e);n.nodeValue="Cowork not detected on this system. ",l(t,e)},ua=t=>{const e=F(()=>u.status);var n=re(),_=Na(n),y=d(_),L=i(_,2);s(L,A);var wa=d(L),q=i(L,2);{var xa=o=>{var v=Qa(),p=i(d(v),4),r=d(p);s(r,na);var g=i(r,2);s(g,da),k(()=>{r.disabled=a(b),g.disabled=a(b)}),C("click",r,()=>void ia()),C("click",g,()=>{x(z,null)}),l(o,v)};m(q,o=>{a(z)==="enable"&&o(xa)})}var G=i(q,2);{var _a=o=>{var v=Xa(),p=i(d(v)),r=d(p);k(()=>w(r,a(e).vethernetCidr)),l(o,v)};m(G,o=>{a(e).vethernetCidr!==null&&o(_a)})}var H=i(G,2);{var ya=o=>{var v=Ya(),p=d(v),r=d(p),g=i(p,2);s(g,A);var D=d(g);k(()=>{s(p,`display: flex; align-items: center; gap: 8px; font-size: 12px; cursor: ${a(b)?"wait":"pointer"};`),Z(r,a(e).useLanIpOverride),r.disabled=a(b),w(D,`Fallback: ${a(e).lanIpFallback??""}`)}),C("change",r,f=>void ca(f.target.checked)),l(o,v)};m(H,o=>{a(e).lanIpFallback!==null&&o(ya)})}var ha=i(H,2),O=d(ha);s(O,N);var Ca=d(O),J=i(O,2);{var Sa=o=>{var v=Za();l(o,v)},Ia=o=>{var v=te();Ua(v,21,()=>a(e).workspaces,p=>`${p.workspaceId}/${p.vmId}`,(p,r)=>{const g=F(()=>ea(a(r))),D=F(()=>Va(a(g)));var f=ee(),Q=d(f),za=d(Q),X=i(Q,2),Ta=d(X),Fa=i(X,2);{var $a=h=>{var Y=ae();k(()=>$(Y,"data-testid",`cowork-workspace-report-${a(r).workspaceId}-${a(r).vmId}`)),l(h,Y)};m(Fa,h=>{a(g)==="schemaDrift"&&h($a)})}k(h=>{$(f,"data-testid",`cowork-workspace-row-${a(r).workspaceId}-${a(r).vmId}`),$(f,"data-status",a(g)),$(f,"title",a(r).failureDetail??a(r).path),s(f,h),w(za,`${a(r).workspaceId??""} / ${a(r).vmId??""}`),w(Ta,a(D))},[()=>va(a(r))]),l(p,f)}),l(o,v)};m(J,o=>{a(e).workspaces.length===0?o(Sa):o(Ia,-1)})}var R=i(J,2);s(R,"padding: 4px 10px; font-size: 12px; border: 1px solid var(--tandem-border-strong); border-radius: var(--tandem-r-2); background: var(--tandem-surface); color: var(--tandem-fg-muted); cursor: pointer; margin-top: 8px;"),k(()=>{s(_,`display: flex; align-items: center; gap: 8px; cursor: ${a(b)?"wait":"pointer"}; font-size: 12px; color: var(--tandem-fg); min-height: 24px;`),Z(y,a(e).enabled),y.disabled=a(b),w(wa,`Token provisioned: ${a(e).enabled?"yes":"no"}`),w(Ca,`Workspaces (${a(e).workspaces.length??""})`),R.disabled=a(b)}),C("change",y,o=>{o.target.checked?x(z,"enable"):sa()}),C("click",R,la),l(t,n)};m(K,t=>{u.loading?t(pa):a(E)==="unsupported"?t(ga,1):a(E)==="undetected"?t(ba,2):a(E)==="normal"&&u.status!==null&&t(ua,3)})}var P=i(K,2);{var fa=t=>{var e=oe();s(e,M);var n=d(e);k(()=>w(n,`Failed to load Cowork status: ${u.error??""}`)),l(t,e)};m(P,t=>{u.error&&!u.status&&t(fa)})}var ma=i(P,2);{var ka=t=>{var e=ne();s(e,M);var n=d(e);k(()=>w(n,a(I))),l(t,e)};m(ma,t=>{a(I)&&t(ka)})}l(ta,U),Ra()}Ka(["change","click"]);export{se as default};
@@ -1 +0,0 @@
1
- @keyframes tandem-typing-bounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-4px);opacity:1}}.chat-markdown.svelte-15oag3v h1,.chat-markdown.svelte-15oag3v h2,.chat-markdown.svelte-15oag3v h3{margin:.5em 0 .25em;font-weight:600}.chat-markdown.svelte-15oag3v p{margin:.25em 0}.chat-markdown.svelte-15oag3v code{font-family:monospace;font-size:.9em;background:var(--tandem-surface-muted);padding:1px 4px;border-radius:var(--tandem-r-2)}.chat-markdown.svelte-15oag3v li{margin-left:1.25em;list-style:disc}.chat-markdown.svelte-15oag3v strong{font-weight:600}.chat-markdown.svelte-15oag3v em{font-style:italic}@media(forced-colors:active){.annotation-type-badge.svelte-3ascys{border:1px solid ButtonText}}@keyframes svelte-l26r3u-tandem-annotation-flash{0%{background-color:color-mix(in srgb,var(--tandem-accent) 20%,transparent)}to{background-color:transparent}}.tandem-annotation-flash{animation:svelte-l26r3u-tandem-annotation-flash .8s ease-out}@media(prefers-reduced-motion:reduce){.tandem-annotation-flash{animation:none}}body.tandem-reduce-motion .tandem-annotation-flash{animation:none}.settings-dialog.svelte-fsutp8{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(900px,calc(100vw - 32px));height:min(680px,calc(100vh - 32px));background:var(--tandem-surface);color:var(--tandem-fg);border:1px solid var(--tandem-border);border-radius:var(--tandem-r-4);box-shadow:var(--tandem-shadow-3);z-index:9999;display:grid;grid-template-columns:188px minmax(0,1fr);outline:none;overflow:hidden}.settings-sidebar.svelte-fsutp8{display:flex;flex-direction:column;gap:var(--tandem-space-4);padding:var(--tandem-space-5) var(--tandem-space-3);border-right:1px solid var(--tandem-border);background:var(--tandem-surface-muted);overflow-y:auto}.settings-content.svelte-fsutp8{display:flex;flex-direction:column;min-width:0;min-height:0}@media(max-width:640px){.settings-dialog.svelte-fsutp8{grid-template-columns:1fr;grid-template-rows:minmax(auto,45%) 1fr}.settings-sidebar.svelte-fsutp8{border-right:none;border-bottom:1px solid var(--tandem-border);padding:var(--tandem-space-3)}}@keyframes tandem-toast-slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@media(forced-colors:active){.toast-badge.svelte-nsu1aw{border:1px solid ButtonText}}.docx-canvas.svelte-wm6yrp{background:var(--tandem-page-bg);overflow:visible;padding:var(--tandem-space-6) var(--tandem-space-4);min-height:100%;box-sizing:border-box}.docx-sheet.svelte-wm6yrp{position:relative;background:var(--tandem-page-paper);box-shadow:var(--tandem-page-shadow);max-width:816px;margin:0 auto;padding:var(--tandem-space-7) var(--tandem-space-6);box-sizing:border-box;min-height:1056px}.tandem-editor{color:var(--tandem-fg);font-size:var(--tandem-editor-font-size, 17px);line-height:1.65}.tandem-editor h1{font-family:var(--tandem-editor-font-family);font-size:2em;font-weight:600;margin:0 0 .5em;line-height:1.15}.tandem-editor h2{font-size:1.4em;font-weight:600;margin:1.6em 0 .4em;line-height:1.2}.tandem-editor h3{font-size:1.17em;font-weight:600;margin:1.2em 0 .4em}.tandem-editor p{margin:0 0 .9em}.tandem-editor ul,.tandem-editor ol{padding-left:1.5em}.tandem-editor table{border-collapse:collapse;width:100%;margin:1em 0}.tandem-editor td,.tandem-editor th{border:1px solid var(--tandem-border);padding:8px}.tandem-editor th{background:var(--tandem-surface-muted);font-weight:600}.tandem-editor blockquote{border-left:2px solid var(--tandem-border-strong);margin:1em 0;padding:2px 0 2px 1em;color:var(--tandem-fg-muted);font-style:italic}.tandem-editor code{font-family:var(--tandem-font-mono);font-size:.88em;background:var(--tandem-surface-sunk);border:1px solid var(--tandem-border);border-radius:3px;padding:1px 5px}.collaboration-cursor__caret{position:relative;border-left:2px solid;border-right:none;margin-left:-1px}.collaboration-cursor__label{position:absolute;top:-1.4em;left:-1px;font-size:12px;white-space:nowrap;padding:0 4px;border-radius:3px 3px 3px 0;color:var(--tandem-accent-fg)}.ProseMirror-focused{outline:none}.ProseMirror p.is-empty:before{content:attr(data-placeholder);color:var(--tandem-fg-subtle);pointer-events:none;float:left;height:0}.tandem-find-match{background:var(--tandem-highlight-yellow);border-radius:2px}.tandem-find-active{background:var(--tandem-warning-bg);outline:1px solid var(--tandem-warning);border-radius:2px}.tandem-highlight{cursor:pointer}.tandem-highlight:hover{filter:brightness(.95)}.tandem-comment{cursor:pointer}.tandem-comment:hover{border-bottom-style:solid}.tandem-suggestion,.tandem-note{cursor:pointer}.tandem-note:hover{border-bottom-style:solid}.tandem-editor .ProseMirror p,.tandem-editor .ProseMirror h1,.tandem-editor .ProseMirror h2,.tandem-editor .ProseMirror h3,.tandem-editor .ProseMirror h4,.tandem-editor .ProseMirror h5,.tandem-editor .ProseMirror h6{position:relative}.ProseMirror [data-tandem-author]{transition:color .2s,background .2s;border-radius:2px}.ProseMirror [data-tandem-author=user]{color:color-mix(in srgb,var(--tandem-author-user) 58%,var(--tandem-fg))}.ProseMirror [data-tandem-author=claude]{color:color-mix(in srgb,var(--tandem-author-claude) 64%,var(--tandem-fg))}.tandem-claude-focus{position:relative}.tandem-claude-focus:before{content:"";position:absolute;left:-24px;top:0;bottom:0;width:3px;background:var(--tandem-accent);border-radius:2px;animation:tandem-gutter-pulse 2s ease-in-out infinite}@keyframes tandem-gutter-pulse{0%,to{opacity:.4}50%{opacity:1}}.tandem-claude-cursor{position:relative;display:inline;border-left:2px solid var(--tandem-author-claude);margin-left:-1px;z-index:10;animation:tandem-claude-blink 1.2s step-end infinite}.tandem-claude-cursor-idle{opacity:.3;animation:none}.tandem-claude-cursor-label{position:absolute;top:-1.4em;left:-1px;font-size:11px;font-weight:500;white-space:nowrap;padding:0 4px;border-radius:3px 3px 3px 0;background:var(--tandem-author-claude);color:var(--tandem-accent-fg);pointer-events:none;z-index:11}@keyframes tandem-claude-blink{0%,to{opacity:1}50%{opacity:0}}.tandem-editor [data-tandem-author-block]:before{content:"";position:absolute;left:-14px;top:.45em;bottom:.45em;width:2px;border-radius:1px;transition:background .2s}.tandem-editor [data-tandem-author-block=user]:before{background:var(--tandem-author-user);opacity:.55}.tandem-editor [data-tandem-author-block=claude]:before{background:var(--tandem-author-claude);opacity:.55}.tandem-editor{font-family:var(--tandem-editor-font-family)}@media(forced-colors:active){button[aria-pressed=true].svelte-14q5edy{outline:2px solid ButtonText}}.title-bar.svelte-12l7ydf{display:flex;align-items:center;justify-content:space-between;height:32px;min-height:32px;background:var(--tandem-surface);border-bottom:1px solid var(--tandem-border);-webkit-user-select:none;user-select:none;flex-shrink:0}.title-bar-left.svelte-12l7ydf{display:flex;align-items:center;gap:var(--tandem-space-2);padding-left:var(--tandem-space-3);min-width:0;flex:1}.title-bar-title.svelte-12l7ydf{font-size:var(--tandem-text-sm);color:var(--tandem-fg-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.title-bar-dirty.svelte-12l7ydf{display:inline-block;width:6px;height:6px;border-radius:var(--tandem-r-circle);background:var(--tandem-warning);vertical-align:middle;margin-left:4px}.title-bar-chrome.svelte-12l7ydf{display:flex;align-items:center;gap:var(--tandem-space-1);padding:0 var(--tandem-space-2)}.title-bar-controls.svelte-12l7ydf{display:flex;height:100%}.title-bar-btn.svelte-12l7ydf{display:flex;align-items:center;justify-content:center;width:46px;height:100%;border:none;background:transparent;color:var(--tandem-fg-muted);cursor:pointer;transition:background .1s}.title-bar-btn.svelte-12l7ydf:hover{background:var(--tandem-surface-muted);color:var(--tandem-fg)}.title-bar-btn.svelte-12l7ydf:focus-visible{outline:2px solid var(--tandem-accent);outline-offset:-2px}.title-bar-close.svelte-12l7ydf:hover{background:var(--tandem-error);color:var(--tandem-error-fg)}@media(forced-colors:active){.title-bar.svelte-12l7ydf{background:ButtonFace;border-bottom:1px solid ButtonText;forced-color-adjust:auto}.title-bar-btn.svelte-12l7ydf{background:ButtonFace;color:ButtonText;border:none}.title-bar-btn.svelte-12l7ydf:hover,.title-bar-close.svelte-12l7ydf:hover{background:Highlight;color:HighlightText}}@keyframes tandem-status-pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes tandem-reconnect-pulse{0%,to{opacity:1}50%{opacity:.3}}@media(forced-colors:active){.status-dot.svelte-1esxubl,.claude-dot.svelte-1esxubl{outline:1px solid ButtonText;outline-offset:1px}}.new-tab-menu.svelte-7c4il0{position:fixed;top:0;left:0;min-width:260px;max-width:400px;background:var(--tandem-surface);border:1px solid var(--tandem-border);border-radius:var(--tandem-r-4);box-shadow:var(--tandem-shadow-4);z-index:var(--tandem-z-dropdown);overflow:hidden}.new-tab-menu-header.svelte-7c4il0{padding:6px 12px 4px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--tandem-fg-subtle)}.new-tab-menu-item.svelte-7c4il0{display:flex;align-items:center;gap:8px;width:100%;padding:6px 12px;border:none;background:transparent;cursor:pointer;text-align:left;color:var(--tandem-fg);font-size:13px}.new-tab-menu-item.svelte-7c4il0:hover{background:var(--tandem-surface-muted)}.new-tab-menu-action.svelte-7c4il0{color:var(--tandem-fg-muted)}.new-tab-menu-badge.svelte-7c4il0{font-size:10px;font-weight:700;font-family:var(--tandem-font-mono);color:var(--tandem-fg-muted);min-width:14px;text-align:center}.new-tab-menu-label.svelte-7c4il0{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.new-tab-menu-divider.svelte-7c4il0{height:1px;background:var(--tandem-border);margin:4px 0}.tab-scroll-hide{scrollbar-width:none;-ms-overflow-style:none}.tab-scroll-hide::-webkit-scrollbar{display:none}.error-boundary.svelte-1bcl6yi{padding:var(--tandem-space-6);background:var(--tandem-error-bg);border:1px solid var(--tandem-error-border);border-radius:var(--tandem-r-2);color:var(--tandem-fg)}.error-boundary.svelte-1bcl6yi h2:where(.svelte-1bcl6yi){color:var(--tandem-error-fg-strong)}.message.svelte-1bcl6yi{color:var(--tandem-fg-muted)}.detail.svelte-1bcl6yi{background:var(--tandem-surface-muted);padding:var(--tandem-space-4);border-radius:var(--tandem-r-2);font-size:var(--tandem-text-sm);overflow:auto;max-height:200px;color:var(--tandem-fg);border:1px solid var(--tandem-border);margin:0 0 var(--tandem-space-4)}.btn.svelte-1bcl6yi{padding:var(--tandem-space-2) var(--tandem-space-4);border-radius:var(--tandem-r-2);cursor:pointer}.btn-primary.svelte-1bcl6yi{margin-right:var(--tandem-space-2);border:1px solid var(--tandem-accent);background:var(--tandem-accent);color:var(--tandem-accent-fg)}.btn-secondary.svelte-1bcl6yi{border:1px solid var(--tandem-border-strong);background:var(--tandem-surface);color:var(--tandem-fg)}