<feed xmlns='http://www.w3.org/2005/Atom'>
<title>claudomator.git/web, 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-06T10:27:39+00:00</updated>
<entry>
<title>fix(web): restore running-log 300px height and close streams on card removal</title>
<updated>2026-07-06T10:27:39+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator</email>
</author>
<published>2026-07-06T10:27:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=fcf1821a62f151043df524deb111cadc4126e877'/>
<id>urn:sha1:fcf1821a62f151043df524deb111cadc4126e877</id>
<content type='text'>
CSS cascade fix: .task-log-tail.running-log combinator overrides
.task-log-tail's 90px max-height for RUNNING/BLOCKED cards, restoring
the intended 300px prominent log panel. Closes EventSource streams in
taskLogStreams when cards are removed from the board.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>refactor(web): remove dead old running/queue/ready/interrupted panel code (task 8)</title>
<updated>2026-07-06T10:14:25+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T10:14:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=a494627d341d68ed0828ce6f61980bd3a6efbe17'/>
<id>urn:sha1:a494627d341d68ed0828ce6f61980bd3a6efbe17</id>
<content type='text'>
Delete renderQueuePanel, renderInterruptedPanel, renderReadyPanel, renderRunningView,
startRunningLogStream (old version), updateRunningElapsed, isRunningTabActive, and
the runningViewLogSources map — all superseded by renderTasksBoard (task 7) and
ensureTaskLogStream (task 6). Zero remaining callers; all 315 JS tests pass.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(web): add renderTasksBoard and wire tasks tab into renderActiveTab (task 7)</title>
<updated>2026-07-06T10:01:55+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T10:01:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=7642af5cd7a512b1f6fab22db83ea5feb78b9502'/>
<id>urn:sha1:7642af5cd7a512b1f6fab22db83ea5feb78b9502</id>
<content type='text'>
Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<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>feat(web): extend createTaskCard with DI doc param, log-tail placeholder, elapsed timer (task 4)</title>
<updated>2026-07-06T05:12:47+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T05:12:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=d9db12a25a42d00e0f64ac87e10ac0b612b841a8'/>
<id>urn:sha1:d9db12a25a42d00e0f64ac87e10ac0b612b841a8</id>
<content type='text'>
- Export createTaskCard and add `doc = document` parameter; replace every
  document.createElement call inside the function with doc.createElement,
  enabling unit testing without a real DOM.
- RUNNING tasks: append a span.running-elapsed (data-started-at, elapsed
  text) to the card header, consistent with renderRunningView so
  updateRunningElapsed() picks it up automatically.
- PENDING/QUEUED tasks: append div.task-log-tail &gt; p.task-log-placeholder
  ("Waiting to start…") — the queue column has no execution yet, so a
  placeholder is shown instead of an empty log box.
- New web/test/task-card-di.test.mjs covers DI doc plumbing, placeholder
  presence/absence, and elapsed-timer presence/absence across states.

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(web): reviewer findings on Tasks board CSS (task 3 follow-up)</title>
<updated>2026-07-06T04:54:29+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T04:54:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=18170fd5fc68cee039e2a8b471d3a7d502866454'/>
<id>urn:sha1:18170fd5fc68cee039e2a8b471d3a7d502866454</id>
<content type='text'>
- Change .tasks-column width from 300px to 220px (spec literal value)
- Change .tasks-column-list max-height from 60vh to 70vh (spec literal value)
- Add missing .task-log-tail and .task-log-tail-placeholder rules after .tasks-column-list

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>feat(web): add Tasks tab nav entry point and CSS column layout</title>
<updated>2026-07-06T04:49:35+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T04:49:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=a03203ec4ef4048ff94e3ddb02ff7f124a762030'/>
<id>urn:sha1:a03203ec4ef4048ff94e3ddb02ff7f124a762030</id>
<content type='text'>
- Add &lt;button data-tab="tasks"&gt; to the nav bar (between Stories and Stats)
- Add &lt;div data-panel="tasks" hidden&gt;&lt;div class="tasks-board"&gt;&lt;/div&gt;&lt;/div&gt;
  to main as the panel container for the Tasks board
- Add .tasks-board, .tasks-column, .tasks-column-header, .tasks-column-count,
  .tasks-column-list CSS rules (mirrors .stories-* layout; 300px columns to
  accommodate task card content)

Co-Authored-By: Claude Sonnet 4.6 &lt;noreply@anthropic.com&gt;
</content>
</entry>
<entry>
<title>fix(web/test): update tab-persistence default-tab assertions from 'queue' to 'stories'</title>
<updated>2026-07-06T04:40:24+00:00</updated>
<author>
<name>Claudomator Agent</name>
<email>agent@claudomator.local</email>
</author>
<published>2026-07-06T04:40:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.terst.org/claudomator.git/commit/?id=694390df915f4fcbefd00d509bce4d33bed43868'/>
<id>urn:sha1:694390df915f4fcbefd00d509bce4d33bed43868</id>
<content type='text'>
Two test assertions in tab-persistence.test.mjs were checking that the default
tab is 'queue', but commit cc6b323 changed the default to 'stories' without
updating this test. Updates both the assertion values and the test description
strings to match current behaviour.

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