Commit Graph
12413 Commits
Author SHA1 Message Date
Trenton HandClaude Sonnet 5.5 a66803456e fix(benchmark): use restrict_queryset_to_visible in the visibility scenarios
get_objects_for_user_owner_aware no longer exists, so guardian_visibility_query raised ImportError.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-30 10:21:55 -07:00
stumpylogandClaude Sonnet 5 431f855772 chore: remove benchmark-commands spec/plan docs now that work is complete
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 10:18:50 -07:00
stumpylogandClaude Sonnet 5 0b825c4599 Fix: apply final-review fix wave (safety guard, date spread, MariaDB explain, history fields, memory footprint, minors)
Final whole-branch review before this tooling branch settles: add a
required --yes-i-know-this-wipes-the-database confirmation flag ahead of
--reset (it deletes ALL users/groups/documents in the target DB, not just
benchmark-created ones); spread seeded documents' created dates over a
3-year window instead of leaving them all on one default date; fix
capture_explain() to use MariaDB's ANALYZE syntax instead of Postgres-only
EXPLAIN ANALYZE (verified against real MariaDB 12.3 -- the old code was a
silent 1064 syntax error); record db_vendor/document_count in run/profile
history entries; shrink SeededData's memory footprint at scale by
returning counts instead of full ORM instance tuples; and a handful of
minor fixes (storage_path assignment, --explain warning instead of silent
no-op, harness.py repeat<1 guard, type annotations). All changes verified
against real Postgres and MariaDB containers on the VM, not just SQLite.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 10:18:50 -07:00
stumpylogandClaude Sonnet 5 c7914b9882 Fix: correct /api/tags/ endpoint URL in benchmarking skill
The skill documentation stated that run benchmarks /api/tags/ but
src/paperless_benchmark/endpoints.py actually uses
/api/tags/?page_size=100000. Update the skill's Command reference
section to match the actual endpoint definition.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 10:18:50 -07:00
stumpylog fec492fbe7 docs(benchmark): add paperless-benchmarking skill 2026-10-30 10:18:50 -07:00
stumpylog 1a587937f2 fix(benchmark): fully clear users/groups on reset, grant perf_target model perms 2026-10-30 10:18:50 -07:00
stumpylogandClaude Sonnet 5 2e62819a55 docs: add Task 10 (quirk fixes) and Task 11 (skill) to benchmark plan
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 10:18:50 -07:00
stumpylog 17ffec18cb fix(benchmark): reuse seeded data in profile instead of reseeding
_handle_profile unconditionally called seed_benchmark_dataset every
run, colliding with an IntegrityError against data seeded by a prior
seed/profile call. Look up the existing perf_target user instead,
matching _handle_run's already-correct pattern, and raise a
CommandError pointing at `seed` if no dataset exists.

Scenario.run/queryset_for_explain now take a User directly instead of
a SeededData, since only data.users[0] (perf_target) was ever used.

