dsh-task-ledger 0.0.124 → 0.0.125
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/dist/client.js +74 -57
- package/dist/client.js.map +1 -1
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -53261,7 +53261,8 @@ window.__ModuleLoader__.load({
|
|
|
53261
53261
|
claim: !mine && task.status === "open",
|
|
53262
53262
|
resume: mine,
|
|
53263
53263
|
finish: mine,
|
|
53264
|
-
release: mine
|
|
53264
|
+
release: mine,
|
|
53265
|
+
cancel: mine || task.status === "open"
|
|
53265
53266
|
};
|
|
53266
53267
|
}
|
|
53267
53268
|
/** 六档菜单命中。标记(`stale` / `overdue` / `backlog`)都由 skill 判定,前端只读布尔。 */
|
|
@@ -53608,10 +53609,12 @@ body{
|
|
|
53608
53609
|
--dtl-business-soft:color-mix(in srgb,var(--dtl-business) 14%,transparent);
|
|
53609
53610
|
--dtl-danger-soft:color-mix(in srgb,var(--dtl-danger) 8%,transparent);
|
|
53610
53611
|
|
|
53611
|
-
/* ── 趋势图三色(2026-10-29
|
|
53612
|
-
|
|
53612
|
+
/* ── 趋势图三色(2026-10-29 用户定稿)───────────────────────────
|
|
53613
|
+
结案 = 绿、新增 = 蓝、未结 = 琥珀;三色直接取核心 alias
|
|
53614
|
+
(state-success-primary / state-business-primary / state-warn-primary),不手写色值 */
|
|
53615
|
+
--dtl-chart-done:var(--dtl-success);
|
|
53613
53616
|
--dtl-chart-open:var(--dtl-warning);
|
|
53614
|
-
--dtl-chart-added:var(--dtl-
|
|
53617
|
+
--dtl-chart-added:var(--dtl-business);
|
|
53615
53618
|
|
|
53616
53619
|
/* ── 交互底 ──────────────────────────────────────────────────── */
|
|
53617
53620
|
/* 卡 / 行 hover 高亮:淡蓝(灰高亮在卡底上几乎看不出来) */
|
|
@@ -53711,9 +53714,10 @@ body[data-ds-dark-theme]{
|
|
|
53711
53714
|
padding:var(--dtl-space-4);}
|
|
53712
53715
|
.dtl-trend__legend{display:flex;align-items:center;flex-wrap:wrap;gap:var(--dtl-space-3);
|
|
53713
53716
|
font-size:var(--dtl-font-xs);color:var(--dtl-fg-3);}
|
|
53714
|
-
|
|
53717
|
+
/* 图例色块:直角方块,与柱子同一造型(用户 2026-10-29:不要圆角) */
|
|
53718
|
+
.dtl-trend__dot{display:inline-block;width:8px;height:8px;margin-right:4px;border-radius:0;
|
|
53715
53719
|
vertical-align:middle;}
|
|
53716
|
-
.dtl-trend__dot--done{background:var(--dtl-
|
|
53720
|
+
.dtl-trend__dot--done{background:var(--dtl-chart-done);}
|
|
53717
53721
|
.dtl-trend__dot--open{background:var(--dtl-chart-open);}
|
|
53718
53722
|
.dtl-trend__dot--added{background:var(--dtl-chart-added);}
|
|
53719
53723
|
/* 「只看我的」:贴图例右侧的小复选框(原生控件 + accent-color,不自绘皮肤) */
|
|
@@ -53735,11 +53739,12 @@ body[data-ds-dark-theme]{
|
|
|
53735
53739
|
.dtl-trend__col{position:relative;flex:1 1 0;min-width:0;display:flex;flex-direction:column;
|
|
53736
53740
|
justify-content:flex-end;padding-bottom:14px;}
|
|
53737
53741
|
.dtl-trend__bars{display:flex;align-items:flex-end;justify-content:center;gap:1px;flex:1 1 auto;min-height:0;}
|
|
53738
|
-
/* 柱宽 5px
|
|
53739
|
-
|
|
53742
|
+
/* 柱宽 7.5px、无圆角(2026-10-17「不要圆弧」;2026-10-29 用户要求再加粗到 1.5 倍,5 → 7.5);
|
|
53743
|
+
非零柱给 2px 下限 */
|
|
53744
|
+
.dtl-trend__bar{position:relative;width:7.5px;flex:none;min-height:2px;
|
|
53740
53745
|
transition:filter var(--dtl-dur-fast) var(--dtl-ease);}
|
|
53741
|
-
/*
|
|
53742
|
-
.dtl-trend__bar--done{background:var(--dtl-
|
|
53746
|
+
/* 结案柱要盖在隔壁更高的柱子上:柱顶数值会伸出柱宽,否则被邻居压掉 */
|
|
53747
|
+
.dtl-trend__bar--done{background:var(--dtl-chart-done);z-index:1;}
|
|
53743
53748
|
.dtl-trend__bar--open{background:var(--dtl-chart-open);}
|
|
53744
53749
|
.dtl-trend__bar--added{background:var(--dtl-chart-added);}
|
|
53745
53750
|
/* hover 整列三根一起提亮(用户 2026-10-17:不是只亮蓝的一根) */
|
|
@@ -54032,7 +54037,7 @@ body[data-ds-dark-theme]{
|
|
|
54032
54037
|
//#region src/client/task-row.ts
|
|
54033
54038
|
/**
|
|
54034
54039
|
* 任务行(宿主**无表格件** ⇒ 自绘):整行一张卡,样式照抄 dispatch-table 任务配置卡:
|
|
54035
|
-
* 左缘 6×36 状态条 + 标题行 + 第二行工作区/标签;右侧灰字时长;悬停出「继续 /
|
|
54040
|
+
* 左缘 6×36 状态条 + 标题行 + 第二行工作区/标签;右侧灰字时长;悬停出「继续 / 完成 / 释放 / 取消」;
|
|
54036
54041
|
* 最右常驻「查看」放大镜钮。
|
|
54037
54042
|
*
|
|
54038
54043
|
* 「我的待办」卡只摆异常标记(进行中只靠左缘色条,不再重复一枚)。
|
|
@@ -54139,6 +54144,7 @@ body[data-ds-dark-theme]{
|
|
|
54139
54144
|
const resumeButton = tipBtn((0, react$1.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, { size: 14 }), "actionResume", "tipResume");
|
|
54140
54145
|
const finishButton = tipBtn((0, react$1.createElement)(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 14 }), "actionFinish", "tipFinish");
|
|
54141
54146
|
const releaseButton = tipBtn(null, "actionRelease", "tipRelease");
|
|
54147
|
+
const cancelButton = tipBtn(null, "actionCancel", "tipCancel");
|
|
54142
54148
|
const tagOf = (which, tip) => {
|
|
54143
54149
|
const text = statusLabel(which, t);
|
|
54144
54150
|
return (0, react$1.createElement)(Tag, {
|
|
@@ -54181,7 +54187,6 @@ body[data-ds-dark-theme]{
|
|
|
54181
54187
|
variant: "link",
|
|
54182
54188
|
size: "sm",
|
|
54183
54189
|
maxWidth: 180,
|
|
54184
|
-
title: t("filterByOwner", { name: ownerName }),
|
|
54185
54190
|
onClick: () => focusOwner(ownerUuid, ownerName)
|
|
54186
54191
|
}, `@${ownerName}`);
|
|
54187
54192
|
const handleRowClick = (event) => {
|
|
@@ -54204,25 +54209,27 @@ body[data-ds-dark-theme]{
|
|
|
54204
54209
|
text: row.task.workspace.title,
|
|
54205
54210
|
tone: "person",
|
|
54206
54211
|
maxWidth: 200,
|
|
54207
|
-
tip: t("filterByWorkspace", { name: row.task.workspace.title }),
|
|
54208
54212
|
onClick: () => setQuery({ workspace: row.task.workspace.id })
|
|
54209
|
-
}), (0, react$1.createElement)("span", { className: "dtl-taskrow__meta" }, metaText), (0, react$1.createElement)("span", { className: "dtl-taskrow__actions" }, actions.claim ? claimButton : null, actions.resume ? resumeButton : null, actions.finish ? finishButton : null, actions.release ? releaseButton : null, copyButton, actions.view ? viewButton : null)));
|
|
54213
|
+
}), (0, react$1.createElement)("span", { className: "dtl-taskrow__meta" }, metaText), (0, react$1.createElement)("span", { className: "dtl-taskrow__actions" }, actions.claim ? claimButton : null, actions.resume ? resumeButton : null, actions.finish ? finishButton : null, actions.release ? releaseButton : null, actions.cancel ? cancelButton : null, copyButton, actions.view ? viewButton : null)));
|
|
54210
54214
|
}
|
|
54211
54215
|
//#endregion
|
|
54212
54216
|
//#region src/client/trend-chart.ts
|
|
54213
54217
|
/**
|
|
54214
|
-
* 首页趋势图(右上卡):近 8 周 × 三根细柱 =
|
|
54218
|
+
* 首页趋势图(右上卡):近 8 周 × 三根细柱 = 结案 / 未结 / 新增。
|
|
54219
|
+
*
|
|
54220
|
+
* 术语(2026-10-29 用户拍板):**结案 = 完成 + 取消**(上位词),图上的「结案」柱就是两者之和;
|
|
54221
|
+
* 悬停时括号拆开「完成 X · 取消 Y」。skill 侧的桶仍是 `done` / `cancelled` 两个独立数,这里只做相加。
|
|
54215
54222
|
*
|
|
54216
54223
|
* 数据口径**全由 skill 算好**(`stats --trend week --last 8w --by-owner`,host 已跨工作区求和):
|
|
54217
|
-
*
|
|
54224
|
+
* 结案按结案时间、新增按**创建人**、未结是「该周结束时仍未结案」(待认领 + 进行中合成一个数)。
|
|
54218
54225
|
*
|
|
54219
54226
|
* 「只看我的」(2026-10-29 用户定稿):勾上 = 我的,不勾 = 所有;两套数随快照一起回来 ⇒ 勾选零请求。
|
|
54220
|
-
* 按人口径 = skill 的 per-owner:`added` 按 creator(我提的)、`done` / `open` 按 owner(我负责的)。
|
|
54227
|
+
* 按人口径 = skill 的 per-owner:`added` 按 creator(我提的)、`done` / `cancelled` / `open` 按 owner(我负责的)。
|
|
54221
54228
|
*
|
|
54222
54229
|
* 画法(2026-10-17 参考图口径):
|
|
54223
|
-
* - 柱宽 5px、组内 1px、**无圆角**;柱高百分比(祖先链有确定高度,见 ui.ts 的注释);
|
|
54230
|
+
* - 柱宽 7.5px、组内 1px、**无圆角**;柱高百分比(祖先链有确定高度,见 ui.ts 的注释);
|
|
54224
54231
|
* - y 轴三档刻度(0 / 半峰 / 峰)+ 淡网格线 + 底部基线;
|
|
54225
|
-
* -
|
|
54232
|
+
* - **只标「结案」数值**(三系列 × 8 周会糊成一片),未结 / 新增走 hover;
|
|
54226
54233
|
* - hover 整列三根一起提亮 + 自绘浮卡(原生 title 太慢且长相不一)——纯 CSS,无额外状态。
|
|
54227
54234
|
*/
|
|
54228
54235
|
const BAR_KINDS = [
|
|
@@ -54230,12 +54237,17 @@ body[data-ds-dark-theme]{
|
|
|
54230
54237
|
"added",
|
|
54231
54238
|
"open"
|
|
54232
54239
|
];
|
|
54233
|
-
|
|
54234
|
-
|
|
54235
|
-
|
|
54236
|
-
|
|
54237
|
-
|
|
54238
|
-
|
|
54240
|
+
/**
|
|
54241
|
+
* 四数归一:老版本 host 返回的桶可能没有 `cancelled`(甚至没有 `owners`),
|
|
54242
|
+
* 缺字段按 0 —— 这是「那一类记录本来就没有」,不是拿 0 充真值。
|
|
54243
|
+
* 不做这层兜底,`done + undefined` 会变成 NaN,把峰、刻度、柱高整张图一起毁掉。
|
|
54244
|
+
*/
|
|
54245
|
+
const norm = (cell) => ({
|
|
54246
|
+
added: cell?.added ?? 0,
|
|
54247
|
+
done: cell?.done ?? 0,
|
|
54248
|
+
cancelled: cell?.cancelled ?? 0,
|
|
54249
|
+
open: cell?.open ?? 0
|
|
54250
|
+
});
|
|
54239
54251
|
/** 系列名:只看我的时候「未结」就是「进行中」(我的任务必然有人接)。 */
|
|
54240
54252
|
const labelKey = (kind, mine) => kind === "done" ? "chartDone" : kind === "added" ? "chartAdded" : mine ? "chartDoing" : "chartOpen";
|
|
54241
54253
|
function TrendChart(props) {
|
|
@@ -54245,19 +54257,21 @@ body[data-ds-dark-theme]{
|
|
|
54245
54257
|
const mine = mineOnly && me !== null;
|
|
54246
54258
|
if (buckets.length === 0) return (0, react$1.createElement)("div", { className: "dtl-card dtl-trend" }, (0, react$1.createElement)("div", { className: "dtl-trend__foot" }, t("chartEmpty")));
|
|
54247
54259
|
/** 当前口径下这一桶的三个数:全量,或「我的」那条(没数据就是 0)。 */
|
|
54248
|
-
const counts = (bucket) => mine ? bucket.owners[me]
|
|
54260
|
+
const counts = (bucket) => mine ? norm(bucket.owners?.[me]) : norm(bucket);
|
|
54249
54261
|
/** 未结拆两段:进行中 = 各人未结之和;待认领 = 未结 − 进行中。
|
|
54250
54262
|
* 「只看我的」时只有进行中(我的任务必然有人接),不显示拆分行。 */
|
|
54251
54263
|
const breakdown = (bucket) => {
|
|
54252
|
-
const doing = Object.values(bucket.owners).reduce((sum, cell) => sum + cell.open, 0);
|
|
54264
|
+
const doing = Object.values(bucket.owners ?? {}).reduce((sum, cell) => sum + cell.open, 0);
|
|
54253
54265
|
return {
|
|
54254
54266
|
doing,
|
|
54255
54267
|
waiting: Math.max(0, bucket.open - doing)
|
|
54256
54268
|
};
|
|
54257
54269
|
};
|
|
54270
|
+
/** 结案 = 完成 + 取消(用户 2026-10-29 定的上位词);图上的「结案」柱就是它。 */
|
|
54271
|
+
const closed = (cell) => cell.done + cell.cancelled;
|
|
54258
54272
|
const peak = buckets.reduce((max, bucket) => {
|
|
54259
54273
|
const cell = counts(bucket);
|
|
54260
|
-
return Math.max(max, cell.added, cell
|
|
54274
|
+
return Math.max(max, cell.added, closed(cell), cell.open);
|
|
54261
54275
|
}, 0);
|
|
54262
54276
|
const top = peak === 0 ? 1 : peak;
|
|
54263
54277
|
const ticks = [
|
|
@@ -54266,7 +54280,7 @@ body[data-ds-dark-theme]{
|
|
|
54266
54280
|
"0"
|
|
54267
54281
|
];
|
|
54268
54282
|
const bar = (bucket, kind) => {
|
|
54269
|
-
const value = counts(bucket)[kind];
|
|
54283
|
+
const value = kind === "done" ? closed(counts(bucket)) : counts(bucket)[kind];
|
|
54270
54284
|
return (0, react$1.createElement)("div", {
|
|
54271
54285
|
className: `dtl-trend__bar dtl-trend__bar--${kind}`,
|
|
54272
54286
|
style: {
|
|
@@ -54278,7 +54292,7 @@ body[data-ds-dark-theme]{
|
|
|
54278
54292
|
const column = (bucket) => (0, react$1.createElement)("div", { className: "dtl-trend__col" }, (0, react$1.createElement)("div", { className: "dtl-trend__tip" }, (0, react$1.createElement)("div", { className: "dtl-trend__tip-row" }, t("periodRange", {
|
|
54279
54293
|
from: bucket.from,
|
|
54280
54294
|
to: bucket.to
|
|
54281
|
-
})), ...BAR_KINDS.map((kind) => (0, react$1.createElement)("div", { className: "dtl-trend__tip-row" }, (0, react$1.createElement)("span", { className: `dtl-trend__dot dtl-trend__dot--${kind}` }), kind === "open" && !mine ? `${t("chartOpen")} ${formatCount(counts(bucket).open)}(${t("chartDoing")} ${formatCount(breakdown(bucket).doing)} · ${t("chartWaiting")} ${formatCount(breakdown(bucket).waiting)})` : `${t(labelKey(kind, mine))} ${formatCount(counts(bucket)[kind])}`))), (0, react$1.createElement)("div", { className: "dtl-trend__bars" }, ...BAR_KINDS.map((kind) => bar(bucket, kind))), (0, react$1.createElement)("div", { className: "dtl-trend__x" }, bucket.to.slice(5)));
|
|
54295
|
+
})), ...BAR_KINDS.map((kind) => (0, react$1.createElement)("div", { className: "dtl-trend__tip-row" }, (0, react$1.createElement)("span", { className: `dtl-trend__dot dtl-trend__dot--${kind}` }), kind === "done" ? `${t("chartDone")} ${formatCount(closed(counts(bucket)))}(${t("chartFinished")} ${formatCount(counts(bucket).done)} · ${t("chartCancelled")} ${formatCount(counts(bucket).cancelled)})` : kind === "open" && !mine ? `${t("chartOpen")} ${formatCount(counts(bucket).open)}(${t("chartDoing")} ${formatCount(breakdown(bucket).doing)} · ${t("chartWaiting")} ${formatCount(breakdown(bucket).waiting)})` : `${t(labelKey(kind, mine))} ${formatCount(counts(bucket)[kind])}`))), (0, react$1.createElement)("div", { className: "dtl-trend__bars" }, ...BAR_KINDS.map((kind) => bar(bucket, kind))), (0, react$1.createElement)("div", { className: "dtl-trend__x" }, bucket.to.slice(5)));
|
|
54282
54296
|
const first = buckets[0];
|
|
54283
54297
|
const partial = trend.coverageFrom !== "" && trend.coverageFrom > first.from ? (0, react$1.createElement)("div", { className: "dtl-trend__foot" }, t("chartPartial", { from: trend.coverageFrom })) : null;
|
|
54284
54298
|
return (0, react$1.createElement)("div", { className: "dtl-card dtl-trend" }, (0, react$1.createElement)("div", { className: "dtl-trend__legend" }, ...BAR_KINDS.map((kind) => (0, react$1.createElement)("span", null, (0, react$1.createElement)("span", { className: `dtl-trend__dot dtl-trend__dot--${kind}` }), t(labelKey(kind, mine)))), me === null ? null : (0, react$1.createElement)("label", { className: "dtl-trend__mine" }, (0, react$1.createElement)("input", {
|
|
@@ -54501,7 +54515,8 @@ body[data-ds-dark-theme]{
|
|
|
54501
54515
|
});
|
|
54502
54516
|
/** 子集卡占比小字:分母为 0 或自己没有 ⇒ 不显示(不拿 0% 充数)。 */
|
|
54503
54517
|
const share = (part, whole, key) => part > 0 && whole > 0 ? t(key, { n: Math.round(part / whole * 100) }) : "";
|
|
54504
|
-
/** 统计台卡:数字 =
|
|
54518
|
+
/** 统计台卡:数字 = **结案**(完成 + 取消);有取消时小字拆「完成 X · 取消 Y」
|
|
54519
|
+
* (术语 2026-10-29 用户拍板:结案是上位词,完成只指正常结案)。
|
|
54505
54520
|
* 不可点,hover 给具体日期区间;数字 null(历史读不到)留 '—',不拿 0 充数。 */
|
|
54506
54521
|
const weekCard = (label, total, cancelled, from, to) => (0, react$1.createElement)(StatCard, {
|
|
54507
54522
|
label: t(label),
|
|
@@ -54606,8 +54621,8 @@ body[data-ds-dark-theme]{
|
|
|
54606
54621
|
onClick: onBack
|
|
54607
54622
|
}, `← ${t("backToConversation")}`), (0, react$1.createElement)("div", { style: titleStyle }, t("panelTitle"), (0, react$1.createElement)("span", {
|
|
54608
54623
|
style: buildTagStyle,
|
|
54609
|
-
title: `v0.0.
|
|
54610
|
-
}, `v0.0.
|
|
54624
|
+
title: `v0.0.125 · 261029-215620-858`
|
|
54625
|
+
}, `v0.0.125 261029-215620-858`))), (0, react$1.createElement)("div", { style: {
|
|
54611
54626
|
display: "flex",
|
|
54612
54627
|
alignItems: "center",
|
|
54613
54628
|
gap: "var(--dtl-space-3)"
|
|
@@ -54688,12 +54703,14 @@ body[data-ds-dark-theme]{
|
|
|
54688
54703
|
statStaleTitle: "停滞 = 进行中满 {n} 天没更新",
|
|
54689
54704
|
statOverdueTitle: "逾期 = 认领后满 {n} 天还没结案",
|
|
54690
54705
|
statBacklogTitle: "积压 = 待认领满 {n} 天没人接",
|
|
54691
|
-
statWeekDone: "
|
|
54692
|
-
statLastWeekDone: "
|
|
54693
|
-
statWeekSplit: "
|
|
54706
|
+
statWeekDone: "本周结案",
|
|
54707
|
+
statLastWeekDone: "上周结案",
|
|
54708
|
+
statWeekSplit: "完成 {done} · 取消 {cancelled}",
|
|
54694
54709
|
daysNone: "—",
|
|
54695
54710
|
daysValue: "{n} 天",
|
|
54696
|
-
chartDone: "
|
|
54711
|
+
chartDone: "结案",
|
|
54712
|
+
chartFinished: "完成",
|
|
54713
|
+
chartCancelled: "取消",
|
|
54697
54714
|
chartOpen: "未结",
|
|
54698
54715
|
chartAdded: "新增",
|
|
54699
54716
|
chartEmpty: "还没有可统计的记录",
|
|
@@ -54732,20 +54749,19 @@ body[data-ds-dark-theme]{
|
|
|
54732
54749
|
relMonths: "{n} 个月前",
|
|
54733
54750
|
relYears: "{n} 年前",
|
|
54734
54751
|
whenSubmitted: "更新于 {time}",
|
|
54735
|
-
filterByOwner: "只看 @{name} 的任务",
|
|
54736
|
-
filterByWorkspace: "只看工作区 {name}",
|
|
54737
|
-
filterByTag: "搜索标签 #{tag}",
|
|
54738
54752
|
copyTaskId: "点击复制任务 ID",
|
|
54739
54753
|
copiedTaskId: "已复制任务 ID",
|
|
54740
54754
|
copyFailed: "复制失败",
|
|
54741
54755
|
actionClaim: "认领",
|
|
54742
54756
|
actionResume: "继续",
|
|
54743
|
-
actionFinish: "
|
|
54757
|
+
actionFinish: "完成",
|
|
54744
54758
|
actionRelease: "释放",
|
|
54745
|
-
|
|
54746
|
-
|
|
54747
|
-
|
|
54748
|
-
|
|
54759
|
+
actionCancel: "取消",
|
|
54760
|
+
tipClaim: "将该任务归入本人名下,状态置为进行中",
|
|
54761
|
+
tipResume: "恢复对该任务的推进",
|
|
54762
|
+
tipFinish: "将该任务标记为完成,并归档入历史",
|
|
54763
|
+
tipRelease: "解除本人认领,任务退回公共池",
|
|
54764
|
+
tipCancel: "将该任务标记为取消并归档,不计入完成",
|
|
54749
54765
|
viewDetail: "查看详情",
|
|
54750
54766
|
fieldCreatorStamp: "创建于 {age}",
|
|
54751
54767
|
viewModeLabel: "视图",
|
|
@@ -54780,12 +54796,14 @@ body[data-ds-dark-theme]{
|
|
|
54780
54796
|
statStaleTitle: "stale = active with no update for {n}+ days",
|
|
54781
54797
|
statOverdueTitle: "overdue = claimed {n}+ days ago and still open",
|
|
54782
54798
|
statBacklogTitle: "backlog = unclaimed for {n}+ days",
|
|
54783
|
-
statWeekDone: "
|
|
54784
|
-
statLastWeekDone: "
|
|
54785
|
-
statWeekSplit: "
|
|
54799
|
+
statWeekDone: "Closed this week",
|
|
54800
|
+
statLastWeekDone: "Closed last week",
|
|
54801
|
+
statWeekSplit: "Done {done} · Cancelled {cancelled}",
|
|
54786
54802
|
daysNone: "—",
|
|
54787
54803
|
daysValue: "{n}d",
|
|
54788
|
-
chartDone: "
|
|
54804
|
+
chartDone: "Closed",
|
|
54805
|
+
chartFinished: "Done",
|
|
54806
|
+
chartCancelled: "Cancelled",
|
|
54789
54807
|
chartOpen: "Open",
|
|
54790
54808
|
chartAdded: "Added",
|
|
54791
54809
|
chartEmpty: "No records to chart yet",
|
|
@@ -54824,20 +54842,19 @@ body[data-ds-dark-theme]{
|
|
|
54824
54842
|
relMonths: "{n} mo ago",
|
|
54825
54843
|
relYears: "{n} y ago",
|
|
54826
54844
|
whenSubmitted: "updated {time}",
|
|
54827
|
-
filterByOwner: "Only tasks owned by @{name}",
|
|
54828
|
-
filterByWorkspace: "Only workspace {name}",
|
|
54829
|
-
filterByTag: "Search tag #{tag}",
|
|
54830
54845
|
copyTaskId: "Click to copy task ID",
|
|
54831
54846
|
copiedTaskId: "Task ID copied",
|
|
54832
54847
|
copyFailed: "Copy failed",
|
|
54833
54848
|
actionClaim: "Claim",
|
|
54834
54849
|
actionResume: "Resume",
|
|
54835
|
-
actionFinish: "
|
|
54850
|
+
actionFinish: "Finish",
|
|
54836
54851
|
actionRelease: "Release",
|
|
54837
|
-
|
|
54838
|
-
|
|
54839
|
-
|
|
54840
|
-
|
|
54852
|
+
actionCancel: "Cancel",
|
|
54853
|
+
tipClaim: "assign this task to me and set it to in progress",
|
|
54854
|
+
tipResume: "resume work on this task",
|
|
54855
|
+
tipFinish: "mark this task as done and archive it",
|
|
54856
|
+
tipRelease: "drop my claim and return the task to the public pool",
|
|
54857
|
+
tipCancel: "mark this task as cancelled and archive it; not counted as done",
|
|
54841
54858
|
viewDetail: "View details",
|
|
54842
54859
|
fieldCreatorStamp: "created {age}",
|
|
54843
54860
|
viewModeLabel: "View",
|