tide-commander 1.76.0 → 1.76.1

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.
Files changed (35) hide show
  1. package/dist/assets/{BossLogsModal-BSAIyY5Q.js → BossLogsModal-BvqhFr-_.js} +1 -1
  2. package/dist/assets/{BossSpawnModal-DWG3vywZ.js → BossSpawnModal-BqeggU8B.js} +1 -1
  3. package/dist/assets/{ControlsModal-D7sQMy9U.js → ControlsModal-CSoosVZr.js} +1 -1
  4. package/dist/assets/{DockerLogsModal-BxebN9cf.js → DockerLogsModal-5ka7WQGS.js} +1 -1
  5. package/dist/assets/{EmbeddedEditor-BJ7l5Zuf.js → EmbeddedEditor-kjkjmn6F.js} +1 -1
  6. package/dist/assets/{GmailOAuthSetup-CzdqIXK3.js → GmailOAuthSetup-DnKKZb60.js} +1 -1
  7. package/dist/assets/{GoogleOAuthSetup-DKjU--mc.js → GoogleOAuthSetup-BTj7FsrM.js} +1 -1
  8. package/dist/assets/{IframeModal-DkK8asfI.js → IframeModal-nxTVYdR0.js} +1 -1
  9. package/dist/assets/{IntegrationsPanel--yZ_3y5S.js → IntegrationsPanel-BvtjQzY0.js} +2 -2
  10. package/dist/assets/{LogViewerModal-CxAnXG6j.js → LogViewerModal-By8qYc9w.js} +1 -1
  11. package/dist/assets/{MonitoringModal-B2AaGtlF.js → MonitoringModal-LHdMN5Or.js} +1 -1
  12. package/dist/assets/{PM2LogsModal-auR8lVnW.js → PM2LogsModal-DP_YALRa.js} +1 -1
  13. package/dist/assets/{RestoreArchivedAreaModal-BJn-apo4.js → RestoreArchivedAreaModal-CVO0oR47.js} +1 -1
  14. package/dist/assets/{Scene2DCanvas-Q-FykJjz.js → Scene2DCanvas-DfUD0nME.js} +1 -1
  15. package/dist/assets/{SceneManager-JpuslnCc.js → SceneManager-Bg-SrewQ.js} +1 -1
  16. package/dist/assets/{SkillsPanel-BYfp0jLH.js → SkillsPanel-5QZS4STu.js} +1 -1
  17. package/dist/assets/{SpawnModal-_wxlHhYk.js → SpawnModal-a2FD8WPF.js} +1 -1
  18. package/dist/assets/{SubordinateAssignmentModal-tvfKFyRh.js → SubordinateAssignmentModal-BeJbKpsd.js} +1 -1
  19. package/dist/assets/{TriggerManagerPanel-DRKDuQAM.js → TriggerManagerPanel-DPWafr0E.js} +1 -1
  20. package/dist/assets/{WorkflowEditorPanel-BPBBCTem.js → WorkflowEditorPanel-DmuyeVwF.js} +1 -1
  21. package/dist/assets/{index-snzCcqn6.js → index-Bj1Pqg6L.js} +3 -3
  22. package/dist/assets/{index-W693QVuI.js → index-Bke3uhph.js} +1 -1
  23. package/dist/assets/{index-DybFI3Yz.js → index-BvsiXRZ_.js} +1 -1
  24. package/dist/assets/{index-bu2bf20Y.js → index-CJxPWWsK.js} +2 -2
  25. package/dist/assets/{index-B87wqtN7.js → index-CKVdchOZ.js} +1 -1
  26. package/dist/assets/{index-CNo8F4Hv.js → index-CiKHoc8R.js} +1 -1
  27. package/dist/assets/{index-C8wnSaGW.js → index-DYLNcrZv.js} +1 -1
  28. package/dist/assets/{index-DIDFZjvm.js → index-DayvqdK7.js} +1 -1
  29. package/dist/assets/{index-CPEajh-P.js → index-_wAKWXkS.js} +1 -1
  30. package/dist/assets/{main-CjPuuFGh.js → main-fW1jgDdk.js} +5 -5
  31. package/dist/assets/{web-Bd3T_lvT.js → web-DtSOZSKy.js} +1 -1
  32. package/dist/assets/{web-CY6mLlQ5.js → web-hgiguPCO.js} +1 -1
  33. package/dist/index.html +1 -1
  34. package/dist/src/packages/server/services/runtime-command-execution.js +9 -0
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- import{c5 as a}from"./main-CjPuuFGh.js";import{ImpactStyle as i,NotificationType as r}from"./index-bu2bf20Y.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class h extends a{constructor(){super(...arguments),this.selectionStarted=!1}async impact(t){const e=this.patternForImpact(t==null?void 0:t.style);this.vibrateWithPattern(e)}async notification(t){const e=this.patternForNotification(t==null?void 0:t.type);this.vibrateWithPattern(e)}async vibrate(t){const e=(t==null?void 0:t.duration)||300;this.vibrateWithPattern([e])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(t=i.Heavy){return t===i.Medium?[43]:t===i.Light?[20]:[61]}patternForNotification(t=r.Success){return t===r.Warning?[30,40,30,50,60]:t===r.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(t){if(navigator.vibrate)navigator.vibrate(t);else throw this.unavailable("Browser does not support the vibrate API")}}export{h as HapticsWeb};
1
+ import{c5 as a}from"./main-fW1jgDdk.js";import{ImpactStyle as i,NotificationType as r}from"./index-CJxPWWsK.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class h extends a{constructor(){super(...arguments),this.selectionStarted=!1}async impact(t){const e=this.patternForImpact(t==null?void 0:t.style);this.vibrateWithPattern(e)}async notification(t){const e=this.patternForNotification(t==null?void 0:t.type);this.vibrateWithPattern(e)}async vibrate(t){const e=(t==null?void 0:t.duration)||300;this.vibrateWithPattern([e])}async selectionStart(){this.selectionStarted=!0}async selectionChanged(){this.selectionStarted&&this.vibrateWithPattern([70])}async selectionEnd(){this.selectionStarted=!1}patternForImpact(t=i.Heavy){return t===i.Medium?[43]:t===i.Light?[20]:[61]}patternForNotification(t=r.Success){return t===r.Warning?[30,40,30,50,60]:t===r.Error?[27,45,50]:[35,65,21]}vibrateWithPattern(t){if(navigator.vibrate)navigator.vibrate(t);else throw this.unavailable("Browser does not support the vibrate API")}}export{h as HapticsWeb};
@@ -1 +1 @@
1
- import{c5 as s}from"./main-CjPuuFGh.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class l extends s{constructor(){super(...arguments),this.pending=[],this.deliveredNotifications=[],this.hasNotificationSupport=()=>{if(!("Notification"in window)||!Notification.requestPermission)return!1;if(Notification.permission!=="granted")try{new Notification("")}catch(i){if(i instanceof Error&&i.name==="TypeError")return!1}return!0}}async getDeliveredNotifications(){const i=[];for(const t of this.deliveredNotifications){const e={title:t.title,id:parseInt(t.tag),body:t.body};i.push(e)}return{notifications:i}}async removeDeliveredNotifications(i){for(const t of i.notifications){const e=this.deliveredNotifications.find(n=>n.tag===String(t.id));e==null||e.close(),this.deliveredNotifications=this.deliveredNotifications.filter(()=>!e)}}async removeAllDeliveredNotifications(){for(const i of this.deliveredNotifications)i.close();this.deliveredNotifications=[]}async createChannel(){throw this.unimplemented("Not implemented on web.")}async deleteChannel(){throw this.unimplemented("Not implemented on web.")}async listChannels(){throw this.unimplemented("Not implemented on web.")}async schedule(i){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");for(const t of i.notifications)this.sendNotification(t);return{notifications:i.notifications.map(t=>({id:t.id}))}}async getPending(){return{notifications:this.pending}}async registerActionTypes(){throw this.unimplemented("Not implemented on web.")}async cancel(i){this.pending=this.pending.filter(t=>!i.notifications.find(e=>e.id===t.id))}async areEnabled(){const{display:i}=await this.checkPermissions();return{value:i==="granted"}}async changeExactNotificationSetting(){throw this.unimplemented("Not implemented on web.")}async checkExactNotificationSetting(){throw this.unimplemented("Not implemented on web.")}async requestPermissions(){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");return{display:this.transformNotificationPermission(await Notification.requestPermission())}}async checkPermissions(){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");return{display:this.transformNotificationPermission(Notification.permission)}}transformNotificationPermission(i){switch(i){case"granted":return"granted";case"denied":return"denied";default:return"prompt"}}sendPending(){var i;const t=[],e=new Date().getTime();for(const n of this.pending)!((i=n.schedule)===null||i===void 0)&&i.at&&n.schedule.at.getTime()<=e&&(this.buildNotification(n),t.push(n));this.pending=this.pending.filter(n=>!t.find(o=>o===n))}sendNotification(i){var t;if(!((t=i.schedule)===null||t===void 0)&&t.at){const e=i.schedule.at.getTime()-new Date().getTime();this.pending.push(i),setTimeout(()=>{this.sendPending()},e);return}this.buildNotification(i)}buildNotification(i){const t=new Notification(i.title,{body:i.body,tag:String(i.id)});return t.addEventListener("click",this.onClick.bind(this,i),!1),t.addEventListener("show",this.onShow.bind(this,i),!1),t.addEventListener("close",()=>{this.deliveredNotifications=this.deliveredNotifications.filter(()=>!this)},!1),this.deliveredNotifications.push(t),t}onClick(i){const t={actionId:"tap",notification:i};this.notifyListeners("localNotificationActionPerformed",t)}onShow(i){this.notifyListeners("localNotificationReceived",i)}}export{l as LocalNotificationsWeb};
1
+ import{c5 as s}from"./main-fW1jgDdk.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";class l extends s{constructor(){super(...arguments),this.pending=[],this.deliveredNotifications=[],this.hasNotificationSupport=()=>{if(!("Notification"in window)||!Notification.requestPermission)return!1;if(Notification.permission!=="granted")try{new Notification("")}catch(i){if(i instanceof Error&&i.name==="TypeError")return!1}return!0}}async getDeliveredNotifications(){const i=[];for(const t of this.deliveredNotifications){const e={title:t.title,id:parseInt(t.tag),body:t.body};i.push(e)}return{notifications:i}}async removeDeliveredNotifications(i){for(const t of i.notifications){const e=this.deliveredNotifications.find(n=>n.tag===String(t.id));e==null||e.close(),this.deliveredNotifications=this.deliveredNotifications.filter(()=>!e)}}async removeAllDeliveredNotifications(){for(const i of this.deliveredNotifications)i.close();this.deliveredNotifications=[]}async createChannel(){throw this.unimplemented("Not implemented on web.")}async deleteChannel(){throw this.unimplemented("Not implemented on web.")}async listChannels(){throw this.unimplemented("Not implemented on web.")}async schedule(i){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");for(const t of i.notifications)this.sendNotification(t);return{notifications:i.notifications.map(t=>({id:t.id}))}}async getPending(){return{notifications:this.pending}}async registerActionTypes(){throw this.unimplemented("Not implemented on web.")}async cancel(i){this.pending=this.pending.filter(t=>!i.notifications.find(e=>e.id===t.id))}async areEnabled(){const{display:i}=await this.checkPermissions();return{value:i==="granted"}}async changeExactNotificationSetting(){throw this.unimplemented("Not implemented on web.")}async checkExactNotificationSetting(){throw this.unimplemented("Not implemented on web.")}async requestPermissions(){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");return{display:this.transformNotificationPermission(await Notification.requestPermission())}}async checkPermissions(){if(!this.hasNotificationSupport())throw this.unavailable("Notifications not supported in this browser.");return{display:this.transformNotificationPermission(Notification.permission)}}transformNotificationPermission(i){switch(i){case"granted":return"granted";case"denied":return"denied";default:return"prompt"}}sendPending(){var i;const t=[],e=new Date().getTime();for(const n of this.pending)!((i=n.schedule)===null||i===void 0)&&i.at&&n.schedule.at.getTime()<=e&&(this.buildNotification(n),t.push(n));this.pending=this.pending.filter(n=>!t.find(o=>o===n))}sendNotification(i){var t;if(!((t=i.schedule)===null||t===void 0)&&t.at){const e=i.schedule.at.getTime()-new Date().getTime();this.pending.push(i),setTimeout(()=>{this.sendPending()},e);return}this.buildNotification(i)}buildNotification(i){const t=new Notification(i.title,{body:i.body,tag:String(i.id)});return t.addEventListener("click",this.onClick.bind(this,i),!1),t.addEventListener("show",this.onShow.bind(this,i),!1),t.addEventListener("close",()=>{this.deliveredNotifications=this.deliveredNotifications.filter(()=>!this)},!1),this.deliveredNotifications.push(t),t}onClick(i){const t={actionId:"tap",notification:i};this.notifyListeners("localNotificationActionPerformed",t)}onShow(i){this.notifyListeners("localNotificationReceived",i)}}export{l as LocalNotificationsWeb};
package/dist/index.html CHANGED
@@ -22,7 +22,7 @@
22
22
  <link rel="icon" type="image/png" sizes="16x16" href="/assets/icons/favicon-16x16.png" />
