feat(nav): three tabs and a Lists board; drop Review
Next up, Today and Lists replace the six-button launcher. Lists is a 2x2 board (Next up / Waiting / Someday / Projects): full scrolling panes on a desktop window, preview cards on a phone, each header opening its list and each project opening its tasks. The Needs-attention card collapses to one row of status pills under the title. Review and its screen are gone; Done and Trash move under the Settings gear. v1.24. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SW5iVXkZ2JBHgyweMCRymY
This commit is contained in:
@@ -104,15 +104,14 @@ describe("area lens", () => {
|
||||
expect(store.tasksByStatus(store.getState(), "next").some((t) => t.id === legacy.id)).toBe(true);
|
||||
});
|
||||
|
||||
test("today, review and contexts respect the lens", () => {
|
||||
test("today and contexts respect the lens", () => {
|
||||
store.createTask({ title: "p", due_date: "2000-01-01", context: "@home" });
|
||||
store.setArea("work");
|
||||
store.createTask({ title: "w", due_date: "2000-01-01", context: "@office" });
|
||||
const s = store.getState();
|
||||
expect(store.todayTasks(s).overdue.every((t) => t.area === "work")).toBe(true);
|
||||
expect(store.todayTasks(s).overdue.map((t) => t.title)).toContain("w");
|
||||
expect(store.reviewBuckets(s).overdue.map((t) => t.title)).toContain("w");
|
||||
expect(store.reviewBuckets(s).overdue.map((t) => t.title)).not.toContain("p");
|
||||
expect(store.todayTasks(s).overdue.map((t) => t.title)).not.toContain("p");
|
||||
expect(store.knownContexts(s)).toEqual(["@office"]);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user