Bug bash: tasks #1215

Open
opened 2026-10-06 19:01:19 +00:00 by kayg · 15 comments
Owner

AREA: Tasks and Journal/Log. Task create/complete/reorder/drag, due dates and reminders, recurring tasks, subtasks, task promotion, log entries with block anchors, day navigation, Copy link for tasks and log entries, quick add with natural-language dates, keyboard flows.

Tracking issue for the 2026-10-07 bug bash. Every bug found gets its own issue, linked here.

AREA: Tasks and Journal/Log. Task create/complete/reorder/drag, due dates and reminders, recurring tasks, subtasks, task promotion, log entries with block anchors, day navigation, Copy link for tasks and log entries, quick add with natural-language dates, keyboard flows. Tracking issue for the 2026-10-07 bug bash. Every bug found gets its own issue, linked here.
Author
Owner

Starting bash on job/bash-tasks, based on ff53d7b8b4da5a21f862d57dcc3496f8c019f647 (origin/dev at start). I read CLAUDE.md, CONTEXT.md, and the Tasks/Journal design sections (§§4, 17, 18, 29, 31, 33, 34, 42, 57, 59). I am tracing the real UI/API flows and will post each concrete finding here with evidence and a linked issue.

Starting bash on `job/bash-tasks`, based on `ff53d7b8b4da5a21f862d57dcc3496f8c019f647` (`origin/dev` at start). I read `CLAUDE.md`, `CONTEXT.md`, and the Tasks/Journal design sections (§§4, 17, 18, 29, 31, 33, 34, 42, 57, 59). I am tracing the real UI/API flows and will post each concrete finding here with evidence and a linked issue.
Author
Owner

Found and filed #1229: Tasks completion via the List/Board checkbox waits for the /tick response, disables the checkbox while it is pending, and has no Undo action. Source evidence is in apps/web/src/lib/tasks/index.svelte.ts (TaskIndex.toggle) and apps/web/src/lib/tasks/TasksWorkspace.svelte (toggleTask). I am reproducing the slow-response path against the local production server before the fix.

Found and filed #1229: Tasks completion via the List/Board checkbox waits for the `/tick` response, disables the checkbox while it is pending, and has no Undo action. Source evidence is in `apps/web/src/lib/tasks/index.svelte.ts` (`TaskIndex.toggle`) and `apps/web/src/lib/tasks/TasksWorkspace.svelte` (`toggleTask`). I am reproducing the slow-response path against the local production server before the fix.
Author
Owner

The production Task checkbox click repro surfaced shared primitive issue #1231. At 1440 px, Playwright 1.63 found the native Checkbox input visible/enabled but reported svg.checkbox-glyph intercepting pointer events; the /tick request did not begin. Evidence: target/tmp/task-checkbox-pointer-1230.txt. This is in packages/ui, outside this area, so it is filed only. I am switching the #1229 regression to keyboard Space so it can independently test the Tasks workspace write path.

The production Task checkbox click repro surfaced shared primitive issue #1231. At 1440 px, Playwright 1.63 found the native Checkbox input visible/enabled but reported `svg.checkbox-glyph` intercepting pointer events; the `/tick` request did not begin. Evidence: `target/tmp/task-checkbox-pointer-1230.txt`. This is in `packages/ui`, outside this area, so it is filed only. I am switching the #1229 regression to keyboard Space so it can independently test the Tasks workspace write path.
Author
Owner

Production pre-fix regression confirmed for #1229. The local release server with this worktree's production SPA received the delayed /api/v1/notes/tasks/tick write. After keyboard Space, the native input became checked but retained aria-checked="false", and the checkbox was disabled. The focused test failed at the accessible-state assertion before releasing the response. Evidence: target/tmp/task-checkbox-1229-before.log.

Production pre-fix regression confirmed for #1229. The local release server with this worktree's production SPA received the delayed `/api/v1/notes/tasks/tick` write. After keyboard Space, the native input became checked but retained `aria-checked="false"`, and the checkbox was disabled. The focused test failed at the accessible-state assertion before releasing the response. Evidence: `target/tmp/task-checkbox-1229-before.log`.
Author
Owner

