Commit log

a9843a0 Display labels in CLI and web table views

Amolith created

3775c76 Add type column and filter to CLI list and web project tables

Amolith created

15bbbc8 Extract task form into a shared macro for create and edit dialogs

Amolith created

95d6a72 Default list to open and in-progress tasks

Amolith created

3457f8f Improve work log entry rendering with visual separation

Amolith created

b6b476c Stop linkifying the current breadcrumb item

Amolith created

0d73e36 Document dev server command in AGENTS.md

Amolith created

9372483 Override default monospace font on textareas

Amolith created

7a88e98 Allow parent to be changed or cleared after creation

Amolith created

2f689bf Add edit dialog to task detail page

Amolith created

34b87bc Allow task_type to be updated after creation

Amolith created

37038f5 Add mode toggle and score tooltips to Next up section

Amolith created

a8e2fff Fix flaky editor tests by extracting env reads from resolution logic

Amolith created

5ef70a8 Reorder project page stat cards based on in-progress count

Amolith created

3e1481c Split project page tasks table into per-status sections

Amolith created

66f31dc Restructure webui into per-page modules

Amolith created

07c89de Align project page stat card order and borders with all projects page

Click to expand commit body
Reordered the three stat cards from Open/In progress/Closed to
In progress/Open/Closed to match the all projects page layout.
Added conditional border coloring using new classes border-success
and border-warning, matching the badge color logic where non-zero
counts get colored borders while zero counts use the default.

Amolith created

4162e78 Sort project cards on all projects page by activity tier

Amolith created

8ea1765 move task model types from db.rs into model.rs

Amolith created

9f68bc7 Colour-code status, priority, and effort by level

Click to expand commit body
Add per-value colour helpers to color.rs replacing the old hardcoded
single-colour-per-column approach.

CLI: open=green, in_progress=bold yellow, closed=default;
high=bold red, medium=default, low=cyan for both priority and effort.

Web UI: open=success, in_progress=warning, closed=default badge.
Project card badges are conditional on count (secondary when zero).
In-progress badge moves to front of row when nonzero.

Amolith created

d36d630 Keep status badge inline with task title on wrap

Click to expand commit body
Drop the hstack flex layout from the task header and make the h1 inline
so the badge flows naturally after the last word of the title regardless
of line count. Use vertical-align: text-bottom to align the badge with
the heading text and restore spacing below the header.

Amolith created

aa2e82f Override Oat accordion overflow to allow horizontal table scrolling

Click to expand commit body
Oat sets overflow:hidden on <details> for border-radius clipping, which
prevents .table's overflow-x:auto from producing a scrollbar. Override
to overflow:visible on details containing a .table wrapper and reset the
wrapper's width/min-width so it fits inside the details margins instead
of spilling out.

Amolith created

eb9776c Add "Select project…" default option to new task dialog

Amolith created

aa0beea Move 'td' to end of page titles for better scannability

Amolith created

e1afc56 Use sans font for description field in task creator dialog

Amolith created

19680da Split webui command into modules

Amolith created

2c21860 Add tri-state status controls to web UI task pages

Amolith created

66cd6e5 Update FAB icons and replace unicode checkmark with SVG

Click to expand commit body
Change the task creation icon from edit/pencil to checkmark, add a plus
indicator to the project folder icon, and replace the unicode checkmark
in the done button with a proper SVG icon for consistency.

Amolith created

c41bc11 Add write operations to the web UI

Amolith created

493e201 Add sortable columns to web UI task table

Amolith created

e516d35 Polish web UI templates, fix clipboard on insecure contexts

Click to expand commit body
- Extract task_table macro into templates/macros.html (DRY)
- Render markdown descriptions and logs via pulldown-cmark + ammonia
- Add friendly date display with <time> elements (JS-enhanced)
- Default project page to open-status filter
- Compact task detail layout (inline metadata, collapsible logs)
- Fix clipboard copy button: hidden by default, revealed only when
  navigator.clipboard is available (secure context), bound via
  addEventListener instead of inline onclick

