dsh-remote-plugin 0.6.14 → 0.6.15
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/apk/dsh-remote.apk +0 -0
- package/gateway.cjs +202 -23
- package/package.json +1 -1
- package/public/app.js +260 -34
- package/public/desktop/desktop.css +22 -7
- package/public/desktop/desktop.html +24 -4
- package/public/desktop/desktop.js +275 -26
- package/public/index.html +25 -8
- package/public/morphicons-init.js +41 -0
- package/public/motion.js +469 -0
- package/public/plugin.html +4 -1
- package/public/plugin.js +1 -0
- package/public/styles.css +20 -6
- package/public/update.json +8 -8
- package/public/vendor/gsap/NOTICE.md +10 -0
- package/public/vendor/gsap/gsap.min.js +11 -0
- package/public/vendor/morphicons/LICENSE +21 -0
- package/public/vendor/morphicons/README.md +10 -0
- package/public/vendor/morphicons/controller-CXZuwJ_M.js +152 -0
- package/public/vendor/morphicons/dom.js +206 -0
- package/public/vendor/morphicons/element.js +261 -0
- package/public/vendor/morphicons/normalize-CYnN3Npw.js +540 -0
- package/public/vendor/morphicons/spring-CFHloqPP.js +623 -0
- package/public/version.json +1 -1
|
@@ -34,6 +34,12 @@ a.ds-btn { text-decoration: none; }
|
|
|
34
34
|
box-sizing: border-box; padding: 8px 10px 4px; border-bottom: 1px solid var(--dsr-line);
|
|
35
35
|
color: var(--dsr-accent-strong); font-size: 10px; font-weight: 700; line-height: 1.2;
|
|
36
36
|
}
|
|
37
|
+
.ds-session-workspace-group { flex: 0 0 auto; display: flex; flex-direction: column; gap: 0; }
|
|
38
|
+
.ds-session-group { touch-action: pan-y; user-select: none; }
|
|
39
|
+
.ds-session-group-drag-handle { flex: 0 0 auto; color: var(--dsr-muted); opacity: .52; font-size: 13px; line-height: 1; letter-spacing: -3px; }
|
|
40
|
+
.ds-session-workspace-group.reorder-pressing { outline: 1px solid var(--dsr-accent-line); border-radius: 10px; }
|
|
41
|
+
.ds-session-workspace-group.reorder-dragging { position: relative; z-index: 5; opacity: .76; outline: 1px solid var(--dsr-accent-strong); box-shadow: 0 10px 24px var(--dsr-shadow); touch-action: none; }
|
|
42
|
+
.ds-session-workspace-group .ds-session-item { touch-action: pan-y; }
|
|
37
43
|
.ds-session-group-icon { flex: 0 0 auto; color: var(--dsr-accent-2); font-size: 11px; }
|
|
38
44
|
.ds-session-group-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
39
45
|
.ds-session-item { width: 100%; flex: 0 0 auto; text-align: left; border: 1px solid transparent; background: transparent; color: var(--dsr-text); font: inherit; font-size: 13px; padding: 9px 10px; border-radius: 11px; cursor: pointer; display: flex; flex-direction: column; gap: 3px; transition: transform .18s ease, background .18s ease, border-color .18s ease; }
|
|
@@ -104,12 +110,19 @@ a.ds-btn { text-decoration: none; }
|
|
|
104
110
|
.ds-wb-panel > * { flex-shrink: 0; }
|
|
105
111
|
.ds-wb-panel-title { font-size: 10.5px; font-weight: 700; color: var(--dsr-muted); letter-spacing: .6px; text-transform: uppercase; }
|
|
106
112
|
.ds-wb-project { border: 1px solid var(--dsr-line); border-radius: 9px; background: var(--dsr-panel); overflow: hidden; }
|
|
107
|
-
.ds-wb-project-head { width: 100%; display: flex; align-items: center; gap: 6px; border: none; background: transparent; color: var(--dsr-text); font: inherit; font-size: 12.5px; padding: 6px 8px; cursor: pointer; text-align: left; }
|
|
113
|
+
.ds-wb-project-head { width: 100%; display: flex; align-items: center; gap: 6px; border: none; background: transparent; color: var(--dsr-text); font: inherit; font-size: 12.5px; padding: 6px 8px; cursor: pointer; text-align: left; touch-action: pan-y; user-select: none; }
|
|
114
|
+
.ds-wb-drag-handle, .ds-wb-session-drag-handle { flex: none; color: var(--dsr-muted); opacity: .52; font-size: 13px; line-height: 1; letter-spacing: -3px; }
|
|
115
|
+
.ds-wb-project.reorder-pressing, .ds-wb-session.reorder-pressing { outline: 1px solid var(--dsr-accent-line); }
|
|
116
|
+
.ds-wb-project.reorder-dragging, .ds-wb-session.reorder-dragging { position: relative; z-index: 5; opacity: .76; outline: 1px solid var(--dsr-accent-strong); box-shadow: 0 10px 24px var(--dsr-shadow); touch-action: none; }
|
|
117
|
+
.ds-wb-panel.reorder-active { user-select: none; }
|
|
118
|
+
.reorder-placeholder { flex: 0 0 auto; box-sizing: border-box; border: 1px dashed var(--dsr-accent-line); border-radius: 7px; background: var(--dsr-accent-soft); opacity: .72; }
|
|
119
|
+
html.reorder-scroll-lock { overscroll-behavior: none; }
|
|
120
|
+
html.reorder-scroll-lock body { overscroll-behavior: none; }
|
|
108
121
|
.ds-wb-project-title { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
109
122
|
.ds-wb-project-count { flex: none; font-size: 10.5px; color: var(--dsr-muted); background: var(--dsr-bg-2); border-radius: 999px; padding: 0 7px; line-height: 16px; }
|
|
110
123
|
.ds-wb-project-body { display: flex; flex-direction: column; gap: 3px; padding: 2px 6px 7px; }
|
|
111
124
|
.ds-wb-new-session { align-self: flex-start; margin: 2px 0 3px; }
|
|
112
|
-
.ds-wb-session { display: flex; align-items: center; gap: 6px; width: 100%; text-align: left; border: none; background: transparent; color: var(--dsr-text); font: inherit; font-size: 12px; padding: 5px 7px; border-radius: 7px; cursor: pointer; }
|
|
125
|
+
.ds-wb-session { display: flex; align-items: center; gap: 6px; width: 100%; text-align: left; border: none; background: transparent; color: var(--dsr-text); font: inherit; font-size: 12px; padding: 5px 7px; border-radius: 7px; cursor: pointer; touch-action: pan-y; user-select: none; }
|
|
113
126
|
.ds-wb-session.current { background: var(--dsr-accent-soft); color: var(--dsr-accent-strong); }
|
|
114
127
|
.ds-wb-session-dot { flex: none; width: 6px; height: 6px; border-radius: 50%; background: var(--dsr-line); }
|
|
115
128
|
.ds-wb-session-dot.running { background: var(--dsr-warning); }
|
|
@@ -153,8 +166,12 @@ a.ds-btn { text-decoration: none; }
|
|
|
153
166
|
.ds-icon-btn:hover { filter: brightness(1.06); }
|
|
154
167
|
#btn-donate { color: var(--dsr-accent-2); }
|
|
155
168
|
#btn-stats-top { color: var(--dsr-info); }
|
|
169
|
+
#btn-cancel { color: var(--dsr-error); border-color: var(--dsr-error-line); }
|
|
156
170
|
#btn-mobile-nav { display: none; }
|
|
157
171
|
.ds-title { flex: 1; min-width: 0; font-weight: 700; font-size: 15px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
172
|
+
.ds-session-status { flex: none; max-width: 150px; color: var(--dsr-muted); font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
173
|
+
.ds-text-input { width: 100%; box-sizing: border-box; min-height: 42px; padding: 10px 12px; border: 1px solid var(--dsr-line); border-radius: 10px; background: var(--dsr-bg-2); color: var(--dsr-text); font: inherit; outline: none; }
|
|
174
|
+
.ds-text-input:focus { border-color: var(--dsr-accent-line); }
|
|
158
175
|
.ds-top-right { display: flex; align-items: center; gap: 10px; }
|
|
159
176
|
.ds-conn { font-size: 11px; color: var(--dsr-muted); }
|
|
160
177
|
.ds-conn.on { color: var(--dsr-success); }
|
|
@@ -164,7 +181,6 @@ a.ds-btn { text-decoration: none; }
|
|
|
164
181
|
.ds-content { flex: 1; min-height: 0; display: flex; }
|
|
165
182
|
.ds-view { flex: 1; min-width: 0; display: flex; flex-direction: column; padding: 20px 26px 32px; overflow: hidden; }
|
|
166
183
|
.ds-view.hidden { display: none; }
|
|
167
|
-
.ds-view { animation: dsFade .15s ease; }
|
|
168
184
|
|
|
169
185
|
/* ---------- 系统总览 · A 方案 ---------- */
|
|
170
186
|
#view-overview { overflow-y:auto; background:radial-gradient(circle at 86% 4%,var(--dsr-accent-soft),transparent 32%),var(--dsr-bg); }
|
|
@@ -231,8 +247,6 @@ button.ds-overview-attention-item, button.ds-overview-session-item { cursor:poin
|
|
|
231
247
|
.ds-overview-session-item .ds-overview-mark { background:var(--dsr-info-soft); color:var(--dsr-info); }
|
|
232
248
|
.ds-overview-session-item.running .ds-overview-mark { background:var(--dsr-success-soft); color:var(--dsr-success); }
|
|
233
249
|
.ds-overview-empty { padding:10px; border:1px dashed var(--dsr-line); border-radius:12px; color:var(--dsr-muted); font-size:12px; text-align:center; }
|
|
234
|
-
@keyframes dsFade { from { opacity: .5; } to { opacity: 1; } }
|
|
235
|
-
|
|
236
250
|
/* 会话视图 */
|
|
237
251
|
#view-chat { padding: 0; }
|
|
238
252
|
.ds-history { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 18px 22px; display: flex; flex-direction: column; gap: 10px; }
|
|
@@ -290,6 +304,8 @@ button.ds-overview-attention-item, button.ds-overview-session-item { cursor:poin
|
|
|
290
304
|
.ds-subagent-toggle { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
|
|
291
305
|
.ds-subagent-toggle .ds-card-title { margin: 0; }
|
|
292
306
|
.ds-subagent-toggle-icon { color: var(--dsr-muted); font-size: 16px; line-height: 1; }
|
|
307
|
+
.ds-subagent-toggle-icon morph-icon,
|
|
308
|
+
.ds-subagent-toggle-icon morph-icon svg { width: 16px; height: 16px; display: block; }
|
|
293
309
|
.ds-subagent-list { padding: 0 12px 10px; border-top: 1px solid var(--dsr-line); }
|
|
294
310
|
.ds-model-head { font-size: 11px; font-weight: 700; color: var(--dsr-muted); letter-spacing: .6px; padding: 4px 6px 2px; }
|
|
295
311
|
.ds-model-group { padding: 2px 0 4px; }
|
|
@@ -408,9 +424,8 @@ button.ds-overview-attention-item, button.ds-overview-session-item { cursor:poin
|
|
|
408
424
|
.ds-stats-note { font-size: 11px; color: var(--dsr-muted); line-height: 1.6; margin-top: 8px; }
|
|
409
425
|
|
|
410
426
|
/* 统计抽屉(右侧滑出) */
|
|
411
|
-
.ds-drawer { position: fixed; top: 0; right: 0; bottom: 0; z-index: 110; width: min(540px, 100vw); background: var(--dsr-panel); border-left: 1px solid var(--dsr-line); box-shadow: -12px 0 32px rgba(0,0,0,.35); display: flex; flex-direction: column;
|
|
427
|
+
.ds-drawer { position: fixed; top: 0; right: 0; bottom: 0; z-index: 110; width: min(540px, 100vw); background: var(--dsr-panel); border-left: 1px solid var(--dsr-line); box-shadow: -12px 0 32px rgba(0,0,0,.35); display: flex; flex-direction: column; }
|
|
412
428
|
.ds-drawer.hidden { display: none; }
|
|
413
|
-
@keyframes dsDrawerIn { from { transform: translateX(40px); opacity: 0; } to { transform: none; opacity: 1; } }
|
|
414
429
|
.ds-drawer-head { flex: none; display: flex; align-items: center; justify-content: space-between; padding: 13px 15px; border-bottom: 1px solid var(--dsr-line); font-weight: 700; font-size: 15px; }
|
|
415
430
|
.ds-drawer-body { flex: 1; min-height: 0; overflow-y: auto; padding: 14px 15px; scrollbar-width: thin; scrollbar-color: var(--dsr-line) transparent; }
|
|
416
431
|
.ds-drawer-body::-webkit-scrollbar { width: 8px; }
|
|
@@ -86,6 +86,9 @@
|
|
|
86
86
|
<header class="ds-topbar">
|
|
87
87
|
<button id="btn-mobile-nav" class="ds-icon-btn" data-i18n-aria="ds.menu" data-i18n-title="ds.menu"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" aria-hidden="true"><path d="M4 6h16M4 12h16M4 18h16"/></svg></button>
|
|
88
88
|
<div class="ds-title" id="ds-title" data-i18n="ds.sessions">会话</div>
|
|
89
|
+
<span id="ds-session-status" class="ds-session-status hidden"></span>
|
|
90
|
+
<button id="btn-rename-session" class="ds-icon-btn hidden" data-i18n-title="ds.sessionRename" data-i18n-aria="ds.sessionRename">✎</button>
|
|
91
|
+
<button id="btn-archive-session" class="ds-btn hidden" data-i18n="ds.sessionArchive">归档</button>
|
|
89
92
|
<div class="ds-top-right">
|
|
90
93
|
<span class="ds-conn" id="conn-badge" title="">●</span>
|
|
91
94
|
<span class="ds-server" id="server-badge"></span>
|
|
@@ -174,6 +177,7 @@
|
|
|
174
177
|
</div>
|
|
175
178
|
</div>
|
|
176
179
|
<div class="ds-composer-right">
|
|
180
|
+
<button id="btn-cancel" class="ds-btn ds-stop-btn hidden" data-i18n="ds.sessionStop">停止本轮</button>
|
|
177
181
|
<button id="btn-send" class="ds-btn primary ds-send-btn" data-i18n-aria="ds.send" data-i18n-title="ds.send" aria-label="发送">↑</button>
|
|
178
182
|
</div>
|
|
179
183
|
</div>
|
|
@@ -317,6 +321,19 @@
|
|
|
317
321
|
</div>
|
|
318
322
|
</div>
|
|
319
323
|
|
|
324
|
+
<div id="modal-rename" class="ds-modal hidden" role="dialog" aria-modal="true" aria-labelledby="rename-session-title">
|
|
325
|
+
<div class="ds-modal-card">
|
|
326
|
+
<div id="rename-session-title" class="ds-modal-title" data-i18n="ds.sessionRenameTitle">重命名会话</div>
|
|
327
|
+
<div class="ds-modal-body">
|
|
328
|
+
<input id="rename-session-input" class="ds-text-input" maxlength="160" autocomplete="off" data-i18n-placeholder="ds.sessionRenamePlaceholder" placeholder="输入新的会话名称">
|
|
329
|
+
</div>
|
|
330
|
+
<div class="ds-modal-actions">
|
|
331
|
+
<button id="rename-cancel" class="ds-btn" data-i18n="ds.cancel">取消</button>
|
|
332
|
+
<button id="rename-confirm" class="ds-btn primary" data-i18n="ds.sessionRenameConfirm">保存</button>
|
|
333
|
+
</div>
|
|
334
|
+
</div>
|
|
335
|
+
</div>
|
|
336
|
+
|
|
320
337
|
<!-- 写反馈模态 -->
|
|
321
338
|
<div id="modal-feedback" class="ds-modal hidden" role="dialog" aria-modal="true">
|
|
322
339
|
<div class="ds-modal-card">
|
|
@@ -434,9 +451,9 @@
|
|
|
434
451
|
'ds.systemPulse': '系统链路', 'ds.systemNominal': '系统链路正常', 'ds.systemDegraded': '部分链路需要关注', 'ds.systemOffline': '连接已断开', 'ds.checking': '检查中…', 'ds.components': '{n}/4 个模块在线', 'ds.live': 'LIVE', 'ds.allLinked': '全部链路', 'ds.offlineCore': 'OFFLINE',
|
|
435
452
|
'ds.gateway': '网关', 'ds.dshUpstream': 'DSH 上游', 'ds.mux': '实时 mux', 'ds.host': '实时 host', 'ds.online': '在线', 'ds.offlineShort': '离线',
|
|
436
453
|
'ds.attention': '需要你处理', 'ds.runtime': '运行指标', 'ds.recentActivity': '近期活动', 'ds.dshVersion': 'DSH 版本', 'ds.gatewayStatus': '网关状态', 'ds.activeSessions': '活跃会话', 'ds.connectionMode': '连接模式', 'ds.liveWs': '实时 WS', 'ds.poll': '降级轮询', 'ds.running': '运行中', 'ds.noReason': '无说明', 'ds.noActivity': '暂无后台活动', 'ds.noSessions': '暂无会话', 'ds.refreshOverview': '刷新总览', 'ds.pendingCount': '{n} 项待处理', 'ds.activeCount': '{n} 个活跃会话', 'ds.nothingPending': '暂无事项', 'ds.action.openSession': '打开最近会话', 'ds.action.newSession': '新建会话', 'ds.action.attention': '处理待办', 'ds.action.connect': '去设置连接', 'ds.action.refresh': '重新检查连接',
|
|
437
|
-
'ds.sortLabel': '会话排序', 'ds.sortTime': '按时间', 'ds.sortWorkspace': '按工作区', 'ds.workspace': '工作区', 'ds.workspaceUnknown': '未指定工作区',
|
|
454
|
+
'ds.sortLabel': '会话排序', 'ds.sortTime': '按时间', 'ds.sortWorkspace': '按工作区', 'ds.workspace': '工作区', 'ds.workspaceUnknown': '未指定工作区', 'ds.wbOrderSaved': '顺序已保存到当前设备',
|
|
438
455
|
'ds.files': '文件传输', 'ds.settings': '设置', 'ds.stats': '统计', 'ds.menu': '导航',
|
|
439
|
-
'ds.send': '发送', 'ds.composerPlaceholder': '输入消息,Enter 发送…', 'ds.composerRunning': '运行中…', 'ds.presets': '预设',
|
|
456
|
+
'ds.send': '发送', 'ds.composerPlaceholder': '输入消息,Enter 发送…', 'ds.composerRunning': '运行中…', 'ds.presets': '预设', 'ds.sessionRename': '重命名会话', 'ds.sessionRenameTitle': '重命名会话', 'ds.sessionRenamePlaceholder': '输入新的会话名称', 'ds.sessionRenameConfirm': '保存', 'ds.sessionRenameFailed': '重命名失败', 'ds.sessionRenameEmpty': '会话名称不能为空', 'ds.sessionRenamed': '会话名称已更新', 'ds.sessionArchive': '归档', 'ds.sessionArchiveConfirm': '归档这个会话?归档后可在“显示已归档”中打开。', 'ds.sessionArchived': '会话已归档', 'ds.sessionStop': '停止本轮', 'ds.sessionStopConfirm': '停止当前回合?排队中的消息不会被删除。', 'ds.sessionStopFailed': '停止失败', 'ds.sessionStopRequested': '已请求停止本轮', 'ds.sessionRecovering': '恢复会话中…', 'ds.sessionReady': '会话已恢复', 'ds.sessionRecoveryFailed': '会话恢复失败',
|
|
440
457
|
'ds.commands': '指令',
|
|
441
458
|
'ds.cmdCompact': '/compact 压缩对话历史', 'ds.cmdExport': '/export 导出会话日志 ZIP',
|
|
442
459
|
'ds.cmdFeedback': '/feedback 反馈当前会话', 'ds.cmdGoal': '/goal 设置/查看任务目标',
|
|
@@ -536,9 +553,9 @@
|
|
|
536
553
|
'ds.systemPulse': 'System pulse', 'ds.systemNominal': 'System nominal', 'ds.systemDegraded': 'Some links need attention', 'ds.systemOffline': 'Connection offline', 'ds.checking': 'Checking…', 'ds.components': '{n}/4 components online', 'ds.live': 'LIVE', 'ds.allLinked': 'ALL LINKED', 'ds.offlineCore': 'OFFLINE',
|
|
537
554
|
'ds.gateway': 'Gateway', 'ds.dshUpstream': 'DSH upstream', 'ds.mux': 'Live mux', 'ds.host': 'Live host', 'ds.online': 'Online', 'ds.offlineShort': 'Offline',
|
|
538
555
|
'ds.attention': 'Needs attention', 'ds.runtime': 'Runtime metrics', 'ds.recentActivity': 'Recent activity', 'ds.dshVersion': 'DSH version', 'ds.gatewayStatus': 'Gateway status', 'ds.activeSessions': 'Active sessions', 'ds.connectionMode': 'Connection mode', 'ds.liveWs': 'Live WS', 'ds.poll': 'Degraded polling', 'ds.running': 'Running', 'ds.noReason': 'No reason given', 'ds.noActivity': 'No background activity', 'ds.noSessions': 'No sessions yet', 'ds.refreshOverview': 'Refresh overview', 'ds.pendingCount': '{n} pending', 'ds.activeCount': '{n} active sessions', 'ds.nothingPending': 'Nothing pending', 'ds.action.openSession': 'Open recent session', 'ds.action.newSession': 'New session', 'ds.action.attention': 'Review pending', 'ds.action.connect': 'Set up connection', 'ds.action.refresh': 'Check connection',
|
|
539
|
-
'ds.sortLabel': 'Session sort', 'ds.sortTime': 'By time', 'ds.sortWorkspace': 'By workspace', 'ds.workspace': 'Workspace', 'ds.workspaceUnknown': 'No workspace',
|
|
556
|
+
'ds.sortLabel': 'Session sort', 'ds.sortTime': 'By time', 'ds.sortWorkspace': 'By workspace', 'ds.workspace': 'Workspace', 'ds.workspaceUnknown': 'No workspace', 'ds.wbOrderSaved': 'Order saved on this device',
|
|
540
557
|
'ds.files': 'Files', 'ds.settings': 'Settings', 'ds.stats': 'Stats', 'ds.menu': 'Menu',
|
|
541
|
-
'ds.send': 'Send', 'ds.composerPlaceholder': 'Type a message, Enter to send…', 'ds.composerRunning': 'Running…', 'ds.presets': 'Presets',
|
|
558
|
+
'ds.send': 'Send', 'ds.composerPlaceholder': 'Type a message, Enter to send…', 'ds.composerRunning': 'Running…', 'ds.presets': 'Presets', 'ds.sessionRename': 'Rename session', 'ds.sessionRenameTitle': 'Rename session', 'ds.sessionRenamePlaceholder': 'Enter a new session name', 'ds.sessionRenameConfirm': 'Save', 'ds.sessionRenameFailed': 'Rename failed', 'ds.sessionRenameEmpty': 'Session name cannot be empty', 'ds.sessionRenamed': 'Session name updated', 'ds.sessionArchive': 'Archive', 'ds.sessionArchiveConfirm': 'Archive this session? You can open it from “Show archived”.', 'ds.sessionArchived': 'Session archived', 'ds.sessionStop': 'Stop turn', 'ds.sessionStopConfirm': 'Stop the current turn? Queued messages will be kept.', 'ds.sessionStopFailed': 'Stop failed', 'ds.sessionStopRequested': 'Stop requested', 'ds.sessionRecovering': 'Restoring session…', 'ds.sessionReady': 'Session ready', 'ds.sessionRecoveryFailed': 'Session restore failed',
|
|
542
559
|
'ds.commands': 'Commands',
|
|
543
560
|
'ds.cmdCompact': '/compact Compress conversation history', 'ds.cmdExport': '/export Export session log ZIP',
|
|
544
561
|
'ds.cmdFeedback': '/feedback Feedback current session', 'ds.cmdGoal': '/goal Set/view task goal',
|
|
@@ -637,6 +654,9 @@
|
|
|
637
654
|
</script>
|
|
638
655
|
<script src="i18n.js"></script>
|
|
639
656
|
<script src="../md.js"></script>
|
|
657
|
+
<script src="../vendor/gsap/gsap.min.js"></script>
|
|
658
|
+
<script src="../motion.js"></script>
|
|
659
|
+
<script type="module" src="../morphicons-init.js"></script>
|
|
640
660
|
<script src="desktop.js"></script>
|
|
641
661
|
</body>
|
|
642
662
|
</html>
|