Skip to content

feat(activesync): add optional Sync TruncationSize ceiling - #96

Draft
TDannhauer wants to merge 1 commit into
FRAMEWORK_6_0from
feat/maximum-truncation-size
Draft

feat(activesync): add optional Sync TruncationSize ceiling#96
TDannhauer wants to merge 1 commit into
FRAMEWORK_6_0from
feat/maximum-truncation-size

Conversation

@TDannhauer

@TDannhauer TDannhauer commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add optional $conf['activesync']['sync']['maximumtruncationsize'] (default 0 = honor client) that caps Sync-export BodyPreference / MIME truncation only.
  • ItemOperations Fetch intentionally remains uncapped so clients that re-fetch truncated bodies (iOS, Nine) still get a full message.

Motivation

Follows the same admin override pattern as maximumwindowsize. Investigation in #88 showed Gmail never re-fetches truncated bodies, while Nine and iOS do — so this knob is a bandwidth / completeness trade-off. Keep-or-drop is pending maintainer input on #88; this PR stays open for that verdict.

Related

Test plan

  • TruncationCapTest unit coverage for cap / zero-means-unlimited semantics
  • Manual: with cap 0, Sync honours client TruncationSize; with a positive cap, Sync exports are clamped; ItemOperations mailbox Fetch still returns full body

@github-actions

github-actions Bot commented Jul 26, 2026

Copy link
Copy Markdown

🔍 CI Results

Overall: ❌ 12/12 lanes failed

TL;DR: ❌ Quality issues: PHPStan: 243 unique errors in 11 lanes; PHP-CS-Fixer: 31 files.

Summary by PHP Version

PHP dev stable
8.0
8.1
8.2
8.3
8.4
8.5

Quality Metrics

  • PHPUnit: did not run (11 lanes exited non-zero with no test output) ❌
  • PHPStan (advisory): 243 unique errors in 11 lanes ⚠️
  • PHP-CS-Fixer: 31 unique files with issues (of 212 checked) ⚠️
❌ Failed Lanes

php8.0-dev

  • PHPUnit: 0 failures, 0 errors

php8.0-stable

  • PHPUnit: ❌ Setup failed (Composer install failed in /tmp/horde-ci/lanes/php8.0-stable/ActiveSync: Your requirements could not be resolved to an installable set of packages.)
  • PHPStan: ❌ Setup failed (Composer install failed in /tmp/horde-ci/lanes/php8.0-stable/ActiveSync: Your requirements could not be resolved to an installable set of packages.)

php8.1-dev

  • PHPUnit: 0 failures, 0 errors

php8.1-stable

  • PHPUnit: 0 failures, 0 errors

php8.2-dev

  • PHPUnit: 0 failures, 0 errors

php8.2-stable

  • PHPUnit: 0 failures, 0 errors

php8.3-dev

  • PHPUnit: 0 failures, 0 errors

php8.3-stable

  • PHPUnit: 0 failures, 0 errors

php8.4-dev

  • PHPUnit: 0 failures, 0 errors
  • PHP-CS-Fixer: 31 files with issues

php8.4-stable

  • PHPUnit: 0 failures, 0 errors

php8.5-dev

  • PHPUnit: 0 failures, 0 errors

php8.5-stable

  • PHPUnit: 0 failures, 0 errors

CI powered by horde-componentsView full results

@TDannhauer
TDannhauer marked this pull request as draft July 26, 2026 13:18
@TDannhauer
TDannhauer force-pushed the feat/maximum-truncation-size branch from b0674eb to bcc6161 Compare July 29, 2026 08:34
Allow admins to cap client BodyPreference TruncationSize during Sync
(0 = honor client), without affecting ItemOperations Fetch.
@TDannhauer
TDannhauer force-pushed the feat/maximum-truncation-size branch from 97e1b7d to 624c4fe Compare July 30, 2026 11:30
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.

1 participant