Ehsan
10bacd499f
fix(metrics): persist the provider-reported total token count ( #5623 )
2026-08-22 10:57:10 +02:00
Atirna
c38d50daea
fix(settings): validate imported values ( #5597 )
...
* fix(settings): validate imported values
* test(settings): derive import validation expectations from shipped schema
Hardcoded literals broke when a key's max was null or the default
moved off "all". Read min/max and the current default from the
loaded schema so the bounds branch still has coverage.
* style(settings): apply ruff formatting
Signed-off-by: Atirna <288419661+atirna@users.noreply.github.com >
---------
Signed-off-by: Atirna <288419661+atirna@users.noreply.github.com >
Co-authored-by: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com >
2026-08-22 09:28:36 +02:00
Chanhyo Jung
2b39a8d000
test(library-deletion): harden lock and race-log contracts ( #5639 )
2026-08-22 07:55:07 +02:00
Ehsan
cc4b30be82
fix(searxng): skip in-use locks when the rate-limit tracker evicts at capacity ( #5607 )
...
* fix(searxng): skip in-use locks when the rate-limit tracker evicts at capacity
* docs(searxng): note the residual fetch-then-acquire eviction window
_get_url_lock returns the lock under _meta_lock and respect_rate_limit
acquires it afterwards, so a lock reports locked() == False between those
two steps and stays evictable. Record that the locked() check does not
cover that window, and why closing it would mean holding _meta_lock
across time.sleep.
---------
Co-authored-by: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com >
2026-08-21 17:02:05 +02:00
github-actions[bot]
d522ebb1e2
🤖 Update dependencies ( #5640 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-21 12:10:27 +02:00
github-actions[bot]
bedd2f1ae6
🤖 Update dependencies ( #5641 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.co
2026-08-21 12:00:53 +02:00
github-actions[bot]
3a4c620d46
🤖 Update dependencies ( #5642 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-21 11:59:38 +02:00
dependabot[bot]
e462418881
chore(deps): bump puppeteer from 25.7.0 to 25.8.0 in /tests/ui_tests ( #5652 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.7.0 to 25.8.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.7.0...puppeteer-v25.8.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 11:50:47 +02:00
dependabot[bot]
6c4db232c1
chore(deps-dev): bump puppeteer in /tests/api_tests_with_login ( #5653 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.7.0 to 25.8.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.7.0...puppeteer-v25.8.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.8.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 11:48:20 +02:00
dependabot[bot]
7d8c1fbdd2
chore(deps): bump puppeteer from 25.7.0 to 25.8.0 in /tests ( #5651 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.7.0 to 25.8.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.7.0...puppeteer-v25.8.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 11:45:31 +02:00
dependabot[bot]
055a3b2707
chore(deps): bump puppeteer from 25.7.0 to 25.8.0 in /tests/puppeteer ( #5650 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.7.0 to 25.8.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.7.0...puppeteer-v25.8.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.8.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-21 11:44:36 +02:00
github-actions[bot]
956f4f99c5
🤖 Update dependencies ( #5643 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-20 21:53:39 +02:00
github-actions[bot]
9a4945fde6
🤖 Update dependencies ( #5644 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-20 21:52:58 +02:00
github-actions[bot]
aa30afed0f
🤖 Update dependencies ( #5635 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-20 20:19:27 +02:00
dependabot[bot]
c80d325ec7
chore(deps-dev): bump puppeteer in /tests/api_tests_with_login ( #5611 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.6.0 to 25.7.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.6.0...puppeteer-v25.7.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.7.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 20:17:39 +02:00
dependabot[bot]
1f157f8f75
chore(deps): bump step-security/harden-runner from 2.20.1 to 2.21.0 ( #5615 )
...
Bumps [step-security/harden-runner](https://github.com/step-security/harden-runner ) from 2.20.1 to 2.21.0.
- [Release notes](https://github.com/step-security/harden-runner/releases )
- [Commits](https://github.com/step-security/harden-runner/compare/b09bb98e06d4d774595224525879c09bc6e98c40...05e31511f85b41b11d1cf0ef85d0992719546e2c )
---
updated-dependencies:
- dependency-name: step-security/harden-runner
dependency-version: 2.21.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: LearningCircuit <185559241+LearningCircuit@users.noreply.github.com >
2026-08-17 19:43:28 +02:00
dependabot[bot]
54da9c04c5
chore(deps): bump puppeteer from 25.5.0 to 25.7.0 in /tests/ui_tests ( #5610 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.5.0 to 25.7.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.5.0...puppeteer-v25.7.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.7.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 18:29:55 +02:00
dependabot[bot]
b64bdfe1f8
chore(deps): bump puppeteer from 25.5.0 to 25.7.0 in /tests/puppeteer ( #5608 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.5.0 to 25.7.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.5.0...puppeteer-v25.7.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.7.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 18:25:23 +02:00
dependabot[bot]
fa14cfd925
chore(deps): bump puppeteer from 25.6.0 to 25.7.0 in /tests ( #5609 )
...
Bumps [puppeteer](https://github.com/puppeteer/puppeteer ) from 25.6.0 to 25.7.0.
- [Release notes](https://github.com/puppeteer/puppeteer/releases )
- [Changelog](https://github.com/puppeteer/puppeteer/blob/main/CHANGELOG.md )
- [Commits](https://github.com/puppeteer/puppeteer/compare/puppeteer-v25.6.0...puppeteer-v25.7.0 )
---
updated-dependencies:
- dependency-name: puppeteer
dependency-version: 25.7.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 18:22:13 +02:00
dependabot[bot]
fbddec70ba
chore(deps): bump the codeql-action group with 3 updates ( #5613 )
...
Bumps the codeql-action group with 3 updates: [github/codeql-action/upload-sarif](https://github.com/github/codeql-action ), [github/codeql-action/init](https://github.com/github/codeql-action ) and [github/codeql-action/analyze](https://github.com/github/codeql-action ).
Updates `github/codeql-action/upload-sarif` from 4.37.6 to 4.37.7
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd )
Updates `github/codeql-action/init` from 4.37.6 to 4.37.7
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd )
Updates `github/codeql-action/analyze` from 4.37.6 to 4.37.7
- [Release notes](https://github.com/github/codeql-action/releases )
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md )
- [Commits](https://github.com/github/codeql-action/compare/5595ccaf912efad79be6eef63a5619ff05969be3...ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd )
---
updated-dependencies:
- dependency-name: github/codeql-action/upload-sarif
dependency-version: 4.37.7
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: codeql-action
- dependency-name: github/codeql-action/init
dependency-version: 4.37.7
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: codeql-action
- dependency-name: github/codeql-action/analyze
dependency-version: 4.37.7
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: codeql-action
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 18:21:10 +02:00
dependabot[bot]
8a2d35fb74
chore(deps): bump pdm-project/setup-pdm from 4.5 to 4.6 ( #5614 )
...
Bumps [pdm-project/setup-pdm](https://github.com/pdm-project/setup-pdm ) from 4.5 to 4.6.
- [Release notes](https://github.com/pdm-project/setup-pdm/releases )
- [Commits](https://github.com/pdm-project/setup-pdm/compare/973541a5febeafcfdadf8a51211435be6ecfd90f...544d7237314ee09c256785bd360f6b30add38b37 )
---
updated-dependencies:
- dependency-name: pdm-project/setup-pdm
dependency-version: '4.6'
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-17 18:19:39 +02:00
github-actions[bot]
28168963d7
chore: clear changelog fragments for 1.10.5 ( #5606 )
2026-08-16 20:49:41 +02:00
github-actions[bot]
02b48f0493
chore: auto-bump version to 1.10.5 ( #5605 )
v1.10.5
2026-08-16 18:07:16 +02:00
LearningCircuit
8ade42367a
feat(egress): per-origin private engine-URL allowlist, misconfiguration banners, and docs for the v1.10.3 SearXNG guard ( #5604 )
2026-08-16 17:53:00 +02:00
LearningCircuit
10f0964ae4
fix(security): resolve DevSkim code-scanning alerts (3 false positives + 1 TLS note) ( #5599 )
...
- test_notification_webhook_dns_pin.py: use ssl.create_default_context(
ssl.Purpose.CLIENT_AUTH) for the test HTTPS server instead of a hard-coded
ssl.PROTOCOL_TLS_SERVER (DS440072).
- test_password_verifier_primitive.py: suppress DS101155 on a test whose name
contains 'trusted' — it has no TLS/certificate code; the rule matched the word.
- ai-code-reviewer.yml: suppress DS173237 on the pinned reviewer commit SHA and
its integrity SHA-256 checksum — public integrity constants, not secrets.
2026-08-16 16:20:56 +02:00
github-actions[bot]
cc623a579a
chore: clear changelog fragments for 1.10.4 ( #5601 )
2026-08-16 16:09:04 +02:00
github-actions[bot]
ccf9b86d16
chore: auto-bump version to 1.10.4 ( #5593 )
v1.10.4
2026-08-16 13:13:03 +02:00
LearningCircuit
5f29e62916
fix(security): verify the password on a cached database connection ( #5596 )
2026-08-16 12:53:28 +02:00
github-actions[bot]
32db3e115a
chore: clear changelog fragments for 1.10.3 ( #5598 )
2026-08-16 11:44:25 +02:00
LearningCircuit
72f36e743c
chore(test): correct latent unprotected palette entry and document same-value select dependency ( #5595 )
...
Follow-ups from the #5592 review:
- SCOPE_PALETTE.unprotected claimed a red card border, but base.html
deliberately applies no card accent for that scope (the red cue is on
.ldr-privacy-panel[data-scope=unprotected]). The value was copied from
the panel border and would make a future selectScope('unprotected')
hang until the 10s waitForFunction timeout. Entry is dead code today
(test 2 asserts the option is absent), so no behavior change.
- Document that same-value selectScope calls rely on Puppeteer
dispatching change unconditionally plus the app handler saving on
every change; a no-op guard in either would time out the PUT barrier.
2026-08-16 09:44:46 +02:00
Ziyang Guo
cf2c072a0b
fix(notifications): parse service URL boundaries safely ( #5394 )
...
Preserve embedded commas without relying on Apprise internal parser APIs, and reject scheme-less boundary fragments before subset dispatch.
Keep snapshot-less egress filtering backward compatible and record only redacted fragment context in audit logs.
Fixes #5135
2026-08-16 00:00:01 +02:00
LearningCircuit
73f2680beb
fix(test): await egress scope save before navigation ( #5592 )
v1.10.3
2026-08-15 23:53:22 +02:00
LearningCircuit
34756532ae
harden(notifications): pin resolved IPs and block private resolution for the Apprise send ( #5575 )
2026-08-15 16:02:09 +02:00
github-actions[bot]
aa95e7b7db
chore: auto-bump version to 1.10.3 ( #5458 )
2026-08-15 12:38:39 +02:00
LearningCircuit
4a5f46d3e1
security(ci): pin ai-reviewer script to commit SHA with SHA-256 verification ( #5553 )
...
Replace the mutable @main ref with an immutable commit SHA (e7fe618a,
Friendly-AI-Reviewer v0.0.1) and verify the SHA-256 checksum before
execution. This closes a supply-chain gap where a compromised scoped
credential on Friendly-AI-Reviewer, or an accidental upstream change,
would execute arbitrary code with GITHUB_TOKEN and OPENROUTER_API_KEY
in CI.
Using commit SHA instead of tag because tags can be deleted or
force-moved — only commits are permanent in Git.
To update the reviewer script:
1. Cut a new release on Friendly-AI-Reviewer
2. Update REVIEWER_COMMIT and REVIEWER_SHA256 in this workflow
3. Commit
2026-08-15 11:40:41 +02:00
Ziyang Guo
da057e15e2
test(connected): detect active research leaks ( #5482 )
2026-08-15 11:16:12 +02:00
Ziyang Guo
64341e3f1b
fix(journals): parse list-form reputation responses ( #5460 )
...
Refs #5411
2026-08-15 11:10:50 +02:00
Ziyang Guo
8a0fede61b
test(search): cover cross-collection dedup tiebreak ( #5557 )
...
Pin that semantic search sorts by full-precision similarity before deduplicating the same document across collections.
Refs #5515
2026-08-15 11:09:19 +02:00
Ziyang Guo
e5b2eef2b2
fix(collections): validate identity field types ( #5459 )
...
Closes #5412
2026-08-15 11:08:12 +02:00
LearningCircuit
1340381c82
fix(search): honor search.time_period in Tavily; default to "all" ( #4936 ) ( #4978 )
2026-08-15 09:42:40 +02:00
LearningCircuit
2a2d127b86
chore(rag): follow-up nits from ORM typing review ( #5329 ) ( #5586 )
...
- assert the constructed index status is RAGIndexStatus.ACTIVE, not just
that it is some RAGIndexStatus member (REBUILDING would have passed)
- drop the last cast(int, ...) on RAGIndex.id, obsolete since the model
moved to Mapped[int] in #5329 (same rationale as the legacy_rekey
casts removed there)
2026-08-15 09:13:59 +02:00
Ehsan
2d30607be9
fix(questions): handle list-form LLM content in question generation and evidence extraction ( #5559 )
...
Eight call sites across the question-generation family and the evidence
evaluator read response.content directly and then apply string methods to it.
When a provider returns .content as a list of blocks (Anthropic extended
thinking or tool use) each raises AttributeError:
- standard_question.py:46 and :100 (.split / .strip().split)
- atomic_fact_question.py:84 and :154 (.strip().split)
- browsecomp_question.py:98 and :284 (.strip().split)
- flexible_browsecomp_question.py:63 (.strip().split)
- evidence/evaluator.py:61, via _parse_evidence_response (.strip().split)
StandardQuestionGenerator is the default question generator, so this fails the
main research loop on every iteration rather than only an exotic strategy.
Route all eight through get_llm_response_text, which extracts the text from the
blocks. This is the same routing #4644 applied to decomposition_question.py and
#5422 applied to news, GitHub search and topic organisation.
Refs #4615
2026-08-15 08:20:32 +02:00
LearningCircuit
99c07fe97f
harden(socket): re-validate session after room join to close connect/teardown race ( #5572 )
2026-08-14 21:58:02 +02:00
LearningCircuit
fbefcca783
harden(session): move logging outside SessionManager._lock to avoid re-entrancy ( #5571 )
2026-08-14 21:43:00 +02:00
LearningCircuit
6eb1b7ad9c
chore(test-tooling): enforce Node engines floor via engine-strict npmrc ( #5573 )
...
Add an engine-strict .npmrc under tests/accessibility_tests/ so the
existing engines.node >=22.19 floor fails fast instead of only warning.
Whitelist and un-ignore the new dot-config file per the repo conventions.
2026-08-14 21:37:02 +02:00
LearningCircuit
fb8e03fd2c
fix(egress): follow-up nits from searxng egress guard review ( #5574 )
2026-08-14 21:35:11 +02:00
LearningCircuit
a961ce5760
harden(search): validate engine instance URLs against egress scope ( #5560 )
2026-08-14 20:57:14 +02:00
LearningCircuit
778688295e
fix(security): disconnect sockets and drop subscriptions on logout ( #5535 )
2026-08-14 20:33:37 +02:00
LearningCircuit
fb49985aa8
fix(security): gate unencrypted filesystem PDF storage behind an operator setting ( #5537 )
2026-08-14 20:28:27 +02:00
LearningCircuit
4dbf31567c
fix(security): remove vulnerable extract-zip dependency ( #5569 )
2026-08-14 20:22:53 +02:00