@godmode-team/godmode 1.8.2 → 1.8.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 +33 -12
- package/dist/godmode-ui/assets/{brain-tab-B1CYwAJ7.js → brain-tab-C2AbYrWP.js} +35 -23
- package/dist/godmode-ui/assets/{connections-tab-Cuv4eW0d.js → connections-tab-CwdK_wkL.js} +3 -3
- package/dist/godmode-ui/assets/ctrl-settings-nG144v_G.js +5 -0
- package/dist/godmode-ui/assets/{dashboards-tab-7hHXzWPp.js → dashboards-tab-CIED6Kpa.js} +1 -1
- package/dist/godmode-ui/assets/index-Btlae9Mn.css +1 -0
- package/dist/godmode-ui/assets/{index-DcYipcbm.js → index-DzcGsUUC.js} +287 -273
- package/dist/godmode-ui/assets/{second-brain-tab-DkFatLwl.js → second-brain-tab-BK7ARED2.js} +56 -48
- package/dist/godmode-ui/assets/{team-tab-Q3icI_Q-.js → team-tab-Dpl4pwK6.js} +1 -1
- package/dist/godmode-ui/assets/{today-tab-C6lIMzgY.js → today-tab-ReKlJGhF.js} +1 -1
- package/dist/godmode-ui/assets/{views-settings-B2UFEtoi.js → views-settings-TQFJxfo9.js} +1 -1
- package/dist/godmode-ui/assets/work-tab-BJF_wapn.js +1 -0
- package/dist/godmode-ui/assets/{workspaces-vzpIVgdl.js → workspaces-C4ZyofCq.js} +49 -49
- package/dist/godmode-ui/index.html +4 -4
- package/dist/index.js +407 -404
- package/dist/mcp-entry.js +256 -255
- package/dist/standalone.js +395 -392
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/skill-cards/screenpipe.md +23 -15
- package/dist/godmode-ui/assets/ctrl-settings-COfcdhha.js +0 -5
- package/dist/godmode-ui/assets/index-DmEmOd0w.css +0 -1
- package/dist/godmode-ui/assets/work-tab-DwU559Bx.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as
|
|
1
|
+
import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as z}from"./ctrl-settings-nG144v_G.js";function le(e){return!Number.isFinite(e)||e<=0?"0 B":e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}function G(e){switch(e){case"markdown":return"📄";case"html":return"🌐";case"image":return"🖼️";case"json":return"🧩";case"folder":return"📁";default:return"📄"}}function se(e){return e==="running"?"ws-session-dot ws-session-dot--running":e==="blocked"?"ws-session-dot ws-session-dot--blocked":"ws-session-dot ws-session-dot--complete"}function oe(e){return`ws-task-priority ws-task-priority--${e}`}function re(e){return e==="high"?"High":e==="low"?"Low":"Med"}function ce(e){if(!e)return"";const t=z();return e===t?"Today":e<t?`Overdue (${e})`:e}function pe(e){if(!e)return"ws-task-due";const t=z();return e<t?"ws-task-due ws-task-due--overdue":e===t?"ws-task-due ws-task-due--today":"ws-task-due"}function Q(e,t="due"){const s={high:0,medium:1,low:2};return[...e].sort((n,i)=>{if(t==="priority"){const l=s[n.priority]-s[i.priority];return l!==0?l:n.dueDate&&i.dueDate?n.dueDate.localeCompare(i.dueDate):n.dueDate&&!i.dueDate?-1:!n.dueDate&&i.dueDate?1:0}if(t==="newest")return(i.createdAt||"").localeCompare(n.createdAt||"");if(n.dueDate&&i.dueDate){const l=n.dueDate.localeCompare(i.dueDate);if(l!==0)return l}else{if(n.dueDate&&!i.dueDate)return-1;if(!n.dueDate&&i.dueDate)return 1}return s[n.priority]-s[i.priority]})}function ae(e,t,s,n,i,l,r){const p=e.status==="complete";return n===e.id?a`
|
|
2
2
|
<form
|
|
3
3
|
class="ws-list-row ws-task-row ws-task-edit-row"
|
|
4
4
|
aria-label="Edit task: ${e.title}"
|
|
@@ -41,8 +41,8 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
41
41
|
title="Click to edit"
|
|
42
42
|
>${e.title}</span>
|
|
43
43
|
${e.briefSection?a`<span class="ws-task-section">${e.briefSection}</span>`:c}
|
|
44
|
-
<span class=${
|
|
45
|
-
${e.dueDate?a`<span class=${
|
|
44
|
+
<span class=${oe(e.priority)}>${re(e.priority)}</span>
|
|
45
|
+
${e.dueDate?a`<span class=${pe(e.dueDate)}>${ce(e.dueDate)}</span>`:c}
|
|
46
46
|
${!p&&e.queueStatus?.status==="processing"?a`<span class="ws-task-agent-status ws-task-agent-status--processing" aria-live="polite">
|
|
47
47
|
<span class="ws-task-agent-dot"></span>
|
|
48
48
|
${e.queueStatus.roleName} working...
|
|
@@ -115,8 +115,8 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
115
115
|
>${e.title}</span>
|
|
116
116
|
${e.project?a`<span class="ws-task-project">${e.project}</span>`:c}
|
|
117
117
|
${e.briefSection?a`<span class="ws-task-section">${e.briefSection}</span>`:c}
|
|
118
|
-
<span class=${
|
|
119
|
-
${e.dueDate?a`<span class=${
|
|
118
|
+
<span class=${oe(e.priority)}>${re(e.priority)}</span>
|
|
119
|
+
${e.dueDate?a`<span class=${pe(e.dueDate)}>${ce(e.dueDate)}</span>`:c}
|
|
120
120
|
${!p&&e.queueStatus?.status==="processing"?a`<span class="ws-task-agent-status ws-task-agent-status--processing" aria-live="polite">
|
|
121
121
|
<span class="ws-task-agent-dot"></span>
|
|
122
122
|
${e.queueStatus.roleName} working...
|
|
@@ -145,16 +145,16 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
145
145
|
aria-label="Start task: ${e.title}"
|
|
146
146
|
>Start</button>`:c}
|
|
147
147
|
</div>
|
|
148
|
-
`}function be(e,t){return e.trim()?t.toLowerCase().includes(e.trim().toLowerCase()):!0}function
|
|
148
|
+
`}function be(e,t){return e.trim()?t.toLowerCase().includes(e.trim().toLowerCase()):!0}function ne(e,t){if(!e.trim())return t;const s=e.trim().toLowerCase();return t.filter(n=>n.name.toLowerCase().includes(s)||n.path.toLowerCase().includes(s)||n.type.toLowerCase().includes(s)||(n.searchText??"").toLowerCase().includes(s))}function ie(e,t){if(!e.trim())return t;const s=e.trim().toLowerCase();return t.filter(n=>n.title.toLowerCase().includes(s)||n.key.toLowerCase().includes(s))}function de(e,t){if(!e.trim())return t;const s=e.trim().toLowerCase();return t.reduce((n,i)=>{if(i.type==="file")(i.name.toLowerCase().includes(s)||i.path.toLowerCase().includes(s))&&n.push(i);else{const l=de(e,i.children??[]);l.length>0&&n.push({...i,children:l})}return n},[])}function ue(e){let t=0;for(const s of e)s.type==="file"?t++:s.children&&(t+=ue(s.children));return t}const ke=10;function fe(e){if(!e.searchText)return null;const t=e.searchText.trim();if(!t)return null;const s=t.match(/#+ (.+?)(?:\s#|$)/);return s?s[1].trim().slice(0,120):(t.startsWith("---")?t.replace(/^---.*?---\s*/s,""):t).slice(0,120)||null}function he(e,t=ke){return[...e].sort((s,n)=>n.modified.getTime()-s.modified.getTime()).slice(0,t)}function we(e,t,s){if(e.type==="file"){const r=s.pinnedPaths.has(e.path);return a`
|
|
149
149
|
<div class="ws-folder-file-row" role="listitem" style="padding-left: ${12+t*16}px">
|
|
150
150
|
<button
|
|
151
151
|
class="ws-folder-file"
|
|
152
152
|
aria-label="Open file: ${e.name}"
|
|
153
153
|
@click=${()=>s.onItemClick?.({path:e.path,name:e.name,type:e.fileType??"text",size:e.size??0,modified:e.modified??new Date})}
|
|
154
154
|
>
|
|
155
|
-
<span class="ws-list-icon" aria-hidden="true">${
|
|
155
|
+
<span class="ws-list-icon" aria-hidden="true">${G(e.fileType??"text")}</span>
|
|
156
156
|
<span class="ws-list-title">${e.name}</span>
|
|
157
|
-
${e.size!=null?a`<span class="ws-list-meta">${
|
|
157
|
+
${e.size!=null?a`<span class="ws-list-meta">${le(e.size)}</span>`:c}
|
|
158
158
|
${e.modified?a`<span class="ws-list-meta">${P(e.modified.getTime())}</span>`:c}
|
|
159
159
|
</button>
|
|
160
160
|
<button
|
|
@@ -166,7 +166,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
166
166
|
${r?"Unpin":"Pin"}
|
|
167
167
|
</button>
|
|
168
168
|
</div>
|
|
169
|
-
`}const n=s.expandedFolders.has(e.path),i=e.children??[],l=
|
|
169
|
+
`}const n=s.expandedFolders.has(e.path),i=e.children??[],l=ue(i);return a`
|
|
170
170
|
<div class="ws-folder-node" role="listitem">
|
|
171
171
|
<button
|
|
172
172
|
class="ws-folder-header"
|
|
@@ -182,7 +182,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
182
182
|
</button>
|
|
183
183
|
${n?a`
|
|
184
184
|
<div class="ws-folder-children">
|
|
185
|
-
${i.map(r=>
|
|
185
|
+
${i.map(r=>we(r,t+1,s))}
|
|
186
186
|
</div>
|
|
187
187
|
`:c}
|
|
188
188
|
</div>
|
|
@@ -215,12 +215,12 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
215
215
|
@click=${n=>{n.stopPropagation(),confirm(`Delete workspace "${e.name}"? This removes it from your list but does not delete any files.`)&&s(e)}}
|
|
216
216
|
>×</button>`:c}
|
|
217
217
|
</div>
|
|
218
|
-
`}function
|
|
218
|
+
`}function V(e){const{workspaceId:t,entry:s,pinned:n,onOpen:i,onPinToggle:l}=e;return a`
|
|
219
219
|
<div class="ws-list-row" role="listitem">
|
|
220
220
|
<button class="ws-list-main" @click=${()=>i?.(s)} aria-label="Open file: ${s.name}">
|
|
221
|
-
<span class="ws-list-icon" aria-hidden="true">${
|
|
221
|
+
<span class="ws-list-icon" aria-hidden="true">${G(s.type)}</span>
|
|
222
222
|
<span class="ws-list-title">${s.name}</span>
|
|
223
|
-
<span class="ws-list-meta">${
|
|
223
|
+
<span class="ws-list-meta">${le(s.size)}</span>
|
|
224
224
|
<span class="ws-list-meta">${P(s.modified.getTime())}</span>
|
|
225
225
|
</button>
|
|
226
226
|
<button
|
|
@@ -235,7 +235,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
235
235
|
`}function ge(e){const{workspaceId:t,entry:s,pinned:n,onOpen:i,onPinToggle:l}=e,r=fe(s);return a`
|
|
236
236
|
<div class="ws-list-row" role="listitem">
|
|
237
237
|
<button class="ws-list-main" @click=${()=>i?.(s)} aria-label="Open file: ${s.name}">
|
|
238
|
-
<span class="ws-list-icon" aria-hidden="true">${
|
|
238
|
+
<span class="ws-list-icon" aria-hidden="true">${G(s.type)}</span>
|
|
239
239
|
<span class="ws-list-title">${s.name}</span>
|
|
240
240
|
<span class="ws-list-meta">${P(s.modified.getTime())}</span>
|
|
241
241
|
${r?a`<span class="ws-list-desc">${r}</span>`:c}
|
|
@@ -295,7 +295,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
295
295
|
`)}
|
|
296
296
|
</div>
|
|
297
297
|
</div>
|
|
298
|
-
`}function Se(e){const{workspace:t,itemSearchQuery:s,expandedFolders:n=new Set,showCompletedTasks:i=!1,onItemSearch:l,onBack:r,onItemClick:p,onSessionClick:$,onPinToggle:d,onPinSessionToggle:m,onToggleFolder:u,onToggleTaskComplete:k,onCreateTask:b,onToggleCompletedTasks:f,onStartTask:D,
|
|
298
|
+
`}function Se(e){const{workspace:t,itemSearchQuery:s,expandedFolders:n=new Set,showCompletedTasks:i=!1,onItemSearch:l,onBack:r,onItemClick:p,onSessionClick:$,onPinToggle:d,onPinSessionToggle:m,onToggleFolder:u,onToggleTaskComplete:k,onCreateTask:b,onToggleCompletedTasks:f,onStartTask:D,onViewTaskOutput:h,editingTaskId:y,onEditTask:w,onUpdateTask:v,onBatchPushToDrive:F}=e,x=ne(s,t.pinned).toSorted((o,C)=>C.modified.getTime()-o.modified.getTime()),S=ie(s,t.pinnedSessions),T=ne(s,t.outputs).filter(o=>!t.pinned.some(C=>C.path===o.path)),A=(t.folderTree?.length??0)>0,L=A?de(s,t.folderTree):[],O=ie(s,t.sessions),B=new Set(t.pinnedSessions.map(o=>o.key)),R=new Set(t.pinned.map(o=>o.path)),I=s.trim().length>0,N=x.length>0||S.length>0,M=O.length>0||t.sessions.length===0||I,_=he(t.outputs),U=_.length>0&&!I,q={expandedFolders:n,pinnedPaths:R,workspaceId:t.id,onToggleFolder:u,onItemClick:p,onPinToggle:d};return a`
|
|
299
299
|
<div class="workspaces-container" role="region" aria-label="Workspace: ${t.name}">
|
|
300
300
|
<div class="workspaces-header">
|
|
301
301
|
<div class="workspaces-title">
|
|
@@ -326,17 +326,17 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
326
326
|
<div class="workspace-content">
|
|
327
327
|
${e.browsePath!=null?Te(e):c}
|
|
328
328
|
|
|
329
|
-
${
|
|
329
|
+
${N?a`
|
|
330
330
|
<section class="ws-section" aria-label="Pinned items">
|
|
331
331
|
<div class="ws-section__header">
|
|
332
332
|
<h3>Pinned</h3>
|
|
333
|
-
<span>${
|
|
333
|
+
<span>${x.length+S.length}</span>
|
|
334
334
|
</div>
|
|
335
335
|
<div class="ws-list" role="list" aria-label="Pinned items list">
|
|
336
|
-
${
|
|
336
|
+
${S.map(o=>a`
|
|
337
337
|
<div class="ws-list-row" role="listitem">
|
|
338
338
|
<button class="ws-list-main" @click=${()=>$?.(o)} aria-label="Open session: ${o.title}">
|
|
339
|
-
<span class=${
|
|
339
|
+
<span class=${se(o.status)} aria-label="Status: ${o.status}"></span>
|
|
340
340
|
<span class="ws-list-title">${o.title}</span>
|
|
341
341
|
<span class="ws-list-meta">${P(o.created.getTime())}</span>
|
|
342
342
|
</button>
|
|
@@ -350,21 +350,21 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
350
350
|
</button>
|
|
351
351
|
</div>
|
|
352
352
|
`)}
|
|
353
|
-
${
|
|
353
|
+
${x.map(o=>V({workspaceId:t.id,entry:o,pinned:!0,onOpen:p,onPinToggle:d}))}
|
|
354
354
|
</div>
|
|
355
355
|
</section>
|
|
356
356
|
`:c}
|
|
357
357
|
|
|
358
|
-
${Fe({tasks:t.tasks??[],workspaceName:t.name,showCompleted:i,onToggleTaskComplete:k,onCreateTask:b,onToggleCompletedTasks:f,onStartTask:D,onViewTaskOutput,editingTaskId:
|
|
358
|
+
${Fe({tasks:t.tasks??[],workspaceName:t.name,showCompleted:i,onToggleTaskComplete:k,onCreateTask:b,onToggleCompletedTasks:f,onStartTask:D,onViewTaskOutput:h,editingTaskId:y,onEditTask:w,onUpdateTask:v})}
|
|
359
359
|
|
|
360
|
-
${
|
|
360
|
+
${U?a`
|
|
361
361
|
<section class="ws-section" aria-label="Recent files">
|
|
362
362
|
<div class="ws-section__header">
|
|
363
363
|
<h3>Recent</h3>
|
|
364
|
-
<span>${
|
|
364
|
+
<span>${_.length}</span>
|
|
365
365
|
</div>
|
|
366
366
|
<div class="ws-list" role="list" aria-label="Recent files list">
|
|
367
|
-
${
|
|
367
|
+
${_.map(o=>ge({workspaceId:t.id,entry:o,pinned:R.has(o.path),onOpen:p,onPinToggle:d}))}
|
|
368
368
|
</div>
|
|
369
369
|
</section>
|
|
370
370
|
`:c}
|
|
@@ -372,19 +372,19 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
372
372
|
<section class="ws-section" aria-label="Artifacts">
|
|
373
373
|
<div class="ws-section__header">
|
|
374
374
|
<h3>Artifacts</h3>
|
|
375
|
-
<span>${
|
|
376
|
-
${
|
|
375
|
+
<span>${A?L.length:T.length}</span>
|
|
376
|
+
${F&&T.length>0?a`<button class="ws-export-drive-btn" aria-label="Export all artifacts to Google Drive" @click=${()=>{const o=T.map(C=>C.path);F(o)}}>Export to Drive</button>`:c}
|
|
377
377
|
</div>
|
|
378
378
|
<div class="ws-list ws-list--scroll" role="list" aria-label="Artifacts list">
|
|
379
|
-
${
|
|
379
|
+
${A?L.length===0?a`<div class="ws-empty">
|
|
380
380
|
<span class="ws-empty-hint">No artifacts yet. Ask your ally to create a document, plan, or analysis — it'll appear here.</span>
|
|
381
|
-
</div>`:L.map(o=>
|
|
381
|
+
</div>`:L.map(o=>we(o,0,q)):T.length===0?a`<div class="ws-empty">
|
|
382
382
|
<span class="ws-empty-hint">No artifacts yet. Ask your ally to create a document, plan, or analysis — it'll appear here.</span>
|
|
383
|
-
</div>`:
|
|
383
|
+
</div>`:T.map(o=>V({workspaceId:t.id,entry:o,pinned:!1,onOpen:p,onPinToggle:d}))}
|
|
384
384
|
</div>
|
|
385
385
|
</section>
|
|
386
386
|
|
|
387
|
-
${
|
|
387
|
+
${M?a`
|
|
388
388
|
<section class="ws-section" aria-label="Sessions">
|
|
389
389
|
<div class="ws-section__header">
|
|
390
390
|
<h3>Sessions</h3>
|
|
@@ -398,7 +398,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
398
398
|
`:O.map(o=>a`
|
|
399
399
|
<div class="ws-list-row" role="listitem">
|
|
400
400
|
<button class="ws-list-main ws-list-row--button" @click=${()=>$?.(o)} aria-label="Open session: ${o.title}">
|
|
401
|
-
<span class=${
|
|
401
|
+
<span class=${se(o.status)} aria-label="Status: ${o.status}"></span>
|
|
402
402
|
<span class="ws-list-title">${o.title}</span>
|
|
403
403
|
<span class="ws-list-meta">${P(o.created.getTime())}</span>
|
|
404
404
|
</button>
|
|
@@ -423,7 +423,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
423
423
|
<span>${t.memory.length}</span>
|
|
424
424
|
</div>
|
|
425
425
|
<div class="ws-list ws-list--scroll" role="list" aria-label="Memory files list">
|
|
426
|
-
${t.memory.map(o=>
|
|
426
|
+
${t.memory.map(o=>V({workspaceId:t.id,entry:o,pinned:R.has(o.path),onOpen:p,onPinToggle:d}))}
|
|
427
427
|
</div>
|
|
428
428
|
</section>
|
|
429
429
|
`:c}
|
|
@@ -533,7 +533,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
533
533
|
`)}
|
|
534
534
|
</div>
|
|
535
535
|
</section>
|
|
536
|
-
`}function Fe(e){const{tasks:t,workspaceName:s,showCompleted:n,onToggleTaskComplete:i,onCreateTask:l,onToggleCompletedTasks:r,onStartTask:p,onViewTaskOutput:$,editingTaskId:d,onEditTask:m,onUpdateTask:u}=e,k=
|
|
536
|
+
`}function Fe(e){const{tasks:t,workspaceName:s,showCompleted:n,onToggleTaskComplete:i,onCreateTask:l,onToggleCompletedTasks:r,onStartTask:p,onViewTaskOutput:$,editingTaskId:d,onEditTask:m,onUpdateTask:u}=e,k=Q(t.filter(f=>f.status==="pending")),b=Q(t.filter(f=>f.status==="complete"));return a`
|
|
537
537
|
<section class="ws-section" aria-label="Workspace tasks">
|
|
538
538
|
<div class="ws-section__header">
|
|
539
539
|
<h3>Tasks</h3>
|
|
@@ -541,19 +541,19 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
541
541
|
</div>
|
|
542
542
|
<div class="ws-list ws-list--scroll" role="list" aria-live="polite" aria-label="Task list">
|
|
543
543
|
${k.length===0&&b.length===0?a`<div class="ws-empty">No tasks</div>`:c}
|
|
544
|
-
${k.map(f=>
|
|
544
|
+
${k.map(f=>ae(f,i,p,d,m,u,$))}
|
|
545
545
|
${b.length>0?a`
|
|
546
546
|
<button class="ws-task-completed-toggle" aria-expanded=${n} @click=${()=>r?.()}>
|
|
547
547
|
${n?"Hide":"Show"} ${b.length} completed
|
|
548
548
|
</button>
|
|
549
|
-
${n?b.map(f=>
|
|
549
|
+
${n?b.map(f=>ae(f,i,p,d,m,u,$)):c}
|
|
550
550
|
`:c}
|
|
551
551
|
</div>
|
|
552
552
|
${l?a`
|
|
553
553
|
<form
|
|
554
554
|
class="ws-task-create-form"
|
|
555
555
|
aria-label="Create new task"
|
|
556
|
-
@submit=${f=>{f.preventDefault();const h=f.currentTarget.querySelector("input"),
|
|
556
|
+
@submit=${f=>{f.preventDefault();const h=f.currentTarget.querySelector("input"),y=h.value.trim();y&&(l(y,s),h.value="")}}
|
|
557
557
|
>
|
|
558
558
|
<input
|
|
559
559
|
type="text"
|
|
@@ -565,13 +565,13 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
565
565
|
</form>
|
|
566
566
|
`:c}
|
|
567
567
|
</section>
|
|
568
|
-
`}function Re(e){const{connected:t,workspaces:s,selectedWorkspace:n,searchQuery:i,itemSearchQuery:l,expandedFolders:r,loading:p,createLoading:$,error:d,allTasks:m=[],taskFilter:u="outstanding",taskSort:k="due",taskSearch:b="",showCompletedTasks:f=!1,editingTaskId:D,workspaceNames:h=[],onSearch:
|
|
568
|
+
`}function Re(e){const{connected:t,workspaces:s,selectedWorkspace:n,searchQuery:i,itemSearchQuery:l,expandedFolders:r,loading:p,createLoading:$,error:d,allTasks:m=[],taskFilter:u="outstanding",taskSort:k="due",taskSearch:b="",showCompletedTasks:f=!1,editingTaskId:D,workspaceNames:h=[],onSearch:y,onItemSearch:w,onSelectWorkspace:v,onBack:F,onItemClick:x,onSessionClick:S,onPinToggle:T,onPinSessionToggle:A,onCreateWorkspace:L,onDeleteWorkspace:O,onToggleFolder:B,onTeamSetup:R,onToggleTaskComplete:I,onCreateTask:N,onSetTaskFilter:M,onSetTaskSort:_,onSetTaskSearch:U,onToggleCompletedTasks:q,onStartTask:o,onViewTaskOutput:C,onEditTask:H,onUpdateTask:K}=e,W=s.filter(g=>be(i,`${g.name} ${g.path} ${g.type}`));return n?Se({workspace:n,itemSearchQuery:l??"",expandedFolders:r,showCompletedTasks:f,onItemSearch:w,onBack:F,onItemClick:x,onSessionClick:S,onPinToggle:T,onPinSessionToggle:A,onToggleFolder:B,onToggleTaskComplete:I,onCreateTask:N,onToggleCompletedTasks:q,onStartTask:o,onViewTaskOutput:C,editingTaskId:D,onEditTask:H,onUpdateTask:K,browsePath:e.browsePath,browseEntries:e.browseEntries,breadcrumbs:e.breadcrumbs,browseSearchQuery:e.browseSearchQuery,browseSearchResults:e.browseSearchResults,onBrowseFolder:e.onBrowseFolder,onBrowseSearch:e.onBrowseSearch,onBrowseBack:e.onBrowseBack,onCreateFolder:e.onCreateFolder,onBatchPushToDrive:e.onBatchPushToDrive,onPostToFeed:e.onPostToFeed,onLoadMoreFeed:e.onLoadMoreFeed,onTestConnection:e.onTestConnection,onRemoveConnection:e.onRemoveConnection}):a`
|
|
569
569
|
<div class="workspaces-container" role="region" aria-label="Workspaces">
|
|
570
570
|
<div class="workspaces-toolbar" role="toolbar" aria-label="Workspace controls">
|
|
571
571
|
<form
|
|
572
572
|
class="workspaces-create-form"
|
|
573
573
|
aria-label="Create new workspace"
|
|
574
|
-
@submit=${async
|
|
574
|
+
@submit=${async g=>{if(g.preventDefault(),$||!L)return;const X=g.currentTarget,E=new FormData(X),J=E.get("name"),Y=(typeof J=="string"?J:"").trim();if(!Y)return;const Z=E.get("type"),j=(typeof Z=="string"?Z:"project").trim().toLowerCase(),me=j==="team"||j==="personal"?j:"project",ee=E.get("path"),te=(typeof ee=="string"?ee:"").trim();await L({name:Y,type:me,...te?{path:te}:{}})!==!1&&X.reset()}}
|
|
575
575
|
>
|
|
576
576
|
<input
|
|
577
577
|
type="text"
|
|
@@ -608,18 +608,18 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
608
608
|
placeholder="Search workspaces..."
|
|
609
609
|
aria-label="Search workspaces"
|
|
610
610
|
.value=${i}
|
|
611
|
-
@input=${y
|
|
611
|
+
@input=${g=>y?.(g.target.value)}
|
|
612
612
|
/>
|
|
613
|
-
<span class="workspaces-count" aria-live="polite">${
|
|
613
|
+
<span class="workspaces-count" aria-live="polite">${W.length} workspaces</span>
|
|
614
614
|
<span class="workspaces-status ${t?"online":"offline"}" role="status">
|
|
615
615
|
${t?"Online":"Offline"}
|
|
616
616
|
</span>
|
|
617
|
-
${
|
|
617
|
+
${R?a`<button class="ws-team-setup-btn" aria-label="Start team workspace setup" @click=${()=>R()}>Team Setup</button>`:c}
|
|
618
618
|
</div>
|
|
619
619
|
|
|
620
620
|
${d?a`<div class="callout danger" role="alert" style="margin: 16px;">${d}</div>`:c}
|
|
621
621
|
|
|
622
|
-
${p?a`
|
|
622
|
+
${p&&W.length===0?a`
|
|
623
623
|
<div class="workspaces-loading" role="status" aria-label="Loading workspaces">
|
|
624
624
|
<div class="spinner" aria-hidden="true"></div>
|
|
625
625
|
<span>Loading workspaces...</span>
|
|
@@ -627,20 +627,20 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
627
627
|
`:a`
|
|
628
628
|
<div class="workspaces-body">
|
|
629
629
|
<div class="workspace-grid" role="list" aria-label="Workspace list">
|
|
630
|
-
${
|
|
630
|
+
${W.length===0?a`
|
|
631
631
|
<div class="workspaces-empty">
|
|
632
632
|
<span class="workspaces-empty-icon" aria-hidden="true">${t?"📭":"🔌"}</span>
|
|
633
633
|
<span>${t?"No workspaces yet":"Connect to gateway to see workspaces"}</span>
|
|
634
634
|
${t?a`<span class="workspaces-empty-hint">Workspaces organize your projects. Ask your ally to create one, or start a focused session in chat.</span>`:c}
|
|
635
635
|
</div>
|
|
636
|
-
`:
|
|
636
|
+
`:W.map(g=>ve(g,v,O))}
|
|
637
637
|
</div>
|
|
638
638
|
|
|
639
|
-
${xe({tasks:m,taskFilter:u,taskSort:k,taskSearch:b,onToggleTaskComplete:
|
|
639
|
+
${xe({tasks:m,taskFilter:u,taskSort:k,taskSearch:b,onToggleTaskComplete:I,onSetTaskFilter:M,onSetTaskSort:_,onSetTaskSearch:U,onCreateTask:N,workspaceNames:h,onStartTask:o,editingTaskId:D,onEditTask:H,onUpdateTask:K,onViewTaskOutput:C})}
|
|
640
640
|
</div>
|
|
641
641
|
`}
|
|
642
642
|
</div>
|
|
643
|
-
`}function xe(e){const{tasks:t,taskFilter:s,taskSort:n="due",taskSearch:i="",onToggleTaskComplete:l,onSetTaskFilter:r,onSetTaskSort:p,onSetTaskSearch:$,onCreateTask:d,workspaceNames:m=[],onStartTask:u,editingTaskId:k,onEditTask:b,onUpdateTask:f,onViewTaskOutput:D}=e;if(t.length===0&&!d)return a``;let h;if(s==="outstanding")h=t.filter(w=>w.status==="pending");else if(s==="today"){const w=
|
|
643
|
+
`}function xe(e){const{tasks:t,taskFilter:s,taskSort:n="due",taskSearch:i="",onToggleTaskComplete:l,onSetTaskFilter:r,onSetTaskSort:p,onSetTaskSearch:$,onCreateTask:d,workspaceNames:m=[],onStartTask:u,editingTaskId:k,onEditTask:b,onUpdateTask:f,onViewTaskOutput:D}=e;if(t.length===0&&!d)return a``;let h;if(s==="outstanding")h=t.filter(w=>w.status==="pending");else if(s==="today"){const w=z();h=t.filter(v=>v.status==="pending"&&v.dueDate!=null&&v.dueDate<=w)}else s==="complete"?h=t.filter(w=>w.status==="complete"):h=t;if(i){const w=i.toLowerCase();h=h.filter(v=>v.title.toLowerCase().includes(w)||v.project?.toLowerCase().includes(w))}const y=Q(h,n);return a`
|
|
644
644
|
<div class="ws-all-tasks-section">
|
|
645
645
|
<section class="ws-section" aria-label="All tasks">
|
|
646
646
|
<div class="ws-section__header">
|
|
@@ -694,7 +694,7 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
694
694
|
<form
|
|
695
695
|
class="ws-task-create-form"
|
|
696
696
|
aria-label="Create new task"
|
|
697
|
-
@submit=${w=>{w.preventDefault();const v=w.currentTarget,
|
|
697
|
+
@submit=${w=>{w.preventDefault();const v=w.currentTarget,F=v.querySelector(".ws-task-create-input"),x=v.querySelector(".ws-task-create-project"),S=F.value.trim();if(!S)return;const T=x?.value||m[0]||"";d(S,T),F.value=""}}
|
|
698
698
|
>
|
|
699
699
|
<input
|
|
700
700
|
type="text"
|
|
@@ -711,8 +711,8 @@ import{A as c,b as a}from"./lit-core-CTInmNPB.js";import{f as P,ab as Q}from"./c
|
|
|
711
711
|
</form>
|
|
712
712
|
`:c}
|
|
713
713
|
<div class="ws-list ws-list--scroll" role="list" aria-live="polite" aria-label="Task list">
|
|
714
|
-
${
|
|
714
|
+
${y.length===0?a`<div class="ws-empty">No tasks</div>`:y.map(w=>$e(w,l,u,k,b,f,D))}
|
|
715
715
|
</div>
|
|
716
716
|
</section>
|
|
717
717
|
</div>
|
|
718
|
-
`}export{$e as a,Re as r,
|
|
718
|
+
`}export{$e as a,Re as r,Q as s};
|
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
<link rel="icon" href="./favicon.svg?v=2" type="image/svg+xml" />
|
|
9
9
|
<link rel="icon" href="./favicon.ico?v=2" sizes="16x16 32x32 48x48" />
|
|
10
10
|
<link rel="apple-touch-icon" href="./apple-touch-icon.png" sizes="180x180" />
|
|
11
|
-
<script type="module" crossorigin src="./assets/index-
|
|
12
|
-
<link rel="modulepreload" crossorigin href="./assets/ctrl-settings-
|
|
11
|
+
<script type="module" crossorigin src="./assets/index-DzcGsUUC.js"></script>
|
|
12
|
+
<link rel="modulepreload" crossorigin href="./assets/ctrl-settings-nG144v_G.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/lit-core-CTInmNPB.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="./assets/markdown-i_gIkIP3.js">
|
|
15
|
-
<link rel="modulepreload" crossorigin href="./assets/views-settings-
|
|
16
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
15
|
+
<link rel="modulepreload" crossorigin href="./assets/views-settings-TQFJxfo9.js">
|
|
16
|
+
<link rel="stylesheet" crossorigin href="./assets/index-Btlae9Mn.css">
|
|
17
17
|
</head>
|
|
18
18
|
<body>
|
|
19
19
|
<script>
|