Amolith created

2f88728 Add read-only web UI subcommand (td webui)

Amolith created

a68913e Move release to Fish script

Amolith created

47c4733 Bump version to v0.1.3

Amolith created

f8c671b Fix redundant [closed] markers in td show when all blockers are closed

Click to expand commit body
When all blockers are resolved, 'td show' was printing both '[all closed]'
as a prefix AND '[closed]' after each blocker ID. The prefix makes the
individual markers redundant.

Now:
- All closed: '[all closed] id1, id2' (no per-ID markers)
- All open: 'id1, id2' (no brackets)
- Mixed: 'open1, open2, closed1 [closed], closed2 [closed]'

Amolith created

36e3c46 Bump version to v0.1.2

Amolith created

9f57887 Open editor on bare td create or td update

Amolith created

4cf342e Describe init process

Amolith created

ea95ee1 fix typo

Amolith created

e1cce7f Update installation instructions

Amolith created

d98acb9 Bump ver in lockfile

Amolith created

e762ab5 Correct upload dir

Amolith created

ff696b7 Bump version to v0.1.1, add dist/ to .gitignore

Amolith created

e955543 Drop iana-time-zone dep by switching chrono from clock to now feature

Amolith created

1e5cba0 Add release, cross-build, pack, and upload targets to Makefile

Amolith created

31dfe69 Update AGENTS.md to reflect Loro storage and current module layout

Amolith created

1465630 Emit short td-XXXXXXX IDs consistently in all output

Click to expand commit body
Change TaskId serialization from the raw 26-char ULID to the short
td-XXXXXXX display form. This affects all JSON output from every
command that emits task identifiers: create, show, list, update,
done, reopen, dep, label, rm, log, next, ready, search, and doctor.

The root cause was TaskId's serde Serialize impl using
#[serde(transparent)] which forwarded the inner ULID string.
Replace it with a custom impl that emits short(). Additionally,
several commands built JSON manually via .as_str() or stored the
full ULID in plain Strings for human output — fix all of those.

Export retains full ULIDs via a dedicated Task::to_export_value()
method so that import round-tripping continues to work (import
needs exact ULIDs for CRDT key fidelity).

Update one test in cli_io.rs that was feeding show --json output
into import — the correct data source for import is export, which
is the designed round-trip path.

Amolith created

664e779 Add SyncAll: sync all shared projects when neither peer has one selected

Click to expand commit body
When both peers run 'td sync' without a project selected (no binding,
no --project, no TD_PROJECT), instead of bailing with 'both peers are
in bootstrap mode', enumerate all local projects on both sides, compute
the intersection by project_id, and sync each shared project.

Protocol change: replace the Bootstrap handshake (for the 'no project
selected' case) with a new SyncAll variant carrying a manifest of every
local project (name, id, version_vector). Both sides compute the
intersection by project_id, agree on an ordering (sort by project_id),
then loop over the shared set exchanging deltas per-project exactly like
the existing single-project Sync path.

Fallback cases handled:
- SyncAll peer + Sync peer: bootstrap from the peer that has a project
  selected, identical to the old Bootstrap path.
- SyncAll + Bootstrap (old td): bail with an upgrade hint.
- No intersection: friendly no-op message.
- Both have zero projects: no intersection, friendly no-op.
- Name mismatch for same project_id: sync anyway, print a warning.

Also adds:
- db::list_projects_in(root) - root-explicit helper used by build_local_manifest
- db::Store::project_id() - exposes read_project_id_from_doc via Store
- db::bootstrap_sync_at(data_root, cwd, project, delta) - HOME-free
  bootstrap used from async sync code where HOME may vary by peer

Tests: sync_all_exchanges_shared_projects, sync_all_no_intersection_is_noop

Amolith created

62f24b7 Implement td doctor: integrity checks and repairs

Amolith created

4570f5a Repurpose migrations to Loro schema upgrader

Amolith created