Repository navigation
2.5.4: meetings run on their own model; digests cover whole meetings;… - #47
Conversation
… 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>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 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".
| # 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 |
There was a problem hiding this comment.
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 👍 / 👎.
| 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); |
There was a problem hiding this comment.
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 👍 / 👎.
… 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.