<feed xmlns='http://www.w3.org/2005/Atom'>
<title>claudomator.git/web/test/tasks-board.test.mjs, branch main</title>
<subtitle>claudomator — task automation server
</subtitle>
<id>https://git.terst.org/claudomator.git/atom?h=main</id>
<link rel='self' href='https://git.terst.org/claudomator.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/'/>
<updated>2026-07-06T09:54:23+00:00</updated>
<entry>
<title>feat(web): add ensureTaskLogStream and taskLogStreams for task card log streaming (task 6)</title>
<updated>2026-07-06T09:54:23+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T09:54:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=2f83075719bbca0eb3682c61dbf4fe397894baff'/>
<id>urn:sha1:2f83075719bbca0eb3682c61dbf4fe397894baff</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(web): add cardContentSignature to skip log-tail in render dedup (task 5)</title>
<updated>2026-07-06T09:46:45+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T09:46:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=4344e4d49a94d5d636f4667812b556566ef71849'/>
<id>urn:sha1:4344e4d49a94d5d636f4667812b556566ef71849</id>
<content type='text'>
Prevents renderTasksIntoContainer from tearing down and rebuilding a task
card on every poll tick just because its .task-log-tail has accumulated
streamed log lines. Exports cardContentSignature which walks the card
element tree and returns a stable fingerprint that ignores .task-log-tail
and .running-log subtrees. Also preserves the existing log-tail node
across a real content-change swap so live EventSource streams survive.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(web): correct elapsed timer class/location, log-tail coverage, and tests (task 4 reviewer findings)</title>
<updated>2026-07-06T05:26:24+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T05:26:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=d2cbe9aa07afdc0aac33c959803d6a6aaef69b8e'/>
<id>urn:sha1:d2cbe9aa07afdc0aac33c959803d6a6aaef69b8e</id>
<content type='text'>
- Move elapsed timer span from card header to after meta block; add
  task-elapsed class alongside running-elapsed (Finding 1)
- Replace PENDING/QUEUED-only log-tail div with full if/else: placeholder
  div.task-log-tail-placeholder for queue states, div.task-log-tail with
  dataset.logTarget for all other states (Finding 2)
- Delete web/test/task-card-di.test.mjs; append correct tests to
  web/test/tasks-board.test.mjs covering log-tail and elapsed timer
  contracts (Finding 3)
- Thread doc parameter through createEditForm, renderSubtaskRollup, and
  renderQuestionFooter so createTaskCard is fully testable without a
  browser DOM

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(web): reviewer findings on Tasks board column model (task 1)</title>
<updated>2026-07-06T01:38:50+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T01:38:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=0ca84d28c6d358591582b5d61ef66ed0e266e260'/>
<id>urn:sha1:0ca84d28c6d358591582b5d61ef66ed0e266e260</id>
<content type='text'>
Finding 1 (Important): replace inline per-column sort comparators in
groupTasksByColumn with calls to the existing sortTasksByDate(tasks, descend)
helper. The old inline code fell back to epoch 0 for missing created_at,
sorting dateless tasks FIRST in ascending columns — diverging from the rest of
the codebase's convention (sortTasksByDate puts them LAST). Add two new tests
asserting that a task with no created_at sorts LAST in both an ascending
column (queue) and a descending column (interrupted).

Finding 2 (Important): revert web/test/tab-persistence.test.mjs — the two
'stories' assertions introduced in 54be094 were out of Task 1's scope and
belong to Task 2. Restore the original 'queue' assertions so commit messages
accurately reflect their contents; Task 2 will re-apply the fix intentionally.

Finding 3 (Minor): add the missing state-list uniqueness assertion to the
'every column key is unique' test: assert.equal(new Set(allStates).size,
allStates.length) so a state appearing in two columns is caught.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(web): add Tasks board column model (TASK_COLUMNS, columnForTaskState, groupTasksByColumn)</title>
<updated>2026-07-06T01:29:45+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T01:29:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=54be094e65ffafe69e3490cbe9b5ae37d1fa927d'/>
<id>urn:sha1:54be094e65ffafe69e3490cbe9b5ae37d1fa927d</id>
<content type='text'>
Pure logic layer for the new Tasks tab Kanban board: a 5-column partition of
all 10 task states (Queue/Running/Ready/Interrupted/Done) with per-column sort
directions (Queue+Ready oldest-first, Running+Interrupted+Done newest-first).

Also fixes 2 pre-existing stale assertions in tab-persistence.test.mjs
(default tab is 'stories', not 'queue', since cc6b323).

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
