@knpkv/jira-clockify 1.0.2 → 1.1.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.
- package/dist/package.json +7 -7
- package/dist/src/cli/auth.js +25 -9
- package/dist/src/cli/auth.js.map +1 -1
- package/dist/src/cli/config.js.map +1 -1
- package/dist/src/cli/fetchTicket.js +31 -10
- package/dist/src/cli/fetchTicket.js.map +1 -1
- package/dist/src/cli/fuzzySelect.js.map +1 -1
- package/dist/src/cli/layers.js +1 -1
- package/dist/src/cli/layers.js.map +1 -1
- package/dist/src/cli/setup.js +27 -12
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli/timer/edit.js +14 -7
- package/dist/src/cli/timer/edit.js.map +1 -1
- package/dist/src/cli/timer/start.js +9 -5
- package/dist/src/cli/timer/start.js.map +1 -1
- package/dist/src/cli/timer/status.js.map +1 -1
- package/dist/src/cli/timer/stop.js +48 -8
- package/dist/src/cli/timer/stop.js.map +1 -1
- package/dist/src/services/ClockifyAuth.js.map +1 -1
- package/dist/src/services/ConfigService.js +34 -1
- package/dist/src/services/ConfigService.js.map +1 -1
- package/dist/src/services/ReconcileService.js +0 -0
- package/dist/src/services/ReconcileService.js.map +1 -1
- package/dist/src/services/StateWriter.js +25 -1
- package/dist/src/services/StateWriter.js.map +1 -1
- package/dist/src/services/TicketService.js +15 -12
- package/dist/src/services/TicketService.js.map +1 -1
- package/dist/src/services/TimerService.js +74 -58
- package/dist/src/services/TimerService.js.map +1 -1
- package/dist/src/tui/App.js +70 -10
- package/dist/src/tui/App.js.map +1 -1
- package/dist/src/tui/components/BigTimer.js +1 -1
- package/dist/src/tui/components/BigTimer.js.map +1 -1
- package/dist/src/tui/components/Footer.js +11 -2
- package/dist/src/tui/components/Footer.js.map +1 -1
- package/dist/src/tui/components/Header.js +2 -1
- package/dist/src/tui/components/Header.js.map +1 -1
- package/dist/src/tui/components/PopupInput.js +10 -5
- package/dist/src/tui/components/PopupInput.js.map +1 -1
- package/dist/src/tui/components/PopupMessage.js +7 -3
- package/dist/src/tui/components/PopupMessage.js.map +1 -1
- package/dist/src/tui/components/TicketList.js +7 -8
- package/dist/src/tui/components/TicketList.js.map +1 -1
- package/dist/src/tui/components/TicketRow.js +7 -6
- package/dist/src/tui/components/TicketRow.js.map +1 -1
- package/dist/src/tui/components/TimerDisplay.js +1 -1
- package/dist/src/tui/components/TimerDisplay.js.map +1 -1
- package/dist/src/tui/hooks/useTerminalSize.js +3 -1
- package/dist/src/tui/hooks/useTerminalSize.js.map +1 -1
- package/dist/src/utils/time.js +72 -0
- package/dist/src/utils/time.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -12
- package/dist/test/ReconcileService.test.js +0 -146
- package/dist/test/ReconcileService.test.js.map +0 -1
- package/dist/test/TimerService.test.js +0 -607
- package/dist/test/TimerService.test.js.map +0 -1
- package/dist/test/commandSurface.test.js +0 -42
- package/dist/test/commandSurface.test.js.map +0 -1
- package/dist/test/fetchTicket.test.js +0 -89
- package/dist/test/fetchTicket.test.js.map +0 -1
- package/dist/test/stopPrompts.test.js +0 -93
- package/dist/test/stopPrompts.test.js.map +0 -1
- package/dist/test/time.test.js +0 -84
- package/dist/test/time.test.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopupInput.js","sourceRoot":"","sources":["../../../../src/tui/components/PopupInput.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"PopupInput.js","sourceRoot":"","sources":["../../../../src/tui/components/PopupInput.tsx"],"names":[],"mappings":";AAgBA,MAAM,UAAU,UAAU,CAAC,EACzB,YAAY,EACZ,KAAK,EACL,QAAQ,EAAE,SAAS,EACnB,QAAQ,EACR,WAAW,EACX,KAAK,EACW;IAGhB,SAAS,YAAY,CAAC,YAA6B;QACjD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,QAAQ,CAAC,YAAY,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IAED,OAAO,CACL,eACE,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,cAAc,EAAE,QAAQ;YACxB,UAAU,EAAE,QAAQ;SACrB,aAGD,cACE,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,CAAC;oBACN,IAAI,EAAE,CAAC;oBACP,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,MAAM;oBACd,eAAe,EAAE,iBAAiB;iBACnC,GACD,EAGF,eACE,KAAK,EAAE;oBACL,KAAK,EAAE,EAAE;oBACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACrB,aAAa,EAAE,QAAQ;oBACvB,eAAe,EAAE,SAAS;oBAC1B,MAAM,EAAE,IAAI;oBACZ,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;oBAC1C,WAAW,EAAE,CAAC;oBACd,YAAY,EAAE,CAAC;oBACf,UAAU,EAAE,CAAC;iBACd,aAGD,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,YACvB,eAAM,EAAE,EAAC,SAAS,YAAE,KAAK,GAAQ,GAC7B,EAGN,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YACrC,gBACE,OAAO,QACP,KAAK,EAAE,YAAY,IAAI,EAAE,EACzB,WAAW,EAAE,WAAW,IAAI,EAAE,EAC9B,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,GAC1E,GACE,EAGL,KAAK,CAAC,CAAC,CAAC,CACP,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YACrC,eAAM,EAAE,EAAC,SAAS,YAAE,KAAK,GAAQ,GAC7B,CACP,CAAC,CAAC,CAAC,IAAI,EAGR,cAAK,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YACrC,eAAM,EAAE,EAAC,SAAS,2CAAkC,GAChD,IACF,IACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -15,7 +15,7 @@ const typeIcons = {
|
|
|
15
15
|
error: "✗",
|
|
16
16
|
info: "●"
|
|
17
17
|
};
|
|
18
|
-
export function PopupMessage({ lines, onDismiss, onRetry, retrying = false, title, type = "info" }) {
|
|
18
|
+
export function PopupMessage({ dismissLabel = "OK", lines, onDismiss, onEdit, onRetry, retrying = false, title, type = "info" }) {
|
|
19
19
|
const color = typeColors[type];
|
|
20
20
|
const icon = typeIcons[type];
|
|
21
21
|
useKeyboard((key) => {
|
|
@@ -23,6 +23,10 @@ export function PopupMessage({ lines, onDismiss, onRetry, retrying = false, titl
|
|
|
23
23
|
onRetry();
|
|
24
24
|
return;
|
|
25
25
|
}
|
|
26
|
+
if (onEdit && (key.name === "e" || key.char === "e")) {
|
|
27
|
+
onEdit();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
26
30
|
if (key.name === "return" || key.name === "escape" || key.name === "q") {
|
|
27
31
|
onDismiss();
|
|
28
32
|
}
|
|
@@ -42,11 +46,11 @@ export function PopupMessage({ lines, onDismiss, onRetry, retrying = false, titl
|
|
|
42
46
|
height,
|
|
43
47
|
flexDirection: "column",
|
|
44
48
|
backgroundColor: "#1a1a2e",
|
|
45
|
-
border:
|
|
49
|
+
border: true,
|
|
46
50
|
borderColor: color,
|
|
47
51
|
paddingLeft: 2,
|
|
48
52
|
paddingRight: 2,
|
|
49
53
|
paddingTop: 1
|
|
50
|
-
}, children: [_jsx("box", { style: { height: 1 }, children: _jsx("text", { fg: color,
|
|
54
|
+
}, children: [_jsx("box", { style: { height: 1, flexDirection: "row", justifyContent: "center" }, children: _jsx("text", { fg: color, children: `${icon} ${title}` }) }), _jsx("box", { style: { height: 1 } }), lines.map((line, i) => (_jsx("box", { style: { height: 1, flexDirection: "row", justifyContent: "center" }, children: _jsx("text", { fg: line.color ?? "#CCCCCC", children: line.text }) }, i))), _jsx("box", { style: { height: 1 } }), _jsxs("box", { style: { height: 1, flexDirection: "row", justifyContent: "center", gap: 2 }, children: [onRetry ? (_jsx("box", { style: { backgroundColor: retryBg, paddingLeft: 2, paddingRight: 2 }, children: _jsx("text", { fg: "#000000", children: retrying ? "Retrying…" : "Retry (r)" }) })) : null, onEdit ? (_jsx("box", { style: { backgroundColor: "#FFAA00", paddingLeft: 2, paddingRight: 2 }, children: _jsx("text", { fg: "#000000", children: "Edit end (e)" }) })) : null, _jsx("box", { style: { backgroundColor: color, paddingLeft: 2, paddingRight: 2 }, children: _jsx("text", { fg: "#000000", children: `${dismissLabel} (enter)` }) })] })] }) }));
|
|
51
55
|
}
|
|
52
56
|
//# sourceMappingURL=PopupMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopupMessage.js","sourceRoot":"","sources":["../../../../src/tui/components/PopupMessage.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"PopupMessage.js","sourceRoot":"","sources":["../../../../src/tui/components/PopupMessage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@ import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";
|
|
|
9
9
|
import { ticketsAtom } from "../atoms/tickets.js";
|
|
10
10
|
import { filterTextAtom, isFilteringAtom, selectedIndexAtom } from "../atoms/ui.js";
|
|
11
11
|
import { TicketRow } from "./TicketRow.js";
|
|
12
|
+
const fillStyle = { flexGrow: 1, paddingLeft: 2 };
|
|
13
|
+
const listStyle = { flexDirection: "column", flexGrow: 1 };
|
|
14
|
+
const sectionHeaderStyle = { height: 1, paddingLeft: 2, paddingTop: 1 };
|
|
12
15
|
export function TicketList() {
|
|
13
16
|
const ticketResult = useAtomValue(ticketsAtom);
|
|
14
17
|
const selectedIndex = useAtomValue(selectedIndexAtom);
|
|
@@ -16,10 +19,10 @@ export function TicketList() {
|
|
|
16
19
|
const isFiltering = useAtomValue(isFilteringAtom);
|
|
17
20
|
const ticketState = AsyncResult.isSuccess(ticketResult) ? ticketResult.value : null;
|
|
18
21
|
if (!ticketState || ticketState.loading) {
|
|
19
|
-
return (_jsx("box", { style:
|
|
22
|
+
return (_jsx("box", { style: fillStyle, children: _jsx("text", { fg: "#FFCC00", children: "Loading tickets..." }) }));
|
|
20
23
|
}
|
|
21
24
|
if (ticketState.error) {
|
|
22
|
-
return (_jsx("box", { style:
|
|
25
|
+
return (_jsx("box", { style: fillStyle, children: _jsxs("text", { fg: "#FF4444", children: ["Error: ", ticketState.error] }) }));
|
|
23
26
|
}
|
|
24
27
|
// Apply filter
|
|
25
28
|
let tickets = ticketState.tickets;
|
|
@@ -30,12 +33,8 @@ export function TicketList() {
|
|
|
30
33
|
t.status.toLowerCase().includes(lower));
|
|
31
34
|
}
|
|
32
35
|
if (tickets.length === 0) {
|
|
33
|
-
return (_jsx("box", { style:
|
|
36
|
+
return (_jsx("box", { style: fillStyle, children: _jsx("text", { fg: "#888888", children: filterText ? `No tickets matching "${filterText}"` : "No tickets found" }) }));
|
|
34
37
|
}
|
|
35
|
-
return (_jsxs("box", { style: {
|
|
36
|
-
height: 1,
|
|
37
|
-
paddingLeft: 2,
|
|
38
|
-
paddingTop: 1
|
|
39
|
-
}, children: [_jsx("text", { fg: "#FFCC00", style: { fontWeight: "bold" }, children: "TICKETS" }), _jsx("text", { fg: "#888888", children: ` (${tickets.length})` }), isFiltering ? _jsx("text", { fg: "#00CCFF", children: ` filter: ${filterText}│` }) : null] }), tickets.map((ticket, i) => (_jsx(TicketRow, { ticket: ticket, selected: i === selectedIndex }, ticket.key)))] }));
|
|
38
|
+
return (_jsxs("box", { style: listStyle, children: [_jsxs("box", { style: sectionHeaderStyle, children: [_jsx("text", { fg: "#FFCC00", children: "TICKETS" }), _jsx("text", { fg: "#888888", children: ` (${tickets.length})` }), isFiltering ? _jsx("text", { fg: "#00CCFF", children: ` filter: ${filterText}│` }) : null] }), tickets.map((ticket, i) => (_jsx(TicketRow, { ticket: ticket, selected: i === selectedIndex }, ticket.key)))] }));
|
|
40
39
|
}
|
|
41
40
|
//# sourceMappingURL=TicketList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TicketList.js","sourceRoot":"","sources":["../../../../src/tui/components/TicketList.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"TicketList.js","sourceRoot":"","sources":["../../../../src/tui/components/TicketList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -38,11 +38,12 @@ export function TicketRow({ selected, ticket }) {
|
|
|
38
38
|
const bg = selected ? "#1a2744" : undefined;
|
|
39
39
|
const keyFg = selected ? "#00CCFF" : "#FFFFFF";
|
|
40
40
|
const summaryFg = selected ? "#CCCCCC" : "#999999";
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
const rowStyle = {
|
|
42
|
+
height: 1,
|
|
43
|
+
flexDirection: "row",
|
|
44
|
+
paddingLeft: 1,
|
|
45
|
+
...(bg ? { backgroundColor: bg } : {})
|
|
46
|
+
};
|
|
47
|
+
return (_jsxs("box", { style: rowStyle, children: [_jsx("text", { fg: keyFg, children: selected ? "❯" : " " }), _jsx("text", { fg: "#888888", children: typeIcon(ticket.type) }), _jsx("text", { fg: keyFg, children: ticket.key.padEnd(12) }), _jsx("text", { fg: summaryFg, children: ticket.summary.slice(0, 50).padEnd(50) }), _jsx("text", { fg: statusColor(ticket.status), children: ` ${ticket.status}` })] }));
|
|
47
48
|
}
|
|
48
49
|
//# sourceMappingURL=TicketRow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TicketRow.js","sourceRoot":"","sources":["../../../../src/tui/components/TicketRow.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TicketRow.js","sourceRoot":"","sources":["../../../../src/tui/components/TicketRow.tsx"],"names":[],"mappings":";AAeA,MAAM,WAAW,GAAG,CAAC,MAAc,EAAU,EAAE;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAC9B,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QAAE,OAAO,SAAS,CAAA;IACzE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAA;IAC1C,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/D,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAA;IAChE,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,SAAS,CAAA;IACrE,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IACjE,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE;IACxC,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3B,KAAK,KAAK;YACR,OAAO,IAAI,CAAA;QACb,KAAK,OAAO;YACV,OAAO,IAAI,CAAA;QACb,KAAK,MAAM;YACT,OAAO,GAAG,CAAA;QACZ,KAAK,MAAM;YACT,OAAO,GAAG,CAAA;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACb,OAAO,GAAG,CAAA;QACZ;YACE,OAAO,GAAG,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,UAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAkB;IAC5D,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9C,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAA;IAClD,MAAM,QAAQ,GAAG;QACf,MAAM,EAAE,CAAC;QACT,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,CAAC;QACd,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpB,CAAA;IAEpB,OAAO,CACL,eAAK,KAAK,EAAE,QAAQ,aAClB,eAAM,EAAE,EAAE,KAAK,YAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAQ,EAC9C,eAAM,EAAE,EAAC,SAAS,YAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAQ,EACjD,eAAM,EAAE,EAAE,KAAK,YAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EAC/C,eAAM,EAAE,EAAE,SAAS,YAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ,EACpE,eAAM,EAAE,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,YAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAQ,IAC9D,CACP,CAAA;AACH,CAAC"}
|
|
@@ -25,6 +25,6 @@ export function TimerDisplay() {
|
|
|
25
25
|
backgroundColor: "#0a1628",
|
|
26
26
|
paddingLeft: 2,
|
|
27
27
|
paddingTop: 1
|
|
28
|
-
}, children: [_jsxs("box", { style: { flexDirection: "row", gap: 2 }, children: [_jsx("text", { fg: "#00CC66",
|
|
28
|
+
}, children: [_jsxs("box", { style: { flexDirection: "row", gap: 2 }, children: [_jsx("text", { fg: "#00CC66", children: "\u25CF" }), _jsx("text", { fg: "#00CCFF", children: formatElapsed(elapsed) }), _jsx("text", { fg: "#888888", children: formatDuration(elapsed) })] }), _jsxs("box", { style: { flexDirection: "row", gap: 1, paddingLeft: 2 }, children: [_jsx("text", { fg: "#FFFFFF", children: timerState.ticketKey }), _jsx("text", { fg: "#AAAAAA", children: timerState.summary ?? "" })] }), _jsxs("box", { style: { flexDirection: "row", gap: 2, paddingLeft: 2 }, children: [timerState.projectId ? _jsx("text", { fg: "#555555", children: "proj" }) : null, timerState.billable !== null ? (_jsx("text", { fg: "#555555", children: timerState.billable ? "billable" : "non-billable" })) : null] })] }));
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=TimerDisplay.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimerDisplay.js","sourceRoot":"","sources":["../../../../src/tui/components/TimerDisplay.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IAEjD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,CACL,cACE,KAAK,
|
|
1
|
+
{"version":3,"file":"TimerDisplay.js","sourceRoot":"","sources":["../../../../src/tui/components/TimerDisplay.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AACH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAA;AAE7D,MAAM,UAAU,YAAY;IAC1B,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,eAAe,EAAE,CAAA;IAEjD,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,CACL,cACE,KAAK,EAAE;gBACL,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,MAAM;gBACb,aAAa,EAAE,QAAQ;gBACvB,UAAU,EAAE,QAAQ;gBACpB,cAAc,EAAE,QAAQ;gBACxB,eAAe,EAAE,SAAS;aAC3B,YAED,eAAM,EAAE,EAAC,SAAS,6EAA+D,GAC7E,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,eACE,KAAK,EAAE;YACL,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,MAAM;YACb,aAAa,EAAE,QAAQ;YACvB,eAAe,EAAE,SAAS;YAC1B,WAAW,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;SACd,aAED,eAAK,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,aAC1C,eAAM,EAAE,EAAC,SAAS,uBAAS,EAC3B,eAAM,EAAE,EAAC,SAAS,YAAE,aAAa,CAAC,OAAO,CAAC,GAAQ,EAClD,eAAM,EAAE,EAAC,SAAS,YAAE,cAAc,CAAC,OAAO,CAAC,GAAQ,IAC/C,EACN,eAAK,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,aAC1D,eAAM,EAAE,EAAC,SAAS,YAAE,UAAU,CAAC,SAAS,GAAQ,EAChD,eAAM,EAAE,EAAC,SAAS,YAAE,UAAU,CAAC,OAAO,IAAI,EAAE,GAAQ,IAChD,EACN,eAAK,KAAK,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,aACzD,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,eAAM,EAAE,EAAC,SAAS,qBAAY,CAAC,CAAC,CAAC,IAAI,EAC5D,UAAU,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAC9B,eAAM,EAAE,EAAC,SAAS,YAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,GAAQ,CAC9E,CAAC,CAAC,CAAC,IAAI,IACJ,IACF,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { useTerminalDimensions } from "@opentui/react";
|
|
2
|
+
/** Live terminal width in columns, tracking resizes (was previously hardcoded to 80). */
|
|
1
3
|
export function useTerminalSize() {
|
|
2
|
-
return
|
|
4
|
+
return useTerminalDimensions().width;
|
|
3
5
|
}
|
|
4
6
|
export function useDisplayMode() {
|
|
5
7
|
const cols = useTerminalSize();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTerminalSize.js","sourceRoot":"","sources":["../../../../src/tui/hooks/useTerminalSize.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTerminalSize.js","sourceRoot":"","sources":["../../../../src/tui/hooks/useTerminalSize.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAGtD,yFAAyF;AACzF,MAAM,UAAU,eAAe;IAC7B,OAAO,qBAAqB,EAAE,CAAC,KAAK,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,eAAe,EAAE,CAAA;IAC9B,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,SAAS,CAAA;IAC/B,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,SAAS,CAAA;IAC/B,OAAO,MAAM,CAAA;AACf,CAAC"}
|
package/dist/src/utils/time.js
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @module
|
|
5
5
|
*/
|
|
6
|
+
/** Format a `Date` as local `HH:MM` — the canonical clock format for prompts and confirmations. */
|
|
7
|
+
export function formatClock(date) {
|
|
8
|
+
return `${String(date.getHours()).padStart(2, "0")}:${String(date.getMinutes()).padStart(2, "0")}`;
|
|
9
|
+
}
|
|
6
10
|
/** Format seconds as `HH:MM:SS`. Negative input is clamped to 0. */
|
|
7
11
|
export function formatElapsed(seconds) {
|
|
8
12
|
const clamped = Math.max(0, seconds);
|
|
@@ -70,4 +74,72 @@ export function parseStartTime(input, now = new Date()) {
|
|
|
70
74
|
const parsed = new Date(trimmed);
|
|
71
75
|
return isNaN(parsed.getTime()) ? null : parsed;
|
|
72
76
|
}
|
|
77
|
+
/** Bare `HH:MM` (no date) — the form that gets the "roll back to yesterday" treatment. */
|
|
78
|
+
const HH_MM = /^(\d{1,2}):(\d{2})$/;
|
|
79
|
+
/**
|
|
80
|
+
* `HH:MM` for times on `now`'s calendar day, else `HH:MM on YYYY-MM-DD`. Used in error
|
|
81
|
+
* messages so a bare `HH:MM` that was rolled back to yesterday doesn't read as a nonsense
|
|
82
|
+
* comparison (e.g. "16:00 is at or before the start 10:00" when 16:00 means *last night*).
|
|
83
|
+
*/
|
|
84
|
+
function formatClockDated(date, now) {
|
|
85
|
+
const sameDay = date.getFullYear() === now.getFullYear() &&
|
|
86
|
+
date.getMonth() === now.getMonth() &&
|
|
87
|
+
date.getDate() === now.getDate();
|
|
88
|
+
if (sameDay)
|
|
89
|
+
return formatClock(date);
|
|
90
|
+
const ymd = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, "0")}-${String(date.getDate()).padStart(2, "0")}`;
|
|
91
|
+
return `${formatClock(date)} on ${ymd}`;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Resolve a corrected timer end for an End Correction — the user forgot to stop
|
|
95
|
+
* and is pulling the end back to when work actually finished.
|
|
96
|
+
*
|
|
97
|
+
* Accepts the same grammar as {@link parseStartTime} — `HH:MM` (local, today) or
|
|
98
|
+
* a full ISO-8601 timestamp — with one extra rule: a bare `HH:MM` that would land
|
|
99
|
+
* *after* `now` is rolled back to the previous local day. That is the overnight
|
|
100
|
+
* "forgot to stop" case: typing `18:00` at 09:00 means yesterday at 18:00. The
|
|
101
|
+
* rollback moves the calendar day (not a raw −24h) so it stays on the intended
|
|
102
|
+
* wall-clock time across a DST boundary. A full ISO timestamp carries its own
|
|
103
|
+
* date and is never rolled back — it is the escape hatch for ends more than a
|
|
104
|
+
* day ago.
|
|
105
|
+
*
|
|
106
|
+
* Enforces the End Correction bounds `start < end <= now`, returning a specific
|
|
107
|
+
* reason on violation so callers can re-prompt. Never clamps a bad value.
|
|
108
|
+
*/
|
|
109
|
+
export function resolveCorrectedEnd(params) {
|
|
110
|
+
const trimmed = params.input.trim();
|
|
111
|
+
if (!trimmed) {
|
|
112
|
+
return { ok: false, error: "Enter an end time as HH:MM (today) or a full ISO timestamp." };
|
|
113
|
+
}
|
|
114
|
+
let end;
|
|
115
|
+
if (HH_MM.test(trimmed)) {
|
|
116
|
+
const parsed = parseStartTime(trimmed, params.now);
|
|
117
|
+
if (!parsed)
|
|
118
|
+
return { ok: false, error: "Invalid time. Use HH:MM (24-hour), e.g. 17:30." };
|
|
119
|
+
// Bare HH:MM lands on today by default; if that is still in the future the
|
|
120
|
+
// user means the same clock time yesterday (they forgot overnight).
|
|
121
|
+
if (parsed.getTime() > params.now.getTime())
|
|
122
|
+
parsed.setDate(parsed.getDate() - 1);
|
|
123
|
+
end = parsed;
|
|
124
|
+
}
|
|
125
|
+
else if (isFullIsoTimestamp(trimmed)) {
|
|
126
|
+
const parsed = parseStartTime(trimmed, params.now);
|
|
127
|
+
if (!parsed)
|
|
128
|
+
return { ok: false, error: "Invalid ISO timestamp." };
|
|
129
|
+
end = parsed;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return { ok: false, error: "Unrecognised time. Use HH:MM (today) or a full ISO timestamp." };
|
|
133
|
+
}
|
|
134
|
+
if (end.getTime() > params.now.getTime()) {
|
|
135
|
+
return { ok: false, error: `End ${formatClockDated(end, params.now)} is in the future.` };
|
|
136
|
+
}
|
|
137
|
+
if (end.getTime() <= params.start.getTime()) {
|
|
138
|
+
return {
|
|
139
|
+
ok: false,
|
|
140
|
+
error: `End ${formatClockDated(end, params.now)} is at or before the start ${formatClockDated(params.start, params.now)}.`
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
return { ok: true, end };
|
|
144
|
+
}
|
|
73
145
|
//# sourceMappingURL=time.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oEAAoE;AACpE,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC3C,MAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAA;IACtB,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AACpG,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,GAAG,CAAA;IACtC,IAAI,OAAO,GAAG,IAAI;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,EAAE,GAAG,CAAA;IAC1E,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC3C,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAA;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IAC5D,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAA;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;IAC7C,OAAO,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,CAAA;AACpC,CAAC;AAED,wEAAwE;AACxE,MAAM,QAAQ,GAAG,6EAA6E,CAAA;AAE9F,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"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"}
|