Skip to content

fix(license): restore the ONLYOFFICE product logo and add the notices AGPL Section 7 requires - #202

Merged
chaxus merged 1 commit into
mainfrom
onlyoffice-attribution
Aug 23, 2026
Merged

fix(license): restore the ONLYOFFICE product logo and add the notices AGPL Section 7 requires#202
chaxus merged 1 commit into
mainfrom
onlyoffice-attribution

Conversation

@chaxus

@chaxus chaxus commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

What

The vendor's AGPL-3.0 headers add two terms under Section 7 of that license: 7(b) requires a derivative work to retain the original product logo, and 7(e) declines to grant any rights under trademark law. This build honoured neither.

Evidence, taken on the live site before the fix:

  • #header-logo computed to display: none (hidden by guards/chrome.ts). Unhiding it paints the real ONLYOFFICE logo, 86x20, from header-logo_s.svg -- the asset was shipping all along.
  • #left-btn-about also display: none. customization.about: false did take effect: the vendor's hidePreloader has a canBrandingExt || (about = true) fallback, but this offline build reports canBrandingExt true, so nothing forced it back.
  • No trademark notice anywhere in the repo or on the site; the License section of the readmes was one line, AGPL-3.0.

Both removals were deliberate UI tidy-ups (docs/explorations/2026-08-12-v9-pure-ui-and-issue-regression-sweep.md opens with "requirement: remove the ONLYOFFICE logo from the editor header"), so the next tidy-up would have done it again with nothing going red.

Changes

  • guards/chrome.ts keeps hiding the current-user / co-users widgets and nothing else.
  • customization.about back to its default.
  • Guard 12 (guards/about-source.ts) appends this build's own two facts to the About pane: that it is a modified version and not an official ONLYOFFICE product, and where the source is (Section 13). Additive only. The pane is populated lazily, so it watches for content instead of writing once.
  • NOTICE: the terms verbatim, the vendor version (9.3.0.133) and upstream repos, and every change made to the vendor tree -- the x2t_helper patch, gzip-only wasm, locale key filling, trimmed help, replaced fonts (Section 5(a)).
  • Eight readmes point at it; all seven site languages carry a trademark line in both footers (.tm).
  • In passing: /zh/ used to 404 (the real prefix is /zh-CN/), and the embed docs never said prominently that document:open-url / ?src= need CORS on the file's own host.

Tests

  • test/unit/branding-notice.test.ts (17): the two suppressions cannot come back, the guard is mounted, NOTICE quotes 7(b)/7(e) verbatim and the vendor file still carries that text, all 154 generated pages carry the notice in their own language.
  • test/e2e/vendor-branding.spec.ts (6): in the real editor -- logo visible and painted (background image + size, not merely present in the DOM), About reachable and carrying Ascensio System SIA, our source line in the pane; plus the footer notice on three routes.

Reverse-verified, twice:

  • restoring #header-logo, about: false and unmounting the guard -> the 3 editor cases fail, the 3 page cases stay green (they test the other half);
  • deleting the footer <p class="tm"> -> the 3 page cases fail.

Full local run after restoring: 2673 unit tests, 149 E2E, all green.

… AGPL Section 7 requires

The vendor's AGPL-3.0 headers carry two additional terms under Section 7:
7(b) requires a derivative work to retain the original product logo, and
7(e) declines to grant any rights under trademark law. This build honoured
neither. guards/chrome.ts hid `#header-logo` and the DocEditor config set
`customization.about: false`, which between them left no product mark
anywhere in the interface, and no trademark notice existed in the repository
or on the site.

Both removals were deliberate UI tidy-ups, so a comment would not have held:

- guards/chrome.ts keeps hiding the current-user and co-users widgets (a
  collaboration session a serverless build cannot have) and nothing else.
- `customization.about` goes back to its default. The vendor's own
  `canBrandingExt` check exists to force it back on; this offline build just
  does not enforce it.
- New guard 12 (guards/about-source.ts) appends this build's own two facts to
  the About pane -- that it is a modified version and not an official
  ONLYOFFICE product, and where its source is (Section 13). The pane is
  populated lazily, so it watches for the content rather than writing once.
- NOTICE quotes the terms verbatim, pins the vendor version, and lists every
  change made to the vendor tree (Section 5(a)).
- The eight readmes point at it; all seven site languages carry a trademark
  line in both footers.

Pinned by test/unit/branding-notice.test.ts and test/e2e/vendor-branding.spec.ts.
Reverse-verified twice: restoring the two suppressions turns the three editor
cases red, and dropping the footer notice turns the three page cases red.

Also in passing: /zh/ used to 404 (the real prefix is the BCP-47 /zh-CN/), and
the embed docs never said prominently that `document:open-url` and `?src=`
need CORS on the file's own host.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@chaxus
chaxus enabled auto-merge (rebase) August 23, 2026 15:15
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying document with  Cloudflare Pages  Cloudflare Pages

Latest commit: 28a2e6a
Status: ✅  Deploy successful!
Preview URL: https://795b927b.document-7hm.pages.dev
Branch Preview URL: https://onlyoffice-attribution.document-7hm.pages.dev

View logs

@chaxus
chaxus merged commit 85a0d73 into main Aug 23, 2026
18 checks passed
@chaxus
chaxus deleted the onlyoffice-attribution branch August 23, 2026 15:22
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