profile no longer seeds, so it drops the --tier dependency: the
printed line and history entry no longer include a tier/(tier=...)
suffix, and --tier's help text now only mentions `seed`.
2026-10-30 10:18:50 -07:00
stumpylog d3bf158319 feat(benchmark): add manage.py benchmark command (seed/run/profile/list-scenarios) 2026-10-30 10:18:50 -07:00
stumpylog 7b28cb6b0a feat(benchmark): add pluggable profile-scenario registry 2026-10-30 10:18:50 -07:00
stumpylog 5b3ecfbc86 feat(benchmark): add timed API endpoint scenarios 2026-10-30 10:18:50 -07:00
stumpylogandClaude Sonnet 5 c9a010a1ef docs: add implementation plan for benchmark management commands
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 10:18:50 -07:00
stumpylog 2d07f469ef feat(benchmark): add local JSONL results history log 2026-10-30 10:18:50 -07:00
stumpylog 90f63bd553 feat(benchmark): add tiered dataset seeding 2026-10-30 10:18:50 -07:00
stumpylog 694b831118 feat(benchmark): add per-backend reset and explain helpers 2026-10-30 10:18:50 -07:00
stumpylog 956cf7e03c feat(benchmark): add run_profile timing harness 2026-10-30 10:18:50 -07:00
stumpylogandClaude Sonnet 5 6fcacbb1aa feat(benchmark): scaffold paperless_benchmark app
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 10:18:50 -07:00
stumpylogandClaude Sonnet 5 57f44de03a docs: add design spec for benchmark management commands
Merges the standalone run_benchmarks.py/seed_benchmark_data.py scripts
and the tools/profiling branch's Postgres-only harness into one
cross-backend `manage.py benchmark` command suite.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-30 10:18:50 -07:00
GitHub Actions 8a67481a9d Auto translate strings 2026-10-30 16:59:59 +00:00
shamoon 652f964f5d Tweak: move preview button in doc list (#14594) 2026-10-30 09:58:29 -07:00
shamoon 80a1827fa0 Fix: checksum light mode display and cf dropdown mobile position (#14590) 2026-10-30 07:03:08 -07:00
github-actions[bot]andshamoon e240c89f27 Documentation: Add v3.4.0 changelog (#14582)
* Changelog v3.4.0 - GHA

* Remove 3.3.4 PR

---------

Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2026-10-29 15:45:43 -07:00
shamoon ced3cf9303 Bump version to 3.4.0 v3.4.0 2026-10-29 15:11:14 -07:00
Trenton HandClaude Sonnet 5.5 08a7d1d4b8 Chore: Consolidate test sample files (#14430)
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-29 12:43:51 -07:00
github-actions[bot]andCrowdin Bot 47052d6506 New Crowdin translations by GitHub Action (#14499)
Co-authored-by: Crowdin Bot <support+bot@crowdin.com>
2026-10-29 18:35:37 +00:00
shamoon 9bd28d3e57 Chore: bump some frontend deps for security fixes (#14581) 2026-10-29 11:09:55 -07:00
shamoon 9c4c9f2386 Enhancement: support custom fields in workflow title templates (#14564) 2026-10-29 17:40:53 +00:00
GitHub Actions cc54e3e5aa Auto translate strings 2026-10-29 17:26:37 +00:00
shamoon 67c194978e Enhancement: relative date custom field queries (#14549) 2026-10-29 17:25:21 +00:00
shamoon c21bdab5c8 Fix: truncate long version labels in dropdown (#14578) 2026-10-28 15:44:52 -07:00
Trenton H ea9e5e0732 Chore: bump brotli, djangorestframework, filelock, msgpack, setuptools for security fixes (#14575) 2026-10-28 15:38:15 -07:00
Trenton H ac955efdbf Chore: bump django-allauth to 65.20 and oauthlib to 4.0 (#14570)
allauth 65.20 is the first release allowing oauthlib 4, which carries the fixes for the open oauthlib advisories
2026-10-28 09:55:07 -07:00
shamoon ec52490e4a Fixhancement: show better result for revoked / expired tasks (#14566) 2026-10-28 08:59:07 -07:00
GitHub Actions fed9e8d783 Auto translate strings 2026-10-28 02:55:55 +00:00
shamoon d4457efe44 Fix: move re-index after workflow runs on doc edit (#14558) 2026-10-27 19:54:30 -07:00
Jan Kleineandshamoon 7d8147c21d Performance: reduce tasks badge load times (#14552)
---------

Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
2026-10-26 14:23:33 +00:00
GitHub Actions 5f17b1a310 Auto translate strings 2026-10-24 21:12:29 +00:00
shamoon 63eca7b427 Enhancement: skip local 2FA for trusted OIDC AMR (#14403) 2026-10-24 21:11:10 +00:00
GitHub Actions c88d02ab42 Auto translate strings 2026-10-24 20:30:00 +00:00
Trenton H 4299e9b12e Chore: consolidate direct permission grant lookups into one helper (#14456)
* Chore: drop get_groups_with_only_permission

It worked around get_groups_with_perms lacking only_with_perms_in, which
django-guardian added in 3.1.0. The pinned version is newer.

* Chore: consolidate direct grant lookups into get_permission_grantees

Six places listed who holds a permission on an object, each with its own
query and result shape, and one had already drifted into expanding group
members.

* Chore: drop the unreachable empty viewer grant default

get_permission_grantees returns an entry for every requested document.
2026-10-24 13:28:25 -07:00
Trenton H 10a1a9eae8 Chore: drop get_groups_with_only_permission (#14454)
It worked around get_groups_with_perms lacking only_with_perms_in, which
django-guardian added in 3.1.0. The pinned version is newer.
2026-10-24 13:28:25 -07:00
Trenton H e7d70497c2 Chore: Consolidate to a single way to set permission on an object (#14453)
* Chore: drop set_permissions_for_object in favor of the bulk helper

The same grant rules were implemented twice, and only the bulk version
validated every action before writing, so the single-object one could leave
a partial change behind.

* Chore: type the set-permissions dict

Callers passed whatever they had, including querysets of User and Group
objects that only worked because id__in accepts a subquery.
2026-10-24 13:28:25 -07:00
shamoon a74256cd2a Update SECURITY.md 2026-10-23 17:04:58 -07:00
shamoon f71a9a6eda Merge branch 'main' into dev 2026-10-22 15:38:13 -07:00
github-actions[bot] f319b05e0f Documentation: Add v3.3.4 changelog (#14534) 2026-10-22 15:36:38 -07:00
shamoon 558cb01a1d Bump version to 3.3.4 v3.3.4 2026-10-22 14:58:47 -07:00
shamoon 59e037fed2 Chore: bump pillow + aiohttp for security fixes 2026-10-22 14:56:06 -07:00
shamoon 56ae227de3 Chore: Update certifi for eMudhra CA incident (#14533) 2026-10-22 14:51:54 -07:00
Trenton H de61c20197 Chore: Update uv to 0.13 for the eMudhra CA fixes (#14532) 2026-10-22 14:47:05 -07:00
Trenton H c0dbe1f040 Chore: Update uv to 0.13 for the eMudhra CA fixes (#14532) 2026-10-22 14:46:08 -07:00