Animate active task indicators

This commit is contained in:
jb
2026-08-26 16:13:58 -04:00
parent 01b5f3ddee
commit b654c3c81b
4 changed files with 62 additions and 12 deletions
+9 -2
View File
@@ -23,15 +23,22 @@ export function updateTaskWidget(
const hasActiveTimer = tasks.some((task) => task.status === "in-progress" && task.startedAt !== undefined);
ctx.ui.setWidget(WIDGET_ID, (tui, theme) => {
let inProgressFrame = 0;
const timer = hasActiveTimer
? setInterval(() => tui.requestRender(), Math.max(1, refreshMs))
? setInterval(() => {
inProgressFrame += 1;
tui.requestRender();
}, Math.max(1, refreshMs))
: undefined;
timer?.unref();
return {
render(width: number): string[] {
const currentTasks = state.list();
return [renderProgressHeader(state.stats(), theme, width), ...renderWidgetTree(currentTasks, theme, width)];
return [
renderProgressHeader(state.stats(), theme, width),
...renderWidgetTree(currentTasks, theme, width, " ", inProgressFrame),
];
},
invalidate(): void {},
dispose(): void {