<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ContextFlow.git/backend/app, 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>Include elimination info in debate prompts so remaining debaters stop referencing eliminated participants</title>
<updated>2026-02-14T04:06:37+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-14T04:06:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=81d7ea4938e6de46c868fb1263a425abc07e1287'/>
<id>81d7ea4938e6de46c868fb1263a425abc07e1287</id>
<content type='text'>
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>
Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix debate elimination display and preserve original debater role numbers</title>
<updated>2026-02-14T03:59:20+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-14T03:59:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=ac9611478b4f394e62e4e4b2813dad337e22e698'/>
<id>ac9611478b4f394e62e4e4b2813dad337e22e698</id>
<content type='text'>
- Add elimination cards (orange themed) in Timeline showing who was convinced and by whom
- Add "N eliminated" badge in round headers
- Preserve original debater numbers after elimination by passing original_indices through debate_round()

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 elimination cards (orange themed) in Timeline showing who was convinced and by whom
- Add "N eliminated" badge in round headers
- Preserve original debater numbers after elimination by passing original_indices through debate_round()

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<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>Enable web search for Claude models via web_search_20250305 tool</title>
<updated>2026-02-14T01:36:41+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-14T01:36:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=9170f7dba01c076f1ac1367549095fd69524ba9d'/>
<id>9170f7dba01c076f1ac1367549095fd69524ba9d</id>
<content type='text'>
stream_claude was missing enable_google_search handling, so Claude models
could never perform web searches. Now passes the Anthropic web search tool
when enabled, affecting all modes (normal run, council, debate).

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>
stream_claude was missing enable_google_search handling, so Claude models
could never perform web searches. Now passes the Anthropic web search tool
when enabled, affecting all modes (normal run, council, debate).

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>Remove JWT token expiration</title>
<updated>2026-02-13T19:06:33+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T19:06:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=dbe25778281ded7db601520349e37a39a4b04ceb'/>
<id>dbe25778281ded7db601520349e37a39a4b04ceb</id>
<content type='text'>
Tokens no longer include an exp claim and decode skips expiry
verification, so users stay authenticated indefinitely.

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>
Tokens no longer include an exp claim and decode skips expiry
verification, so users stay authenticated indefinitely.

Co-Authored-By: Claude Opus 4.6 &lt;noreply@anthropic.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Add username fallback for API key resolution when JWT token expires</title>
<updated>2026-02-13T19:01:53+00:00</updated>
<author>
<name>YurenHao0426</name>
<email>blackhao0426@gmail.com</email>
</author>
<published>2026-02-13T19:01:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.blackhao.com/ContextFlow.git/commit/?id=6cfdb2b1c0af822376d57cc49b525d5641dfdbac'/>
<id>6cfdb2b1c0af822376d57cc49b525d5641dfdbac</id>
<content type='text'>
When the JWT token is expired or missing, endpoints could not resolve
user API keys and fell back to environment variables (which are unset).
Added resolve_user() helper that falls back to DB lookup by username
query param, and added ?user= to all frontend API calls as a belt-and-
suspenders approach alongside auth tokens.

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>
When the JWT token is expired or missing, endpoints could not resolve
user API keys and fell back to environment variables (which are unset).
Added resolve_user() helper that falls back to DB lookup by username
query param, and added ?user= to all frontend API calls as a belt-and-
suspenders approach alongside auth tokens.

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