tuiboard 0.14.0 → 0.14.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/CHANGELOG.md +12 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/input/handleKey.ts +3 -2
- package/src/store/index.ts +16 -8
- package/src/ui/Modal.tsx +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.14.1] - 2026-09-28
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **Shift+T clears the time blocks it carries to today** (#79). A time block
|
|
14
|
+
is a slot on a particular day, so moving every overdue task to today used to
|
|
15
|
+
keep theirs: tasks landed in today's agenda at hours nobody chose, stacked on
|
|
16
|
+
whatever was already there. Now each moved task drops its block and waits in
|
|
17
|
+
today's planner to be placed again (two keys, with arm mode). The banner
|
|
18
|
+
says how many were cleared. `t` / `m` on a single task and the headless
|
|
19
|
+
`tuiboard task defer` are unchanged.
|
|
20
|
+
|
|
10
21
|
## [0.14.0] - 2026-09-21
|
|
11
22
|
|
|
12
23
|
### Added
|
|
@@ -544,6 +555,7 @@ First public release on npm. This entry captures the full feature set at launch.
|
|
|
544
555
|
|
|
545
556
|
Built with [OpenTUI](https://opentui.com) + SolidJS on Bun.
|
|
546
557
|
|
|
558
|
+
[0.14.1]: https://github.com/NazzarenoGiannelli/tuiboard/releases/tag/v0.14.1
|
|
547
559
|
[0.14.0]: https://github.com/NazzarenoGiannelli/tuiboard/releases/tag/v0.14.0
|
|
548
560
|
[0.13.3]: https://github.com/NazzarenoGiannelli/tuiboard/releases/tag/v0.13.3
|
|
549
561
|
[0.13.2]: https://github.com/NazzarenoGiannelli/tuiboard/releases/tag/v0.13.2
|
package/README.md
CHANGED
|
@@ -509,7 +509,7 @@ A placed task stays armed, so it can be sized and moved straight away.
|
|
|
509
509
|
| Key | Action |
|
|
510
510
|
|---|---|
|
|
511
511
|
| `n` | New task in current column (quick-add syntax) |
|
|
512
|
-
| `Shift-T` | Reset ALL overdue tasks (any board) to today |
|
|
512
|
+
| `Shift-T` | Reset ALL overdue tasks (any board) to today — their time blocks are cleared, since a slot chosen for another day means nothing today |
|
|
513
513
|
| `Ctrl-Z` | Undo last mutation |
|
|
514
514
|
| `i` | Status file — the markdown file set as `status_file`, shown read-only |
|
|
515
515
|
| `?` | Help modal with the full reference |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tuiboard",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.1",
|
|
4
4
|
"description": "Terminal kanban for markdown task boards, with optional Today/Tomorrow planner, 24h agenda + calendar overlay, and a live view of your coding-agent sessions (Claude Code, Codex, OpenCode, Pi). Use only the panels you want.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/src/input/handleKey.ts
CHANGED
|
@@ -200,8 +200,9 @@ export function handleKey(
|
|
|
200
200
|
|
|
201
201
|
// Bulk: reset all overdue across all boards → today (Shift+T).
|
|
202
202
|
if (key.name === "t" && key.shift) {
|
|
203
|
-
const
|
|
204
|
-
|
|
203
|
+
const { tasks, blocks } = store.resetAllOverdueToToday();
|
|
204
|
+
const cleared = blocks > 0 ? ` (${blocks} time block${blocks > 1 ? "s" : ""} cleared)` : "";
|
|
205
|
+
store.flashBanner("info", tasks > 0 ? `Reset ${tasks} overdue → today${cleared}` : "No overdue tasks");
|
|
205
206
|
return;
|
|
206
207
|
}
|
|
207
208
|
|
package/src/store/index.ts
CHANGED
|
@@ -1641,9 +1641,15 @@ export function createTuiStore({ config }: CreateStoreOptions) {
|
|
|
1641
1641
|
|
|
1642
1642
|
// ─── Bulk: reset all overdue across all boards to today ──────────────────
|
|
1643
1643
|
|
|
1644
|
-
|
|
1644
|
+
/**
|
|
1645
|
+
* Every overdue task → today, and its time block goes with the day it was
|
|
1646
|
+
* planned for: a slot chosen for last Tuesday means nothing on today's
|
|
1647
|
+
* agenda, and re-placing it is two keys with arm mode (#79).
|
|
1648
|
+
*/
|
|
1649
|
+
function resetAllOverdueToToday(): { tasks: number; blocks: number } {
|
|
1645
1650
|
const today = isoToday();
|
|
1646
|
-
let
|
|
1651
|
+
let tasks = 0;
|
|
1652
|
+
let blocks = 0;
|
|
1647
1653
|
for (const lb of state.boards) {
|
|
1648
1654
|
const board = lb.board;
|
|
1649
1655
|
for (let ci = 0; ci < board.columns.length; ci++) {
|
|
@@ -1652,17 +1658,19 @@ export function createTuiStore({ config }: CreateStoreOptions) {
|
|
|
1652
1658
|
for (const child of col.children) {
|
|
1653
1659
|
if (!isTask(child)) continue;
|
|
1654
1660
|
if (!child.done && child.scheduled && child.scheduled < today) {
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1661
|
+
const ref = { boardPath: board.filepath, columnIndex: ci, taskIndex: ti };
|
|
1662
|
+
if (child.timeBlock) {
|
|
1663
|
+
setTimeBlock(ref, undefined);
|
|
1664
|
+
blocks++;
|
|
1665
|
+
}
|
|
1666
|
+
setScheduled(ref, today);
|
|
1667
|
+
tasks++;
|
|
1660
1668
|
}
|
|
1661
1669
|
ti++;
|
|
1662
1670
|
}
|
|
1663
1671
|
}
|
|
1664
1672
|
}
|
|
1665
|
-
return
|
|
1673
|
+
return { tasks, blocks };
|
|
1666
1674
|
}
|
|
1667
1675
|
|
|
1668
1676
|
function openModal(m: ModalKind): void {
|
package/src/ui/Modal.tsx
CHANGED
|
@@ -1307,7 +1307,7 @@ const HELP_SECTIONS: HelpSection[] = [
|
|
|
1307
1307
|
{
|
|
1308
1308
|
emoji: "📦",
|
|
1309
1309
|
title: "Bulk",
|
|
1310
|
-
rows: [["T", "Reset ALL overdue tasks (any board) to today"]],
|
|
1310
|
+
rows: [["T", "Reset ALL overdue tasks (any board) to today — clears their time blocks"]],
|
|
1311
1311
|
},
|
|
1312
1312
|
{
|
|
1313
1313
|
emoji: "🌐",
|