Skip to content

2.5.4: meetings run on their own model; digests cover whole meetings;… - #47

Merged
agr77one merged 1 commit into
mainfrom
release/2.5.4
Oct 7, 2026
Merged

agr77one merged 1 commit into
mainfrom
release/2.5.4

Conversation

@agr77one

@agr77one agr77one commented Oct 7, 2026

Copy link
Copy Markdown
Owner

… HTTP errors say why

Meetings (B61): digests/ask/weekly review use meetings.model (default qwen3.5:4b, floor >=4B params and >=8192 ctx checked against flm list --json) instead of the hotkey model; input clamped to the model window; reply budgets, temperature and a 240s timeout floor are now actually passed. New meeting_models action, Config > Meetings model picker + temperature.

Coverage (B62): digests record transcript_chars/truncated/coverage; default max_context_tokens 6000 -> 16000; "partial" marker + reader note; "Re-digest cut-off digests" action (dashboard-only, replaces cached digests).

Errors (V71): HTTPError is handled before URLError on every provider call (hotkeys, chat, Ollama list, Quill handshake) via ffp_llm_client.describe_http_error.

Also: FLM_MODEL_PATH repair warns once, idle_minutes 0 preserved, inline styles blocked by CSP replaced with classes, stale tracked config backup untracked.

652 tests pass; ruff and node --check clean.

… HTTP errors say why

Meetings (B61): digests/ask/weekly review use meetings.model (default qwen3.5:4b,
floor >=4B params and >=8192 ctx checked against `flm list --json`) instead of the
hotkey model; input clamped to the model window; reply budgets, temperature and a
240s timeout floor are now actually passed. New meeting_models action, Config >
Meetings model picker + temperature.

Coverage (B62): digests record transcript_chars/truncated/coverage; default
max_context_tokens 6000 -> 16000; "partial" marker + reader note; "Re-digest
cut-off digests" action (dashboard-only, replaces cached digests).

Errors (V71): HTTPError is handled before URLError on every provider call
(hotkeys, chat, Ollama list, Quill handshake) via ffp_llm_client.describe_http_error.

Also: FLM_MODEL_PATH repair warns once, idle_minutes 0 preserved, inline styles
blocked by CSP replaced with classes, stale tracked config backup untracked.

652 tests pass; ruff and node --check clean.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-07T14:57:44.644776Z d0b6f99 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@agr77one
agr77one merged commit 44b0221 into main Oct 7, 2026
5 checks passed
@agr77one
agr77one deleted the release/2.5.4 branch October 7, 2026 14:56

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d0b6f99309

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread scripts/ffp_meetings.py
# deliberately pessimistic chars/token: Cyrillic/CJK transcripts tokenize ~2x denser
# than English, and a too-long prompt is a hard provider error, not a soft truncation.
_PROMPT_OVERHEAD_TOKENS = 500
_FIT_CHARS_PER_TOKEN = 2.5

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Use a token-safe bound for multilingual transcripts

For transcripts whose tokenizer averages fewer than 2.5 characters per token, such as CJK text or emoji-heavy content, input_chars() permits more tokens than the advertised context window. For example, an 8192-token model can receive about 17,230 characters plus an 800-token reply, while 17,230 Chinese characters may require roughly that many tokens, so the provider can still reject the digest with the context-overflow error this change is intended to prevent. Use actual tokenization or a conservative worst-case character bound before sending the request.

Useful? React with 👍 / 👎.

Comment thread scripts/ui/web/app.js
const usable = info.models.filter((m) => m.usable);
if (!usable.some((m) => m.name === current)) {
// Saved choice isn't installed / is below the floor: say what will actually run.
add(current, `${current} — unavailable, ${fallback} will be used`, false);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Show the fallback model that will actually be selected

When the saved meeting model is unusable, this label always claims the built-in default will be used. However, resolve_model() tries the default and then the active model, and raises if neither qualifies. Thus, if qwen3.5:4b is not installed, the picker can promise that model even though processing will use another model or fail. Derive the displayed fallback from the same ordered eligibility logic as resolve_model().

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants