<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ContextFlow.git/frontend/src/store, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/'/>
<entry>
<title>Add background task persistence for debate &amp; council operations</title>
<updated>2026-02-14T03:40:31+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-14T03:40:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=bdf381a2c8a0337f7459000f487a80f9cbbbdd2f'/>
<id>bdf381a2c8a0337f7459000f487a80f9cbbbdd2f</id>
<content type='text'>
Decouple debate/council execution from SSE connection lifecycle so tasks
survive browser disconnects. Backend runs work as asyncio.Tasks with
progressive disk persistence; frontend can reconnect and recover state.

- New backend/app/services/tasks.py: task registry, broadcast pattern,
  disk persistence at milestones, stale task cleanup on startup
- New endpoints: POST start_debate/start_council, GET task stream/poll
- Frontend stores taskId on nodes, recovers running tasks on page load
- _applyPartialEvents rebuilds stage text + data from accumulated events

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Decouple debate/council execution from SSE connection lifecycle so tasks
survive browser disconnects. Backend runs work as asyncio.Tasks with
progressive disk persistence; frontend can reconnect and recover state.

- New backend/app/services/tasks.py: task registry, broadcast pattern,
  disk persistence at milestones, stale task cleanup on startup
- New endpoints: POST start_debate/start_council, GET task stream/poll
- Frontend stores taskId on nodes, recovers running tasks on page load
- _applyPartialEvents rebuilds stage text + data from accumulated events

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Rework debate prompts, add turn-based rounds and self-elimination convergence</title>
<updated>2026-02-14T01:31:53+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-14T01:31:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=51b5208b9b5ac51b7e531ddeb59093c1cb381491'/>
<id>51b5208b9b5ac51b7e531ddeb59093c1cb381491</id>
<content type='text'>
- Round 1 parallel (form positions), Round 2+ sequential turn-based (each model
  sees current round's prior responses before speaking)
- Prompts treat user question as open-ended, not as a debate proposition — models
  form their own thesis in Round 1 then defend it
- Structured opposition: each model defends own unique position, not FOR/AGAINST
- Self-convergence: each model judges if convinced after each round, eliminated
  models drop out, last one standing wins and provides final summary
- Skip convergence/judge checks on Round 1 (still forming positions)
- Auto-save now triggers on councilData/debateData updates so intermediate rounds
  persist across page refresh

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Round 1 parallel (form positions), Round 2+ sequential turn-based (each model
  sees current round's prior responses before speaking)
- Prompts treat user question as open-ended, not as a debate proposition — models
  form their own thesis in Round 1 then defend it
- Structured opposition: each model defends own unique position, not FOR/AGAINST
- Self-convergence: each model judges if convinced after each round, eliminated
  models drop out, last one standing wins and provides final summary
- Skip convergence/judge checks on Round 1 (still forming positions)
- Auto-save now triggers on councilData/debateData updates so intermediate rounds
  persist across page refresh

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add LLM Debate mode for multi-round iterative model discussions</title>
<updated>2026-02-13T23:08:05+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T23:08:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=cb59ecf3ac3b38ba883fc74bf810ae9e82e2a469'/>
<id>cb59ecf3ac3b38ba883fc74bf810ae9e82e2a469</id>
<content type='text'>
Implements a debate feature alongside Council mode where 2-6 models
engage in multi-round discussions with configurable judge modes
(external judge, self-convergence, display-only), debate formats
(free discussion, structured opposition, iterative improvement, custom),
and early termination conditions.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Implements a debate feature alongside Council mode where 2-6 models
engage in multi-round discussions with configurable judge modes
(external judge, self-convergence, display-only), debate formats
(free discussion, structured opposition, iterative improvement, custom),
and early termination conditions.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add per-model council settings, Quick Chat council mode, and per-member trace selection</title>
<updated>2026-02-13T22:46:06+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T22:46:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=2adacdbfa1d1049a0497e55f2b3ed00551bf876f'/>
<id>2adacdbfa1d1049a0497e55f2b3ed00551bf876f</id>
<content type='text'>
Council members now support individual temperature, reasoning effort, web search, and
context trace overrides. Quick Chat inherits council config from the source node and
streams through the 3-stage council pipeline. Blueprint loading migrates old string[]
council formats to CouncilMemberConfig[].

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Council members now support individual temperature, reasoning effort, web search, and
context trace overrides. Quick Chat inherits council config from the source node and
streams through the 3-stage council pipeline. Blueprint loading migrates old string[]
council formats to CouncilMemberConfig[].

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add LLM Council mode for multi-model consensus</title>
<updated>2026-02-13T21:43:34+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T21:43:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=77be59bc0a6353e98846b9c9bfa2d566efea8b1f'/>
<id>77be59bc0a6353e98846b9c9bfa2d566efea8b1f</id>
<content type='text'>
3-stage council orchestration: parallel model queries (Stage 1),
anonymous peer ranking (Stage 2), and streamed chairman synthesis
(Stage 3). Includes scope-aware file resolution for Google/Claude
providers so upstream file attachments are visible to all providers.

- Backend: council.py orchestrator, /api/run_council_stream endpoint,
  query_model_full() non-streaming wrapper, resolve_provider() helper,
  resolve_scoped_file_ids() for Google/Claude scope parity with OpenAI
- Frontend: council toggle UI, model checkbox selector, chairman picker,
  SSE event parsing, tabbed Stage 1/2/3 response display
- Canvas: amber council node indicator with Users icon

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
3-stage council orchestration: parallel model queries (Stage 1),
anonymous peer ranking (Stage 2), and streamed chairman synthesis
(Stage 3). Includes scope-aware file resolution for Google/Claude
providers so upstream file attachments are visible to all providers.

- Backend: council.py orchestrator, /api/run_council_stream endpoint,
  query_model_full() non-streaming wrapper, resolve_provider() helper,
  resolve_scoped_file_ids() for Google/Claude scope parity with OpenAI
- Frontend: council toggle UI, model checkbox selector, chairman picker,
  SSE event parsing, tabbed Stage 1/2/3 response display
- Canvas: amber council node indicator with Users icon

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix theme desync when loading blueprints</title>
<updated>2026-02-13T20:20:38+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T20:20:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=30921396cb53f61eca90c85d692e0fc06d0f5ff4'/>
<id>30921396cb53f61eca90c85d692e0fc06d0f5ff4</id>
<content type='text'>
- Stop blueprints from overriding user theme preference on load
- Replace manual &lt;html&gt; dark class sync with store subscriber that
  keeps DOM in sync with any theme state change automatically

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Stop blueprints from overriding user theme preference on load
- Replace manual &lt;html&gt; dark class sync with store subscriber that
  keeps DOM in sync with any theme state change automatically

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Default theme to system/browser color scheme preference</title>
<updated>2026-02-13T20:14:16+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T20:14:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=dc7e380f41d5a89abcbc6329aabdc87a7b6b169f'/>
<id>dc7e380f41d5a89abcbc6329aabdc87a7b6b169f</id>
<content type='text'>
Read prefers-color-scheme media query on init instead of hardcoding
light mode. Sync dark class to &lt;html&gt; element at store creation so
global CSS applies immediately.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Read prefers-color-scheme media query on init instead of hardcoding
light mode. Sync dark class to &lt;html&gt; element at store creation so
global CSS applies immediately.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add auth headers to file upload/delete requests</title>
<updated>2026-02-13T18:35:13+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T18:35:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=2137e76e9dfcc13a2fcb1753844762cc4b99582a'/>
<id>2137e76e9dfcc13a2fcb1753844762cc4b99582a</id>
<content type='text'>
The frontend upload and delete file fetch calls were missing auth
headers, so the backend could not resolve user-specific API keys.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The frontend upload and delete file fetch calls were missing auth
headers, so the backend could not resolve user-specific API keys.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add Anthropic Files API and persistent Google file caching for all providers</title>
<updated>2026-02-13T05:45:13+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T05:45:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=61293147c1d6f1cdde689c36faad923b600a4f6e'/>
<id>61293147c1d6f1cdde689c36faad923b600a4f6e</id>
<content type='text'>
- Add anthropic_file_id/google_file_uri fields to FileMeta (backend + frontend)
- Eager upload to Anthropic and Google at file upload time (like OpenAI)
- Cache and reuse file references in prepare_attachments for all 3 providers
- Add document content block injection in stream_claude (file_id, base64, text fallback)
- Conditional beta streaming for Anthropic Files API references
- Persist on-demand upload results (changed flag + save_files_index)
- Clean up file deletion for all providers (Anthropic warn-only, Google deduplicated)

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Add anthropic_file_id/google_file_uri fields to FileMeta (backend + frontend)
- Eager upload to Anthropic and Google at file upload time (like OpenAI)
- Cache and reuse file references in prepare_attachments for all 3 providers
- Add document content block injection in stream_claude (file_id, base64, text fallback)
- Conditional beta streaming for Anthropic Files API references
- Persist on-demand upload results (changed flag + save_files_index)
- Clean up file deletion for all providers (Anthropic warn-only, Google deduplicated)

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Deduplicate merged trace messages and fix double-count in context</title>
<updated>2026-02-13T05:21:48+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T05:21:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=257b5bcbd09d4a6b7b1b27d7db4cc2aeed766c39'/>
<id>257b5bcbd09d4a6b7b1b27d7db4cc2aeed766c39</id>
<content type='text'>
- Add dedup helper in computeMergedMessages to remove duplicate messages
  by ID across all merge strategies (e.g. A-B-C + A-D-C → A-B-D-C)
- Fix getActiveContext adding merged trace messages twice (from both
  outgoingTraces and mergedTraces)

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Add dedup helper in computeMergedMessages to remove duplicate messages
  by ID across all merge strategies (e.g. A-B-C + A-D-C → A-B-D-C)
- Fix getActiveContext adding merged trace messages twice (from both
  outgoingTraces and mergedTraces)

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