Found and filed #1235: the hidden Task Tag action anchor reserves 30 px in the sidebar. The production E2E suite failed its zero-width assertion on the first 390 px capture (apps/web/e2e/tasks.mjs:486). Evidence: target/tmp/tasks-e2e-1232.txt. The Task sidebar renders the shared TagRow; I am checking its existing variants and tests before deciding whether a contained extension is safe.

Found and filed #1235: the hidden Task Tag action anchor reserves 30 px in the sidebar. The production E2E suite failed its zero-width assertion on the first 390 px capture (`apps/web/e2e/tasks.mjs:486`). Evidence: `target/tmp/tasks-e2e-1232.txt`. The Task sidebar renders the shared `TagRow`; I am checking its existing variants and tests before deciding whether a contained extension is safe.
Author
Owner

Found shared Undo action lifecycle bug #1238 during the required Task Board viewport/theme captures. Evidence: target/tmp/task-undo-action-expires-2026-10-07.txt and artifacts/bash-tasks/tasks/1440-tokyo-night-drag-after-drop.png. The focused Undo button remains visible after its separate 8-second callback expires; clicking it sends no inverse Task Status PATCH. The Tasks E2E run fails at the final screenshot Undo wait. The toaster and toast store are shared outside this area, so this finding is filed only under #1238.

Found shared Undo action lifecycle bug #1238 during the required Task Board viewport/theme captures. Evidence: `target/tmp/task-undo-action-expires-2026-10-07.txt` and `artifacts/bash-tasks/tasks/1440-tokyo-night-drag-after-drop.png`. The focused Undo button remains visible after its separate 8-second callback expires; clicking it sends no inverse Task Status PATCH. The Tasks E2E run fails at the final screenshot Undo wait. The toaster and toast store are shared outside this area, so this finding is filed only under #1238.
Author
Owner

Found Task Note Card marker gap #1239. Evidence: target/tmp/task-note-card-marker-2026-10-07.txt. The production Task Header flow creates a Task Note and fails its existing Card geometry assertion because NoteView renders note-card while its Task-specific 280 px .task-note-card rule has no matching class. This is inside the Tasks/Journal NoteView path, so I am fixing it on this branch with the existing regression flow.

Found Task Note Card marker gap #1239. Evidence: `target/tmp/task-note-card-marker-2026-10-07.txt`. The production Task Header flow creates a Task Note and fails its existing Card geometry assertion because NoteView renders `note-card` while its Task-specific 280 px `.task-note-card` rule has no matching class. This is inside the Tasks/Journal NoteView path, so I am fixing it on this branch with the existing regression flow.
Author
Owner

Fixed Task Note card marker issue #1239 in commit f7b65641b. task-header-659.mjs now passes the existing Card geometry assertion and proceeds through Task Header and Inspector interactions. It later encounters shared Undo callback expiry #1238; that remains filed only outside this area.

Fixed Task Note card marker issue #1239 in commit `f7b65641b`. `task-header-659.mjs` now passes the existing Card geometry assertion and proceeds through Task Header and Inspector interactions. It later encounters shared Undo callback expiry #1238; that remains filed only outside this area.
Author
Owner

Found Task List large-data failure #1240 during the requested performance profile. Evidence: target/tmp/tasks-list-1k-timeout-2026-10-07.txt. With 1,000 real Tasks and 4× CPU throttling, the 390 px Board completed three readiness runs, but the 390 px List produced no visible row within 180 seconds. The new local profile has no prior Tasks baseline. This is in-area; the issue is filed for investigation with the production screenshot and fetch/render split.

Found Task List large-data failure #1240 during the requested performance profile. Evidence: `target/tmp/tasks-list-1k-timeout-2026-10-07.txt`. With 1,000 real Tasks and 4× CPU throttling, the 390 px Board completed three readiness runs, but the 390 px List produced no visible row within 180 seconds. The new local profile has no prior Tasks baseline. This is in-area; the issue is filed for investigation with the production screenshot and fetch/render split.
Author
Owner

Correction to the first profile failure: #1240 is a false positive, not a confirmed app defect. tasks-perf.mjs hardcoded Oct 2/4 dates, so the default Next 7 days view filtered them out on Oct 7. The profile-tooling bug is filed as #1243 and I am updating the dates to remain active, then rerunning the local production profile.