23
23
  <link rel="apple-touch-icon" sizes="180x180" href="/assets/icons/apple-touch-icon.png" />
24
24
  <title>Tide Commander</title>
25
- <script type="module" crossorigin src="/assets/main-CjPuuFGh.js"></script>
25
+ <script type="module" crossorigin src="/assets/main-fW1jgDdk.js"></script>
26
26
  <link rel="modulepreload" crossorigin href="/assets/vendor-react--Eh9ivFN.js">
27
27
  <link rel="modulepreload" crossorigin href="/assets/vendor-three-Chj50gSY.js">
28
28
  <link rel="stylesheet" crossorigin href="/assets/main-Co2mNETL.css">
@@ -228,11 +228,20 @@ export function createRuntimeCommandExecution(deps) {
228
228
  if (hasPendingSilentContextRefresh(agentId)) {
229
229
  clearPendingSilentContextRefresh(agentId);
230
230
  }
231
+ // Clear tracking-board state on explicit stop so stale taskLabel /
232
+ // trackingStatus / trackingStatusDetail don't linger on the tracking board
233
+ // after the agent is killed. Natural task completion does NOT funnel
234
+ // through stopAgent — its final-turn PATCH sets need-review /
235
+ // can-clear-context, and we want to keep that visible.
231
236
  agentService.updateAgent(agentId, {
232
237
  status: 'idle',
233
238
  currentTask: undefined,
234
239
  currentTool: undefined,
235
240
  isDetached: false,
241
+ taskLabel: undefined,
242
+ trackingStatus: null,
243
+ trackingStatusDetail: undefined,
244
+ trackingStatusTimestamp: undefined,
236
245
  });
237
246
  }
238
247
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tide-commander",
3
- "version": "1.76.0",
3
+ "version": "1.76.1",
4
4
  "description": "Visual multi-agent orchestrator and manager for Claude Code with 3D/2D interface",
5
5
  "repository": {
6
6
  "type": "git",