Correction to the first profile failure: #1240 is a false positive, not a confirmed app defect. `tasks-perf.mjs` hardcoded Oct 2/4 dates, so the default Next 7 days view filtered them out on Oct 7. The profile-tooling bug is filed as #1243 and I am updating the dates to remain active, then rerunning the local production profile.
Author
Owner

Fixed the Tasks profile fixture on commit 5c02bb26c (#1243). It now places When/Deadline values relative to the run date, keeping seeded Tasks inside the default Next 7 days view. node --check apps/web/e2e/tasks-perf.mjs passed; the corrected 1,000-Task local profile is running.

Fixed the Tasks profile fixture on commit `5c02bb26c` (#1243). It now places When/Deadline values relative to the run date, keeping seeded Tasks inside the default Next 7 days view. `node --check apps/web/e2e/tasks-perf.mjs` passed; the corrected 1,000-Task local profile is running.
Author
Owner

Filed in this bug bash as #1246. The 2026-10-07 rerun confirmed the profile opens the default Inbox while its fixtures have When and Deadline dates. I am updating the profile route to select Next 7 days before collecting fresh route measurements.

Filed in this bug bash as #1246. The 2026-10-07 rerun confirmed the profile opens the default Inbox while its fixtures have When and Deadline dates. I am updating the profile route to select Next 7 days before collecting fresh route measurements.
Author
Owner

Filed during #1215 as #1258. The 1,000-Task local production profile completed route readiness at 390 px and 1440 px for Board, List and Matrix, then timed out waiting for #dnd-action-dragged-el in the 4x CPU drop-preview probe. Normal Tasks E2E dragging passed with its smaller real fixture; this stress-only finding is filed without a production change.

Filed during #1215 as #1258. The 1,000-Task local production profile completed route readiness at 390 px and 1440 px for Board, List and Matrix, then timed out waiting for `#dnd-action-dragged-el` in the 4x CPU drop-preview probe. Normal Tasks E2E dragging passed with its smaller real fixture; this stress-only finding is filed without a production change.
Author
Owner

Final report — bash-tasks (#1215)

Branch: job/bash-tasks
Base: origin/dev at ff53d7b8b4da5a21f862d57dcc3496f8c019f647
Head: 8c7d58d7331254fba870ab2facece1e84a4acefb (merge of origin/dev; no push)

Built

  • Task completion and reopening now update the visible Checkbox immediately. Per-Task writes serialize and retain accepted revisions; Undo restores the exact previous Status and does not overwrite a newer revision. Added a delayed-writer production E2E for rapid reversal and Undo.
  • Task sidebar Tag menus collapse their hidden action space while retaining the shared menu for pointer, keyboard, and touch use.
  • Task Note editor Cards receive their intended minimum height through the existing shared Card.
  • Tasks performance fixtures use dates relative to the run and profile the populated Next 7 days view. The profile can skip the separate drag-preview probe while that probe is being debugged.

Findings

Issue Symptom Severity Result
#1229 Task completion appeared blocked until the Notes write returned; rapid reversal and Undo were unavailable during a slow write. Major Fixed in 25e76858c
#1231 Shared Checkbox artwork intercepts pointer input in some cases. Major Filed only; shared UI is outside this area.
#1235 Hidden Task sidebar Tag actions reserved row width. Minor Fixed in 540dfc59c
#1238 Shared Toast action can expire while its toast remains visible, leaving an apparently available Undo action. Major Filed only; shared Toast is outside this area.
#1239 Task Note editor Card did not receive its intended minimum height. Minor Fixed in f7b65641b
#1240 Apparent 1k List timeout came from the profile selecting Inbox, which excludes the dated fixtures. This was a measurement false alarm, not a product timeout. Minor Profile route corrected in bc66e4a5b
#1243 Fixed benchmark dates age out and stop representing current Tasks. Minor Fixed in 5c02bb26c
#1246 Tasks profile opened the default view instead of the populated Next 7 days view. Minor Fixed in bc66e4a5b
#1258 At 4× CPU throttle, the 1k Task drag probe did not observe its dragged-element marker within 3 seconds. The probe does not establish that the drag gesture started or that normal Task dragging fails. Minor Filed only; no product fix confirmed.

The Task status action costs one O(N) lookup in the loaded Task projection and one Notes API write. Repeated writes to the same Task serialize; this path does not scan Home.

Performance

Measured locally with 1,000 real Tasks seeded through the API, a local release server, production SPA, and 4× browser CPU throttle. There is no Tasks baseline entry in docs/perf/baseline.json; these results are not a baseline comparison. Route readiness is one sample per route, from navigation to the first populated route selector:

Width Board List Matrix
390 px 12.431 s 29.242 s 23.956 s
1440 px 17.825 s 22.226 s 30.556 s

A 5-second burst from 24 clients returned 240/240 HTTP 200 responses: p50 543.6 ms, p95 837.1 ms. Server CPU averaged 20.6%, peaked at 67.39%; RSS averaged 525,548,706 bytes and peaked at 527,339,520 bytes. Host load average was 19.79/30.18/37.51 before and 35.05/35.69/36.61 after, so the local timing numbers are load-contaminated. Route timing was not sampled at 820 px. Five-minute memory, long tasks, and input latency were not measured.

UX gaps closed

  • Checkbox state and Status text respond before a delayed server write completes; a rapid reversal remains visible and is written in order.
  • Undo is available after the latest accepted write and carries its revision fence.
  • Task sidebar Tag actions no longer consume hidden row width; the existing shared action remains present.
  • Task Note Card sizing now applies to the real editor.
  • Profile fixtures remain current and the measured view contains the seeded dated Tasks.

UX gaps left

  • #1231 and #1238 affect shared components and remain filed only.
  • The #1258 large-board drag probe remains inconclusive; normal fixture drag checks passed.
  • The full two-tab, offline/online, reload-mid-action, rich-paste, screen-reader, and 5-minute memory/long-task/input-latency matrix was not completed for every Task and Journal flow.
  • task-header-659.mjs reached the Task Note geometry assertion but later hit the shared Toast behavior in #1238. Existing composer-warning-1127 and Calendar E2E selectors also have unrelated stale expectations; those expectations were preserved.

Decisions

  • The design rules specify immediate input and a server-owned writer but do not prescribe Task status scheduling. I used an in-memory queue per Task with the existing Notes writer and accepted revision fence, keeping the server contract unchanged.
  • The profile dates each fixture one and three days ahead and selects Next 7 days so seeded rows remain in the measured view on every run.

Files

  • apps/web/src/lib/tasks/{TaskCard.svelte,TaskList.svelte,TasksSidebar.svelte,TasksWorkspace.svelte,api.ts,index.svelte.ts}
  • apps/web/src/lib/components/{SidebarLinks.svelte,TagRow.svelte,TagRow.svelte.test.ts}
  • apps/web/src/lib/notes/NoteView.svelte
  • apps/web/e2e/{task-checkbox-1229.mjs,tasks-perf.mjs}
  • contracts/perf/{adoption-1058.json,exceptions.json}

Visual evidence: 85 production-app screenshots (390/820/1440 px, light/dark where captured, macOS shortcut emulation). The archive is attached to this issue and is not committed.

Gates

cargo fmt --check: exit 0; no output. No Rust source changed, so per-crate clippy/test were not run.

cd apps/web && bun run check (verbatim output):

PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages
perf-lint: PASS; 0 violations; 22548 scoped exceptions
User browser caches use userStorage; only documented device/public-link exceptions remain.
Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css.
Text sizes and UI shape values use shared role tokens.
Keyboard focus rings use the shared focus tokens.
UI transitions and animation options use shared motion tokens or documented exceptions.
Warn: Do not use empty rulesets (css)
svelte-check found 0 errors and 1 warning in 1 file

cd apps/web && bun run test (verbatim pass summary):

Test Files  287 passed (287)
     Tests  2036 passed (2036)
   Start at  02:33:05
   Duration  349.59s (transform 29%, environment 27%, import 22%, tests 17%, setup 6%)

Environment  |component| jsdom was created 114 times · 151.02s total, 29% of tracked time, re-done on every run

cargo clean: Removed 9262 files, 3.4GiB total. The web build and .svelte-kit outputs were deleted after verification.

## Final report — bash-tasks (#1215) Branch: `job/bash-tasks` Base: `origin/dev` at `ff53d7b8b4da5a21f862d57dcc3496f8c019f647` Head: `8c7d58d7331254fba870ab2facece1e84a4acefb` (merge of `origin/dev`; no push) ### Built - Task completion and reopening now update the visible Checkbox immediately. Per-Task writes serialize and retain accepted revisions; Undo restores the exact previous Status and does not overwrite a newer revision. Added a delayed-writer production E2E for rapid reversal and Undo. - Task sidebar Tag menus collapse their hidden action space while retaining the shared menu for pointer, keyboard, and touch use. - Task Note editor Cards receive their intended minimum height through the existing shared Card. - Tasks performance fixtures use dates relative to the run and profile the populated Next 7 days view. The profile can skip the separate drag-preview probe while that probe is being debugged. ### Findings | Issue | Symptom | Severity | Result | | --- | --- | --- | --- | | #1229 | Task completion appeared blocked until the Notes write returned; rapid reversal and Undo were unavailable during a slow write. | Major | Fixed in `25e76858c` | | #1231 | Shared Checkbox artwork intercepts pointer input in some cases. | Major | Filed only; shared UI is outside this area. | | #1235 | Hidden Task sidebar Tag actions reserved row width. | Minor | Fixed in `540dfc59c` | | #1238 | Shared Toast action can expire while its toast remains visible, leaving an apparently available Undo action. | Major | Filed only; shared Toast is outside this area. | | #1239 | Task Note editor Card did not receive its intended minimum height. | Minor | Fixed in `f7b65641b` | | #1240 | Apparent 1k List timeout came from the profile selecting Inbox, which excludes the dated fixtures. This was a measurement false alarm, not a product timeout. | Minor | Profile route corrected in `bc66e4a5b` | | #1243 | Fixed benchmark dates age out and stop representing current Tasks. | Minor | Fixed in `5c02bb26c` | | #1246 | Tasks profile opened the default view instead of the populated Next 7 days view. | Minor | Fixed in `bc66e4a5b` | | #1258 | At 4× CPU throttle, the 1k Task drag probe did not observe its dragged-element marker within 3 seconds. The probe does not establish that the drag gesture started or that normal Task dragging fails. | Minor | Filed only; no product fix confirmed. | The Task status action costs one O(N) lookup in the loaded Task projection and one Notes API write. Repeated writes to the same Task serialize; this path does not scan Home. ### Performance Measured locally with 1,000 real Tasks seeded through the API, a local release server, production SPA, and 4× browser CPU throttle. There is no Tasks baseline entry in `docs/perf/baseline.json`; these results are not a baseline comparison. Route readiness is one sample per route, from navigation to the first populated route selector: | Width | Board | List | Matrix | | --- | ---: | ---: | ---: | | 390 px | 12.431 s | 29.242 s | 23.956 s | | 1440 px | 17.825 s | 22.226 s | 30.556 s | A 5-second burst from 24 clients returned 240/240 HTTP 200 responses: p50 543.6 ms, p95 837.1 ms. Server CPU averaged 20.6%, peaked at 67.39%; RSS averaged 525,548,706 bytes and peaked at 527,339,520 bytes. Host load average was 19.79/30.18/37.51 before and 35.05/35.69/36.61 after, so the local timing numbers are load-contaminated. Route timing was not sampled at 820 px. Five-minute memory, long tasks, and input latency were not measured. ### UX gaps closed - Checkbox state and Status text respond before a delayed server write completes; a rapid reversal remains visible and is written in order. - Undo is available after the latest accepted write and carries its revision fence. - Task sidebar Tag actions no longer consume hidden row width; the existing shared action remains present. - Task Note Card sizing now applies to the real editor. - Profile fixtures remain current and the measured view contains the seeded dated Tasks. ### UX gaps left - #1231 and #1238 affect shared components and remain filed only. - The #1258 large-board drag probe remains inconclusive; normal fixture drag checks passed. - The full two-tab, offline/online, reload-mid-action, rich-paste, screen-reader, and 5-minute memory/long-task/input-latency matrix was not completed for every Task and Journal flow. - `task-header-659.mjs` reached the Task Note geometry assertion but later hit the shared Toast behavior in #1238. Existing `composer-warning-1127` and Calendar E2E selectors also have unrelated stale expectations; those expectations were preserved. ### Decisions - The design rules specify immediate input and a server-owned writer but do not prescribe Task status scheduling. I used an in-memory queue per Task with the existing Notes writer and accepted revision fence, keeping the server contract unchanged. - The profile dates each fixture one and three days ahead and selects Next 7 days so seeded rows remain in the measured view on every run. ### Files - `apps/web/src/lib/tasks/{TaskCard.svelte,TaskList.svelte,TasksSidebar.svelte,TasksWorkspace.svelte,api.ts,index.svelte.ts}` - `apps/web/src/lib/components/{SidebarLinks.svelte,TagRow.svelte,TagRow.svelte.test.ts}` - `apps/web/src/lib/notes/NoteView.svelte` - `apps/web/e2e/{task-checkbox-1229.mjs,tasks-perf.mjs}` - `contracts/perf/{adoption-1058.json,exceptions.json}` Visual evidence: [85 production-app screenshots](https://git.kayg.org/attachments/064a06f8-d223-4fb4-a8ba-14498502b47c) (390/820/1440 px, light/dark where captured, macOS shortcut emulation). The archive is attached to this issue and is not committed. ### Gates `cargo fmt --check`: exit 0; no output. No Rust source changed, so per-crate clippy/test were not run. `cd apps/web && bun run check` (verbatim output): ```text PASS production dependency licences: 759 locked package releases across apps/web, apps/docs and packages perf-lint: PASS; 0 violations; 22548 scoped exceptions User browser caches use userStorage; only documented device/public-link exceptions remain. Glass alpha, blur and backdrop-filter roles use packages/ui/src/tokens.css. Text sizes and UI shape values use shared role tokens. Keyboard focus rings use the shared focus tokens. UI transitions and animation options use shared motion tokens or documented exceptions. Warn: Do not use empty rulesets (css) svelte-check found 0 errors and 1 warning in 1 file ``` `cd apps/web && bun run test` (verbatim pass summary): ```text Test Files 287 passed (287) Tests 2036 passed (2036) Start at 02:33:05 Duration 349.59s (transform 29%, environment 27%, import 22%, tests 17%, setup 6%) Environment |component| jsdom was created 114 times · 151.02s total, 29% of tracked time, re-done on every run ``` `cargo clean`: `Removed 9262 files, 3.4GiB total`. The web `build` and `.svelte-kit` outputs were deleted after verification.
Author
Owner

For the merge round

This branch changed no Rust route or server contract. The merge round should run the repository adversarial matrix as required by the merge policy:

  • bash tests/adversarial/run.sh — prove the XUser and authorization matrices pass, then exercise the real-server hostile-input and concurrency probes. Report any non-SLOW finding; SLOW-only results are load.

There is no single web-wide E2E aggregate in apps/web/package.json. Run the area scripts:

  • cd apps/web && bun run test:e2e:tasks — Task create, status, layout, reorder, and drag flows.
  • cd apps/web && bun run test:e2e:notes — Notes-backed Task/Journal editor flows.
  • cd apps/web && bun run test:e2e:taskday-655-657 — Task day navigation.
  • cd apps/web && bun run test:e2e:deeplinks — stable Task and Note deep links.
  • cd apps/web && bun run test:e2e:task-header-659 — Task Note header; this currently reaches the geometry assertion but later exposes shared Toast issue #1238.
### For the merge round This branch changed no Rust route or server contract. The merge round should run the repository adversarial matrix as required by the merge policy: - `bash tests/adversarial/run.sh` — prove the XUser and authorization matrices pass, then exercise the real-server hostile-input and concurrency probes. Report any non-SLOW finding; SLOW-only results are load. There is no single web-wide E2E aggregate in `apps/web/package.json`. Run the area scripts: - `cd apps/web && bun run test:e2e:tasks` — Task create, status, layout, reorder, and drag flows. - `cd apps/web && bun run test:e2e:notes` — Notes-backed Task/Journal editor flows. - `cd apps/web && bun run test:e2e:taskday-655-657` — Task day navigation. - `cd apps/web && bun run test:e2e:deeplinks` — stable Task and Note deep links. - `cd apps/web && bun run test:e2e:task-header-659` — Task Note header; this currently reaches the geometry assertion but later exposes shared Toast issue #1238.
Commenting is not possible because the repository is archived.
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/calternal-v0#1215
No description provided.