Repository navigation
Commit 06e4b37
Latest reconciliation q4 m1 2026 (#5664)
* Fix UTF-8 attachment filenames (#5630)
Co-authored-by: y_sugawara <y_sugawara@akibi.ac.jp>
(cherry picked from commit b16cbb1)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* thanks for pull request 5630 (#5638)
(cherry picked from commit ce2b1ab)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* sanitize-html: remove unneeded deepmerge dependency (#5639)
Combining tag-specific and wildcard allowedClasses and allowedStyles
entries only ever needed simple array concatenation. sanitize-html was
not exploitable via CVE-2026-93753 in deepmerge, since it only merged the
developer's own configuration, but removing the dependency clears the
scanner reports.
(cherry picked from commit bf5a2a6)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Fix mistyped i18n interpolation variables in translations (#5645)
Several translations retyped or translated i18next variables, for
example {{ SkipCount }}, {{ skipcount }}, {{ Count }}, {{ ancho }} and
{{ format }}. i18next cannot resolve these names, so the values render
as empty strings. The batch localization notifications lost their
localized and skipped counts, the minimum image size lost its
dimensions, and import errors lost the file type.
Restore the variable names used in en.json and by the calling code,
and drop the English text appended to the German commandMenuCreateNew
label. Add a test that fails when a bundled core translation uses a
variable en.json does not declare, and that renders the batch
notifications in every locale.
scripts/scan-translations.mjs now reports no placeholder-mismatch or
malformed-interpolation errors.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
(cherry picked from commit 6c76487)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Remove bestPage for external fronts (#5646)
(cherry picked from commit e610368)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* thank Michael Lip for his i18n fixes (#5647)
(cherry picked from commit 5ce3732)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Give icon-only widget breadcrumb operations a screen reader name (#5605)
Icon-only breadcrumb operations, such as the Styles button on a layout column, were announced as "Provide a Button Label". They now get an aria-label from the operation's label, or from its tooltip when no label is set. Also labels the hidden layoutColMove operation.
(cherry picked from commit 40f352b)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Gemini Interactions API adapter, Claude 5.5 and GPT-6 models (#5649)
* Text and tools, structured output
* Thinking and errors
* Images
* Docs and smoke tests
* Bump Anthropic and OpenAI models
(cherry picked from commit 9f3afdc)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* PRO-10163: multiple problems with inline fields on Astro only (#5651)
(cherry picked from commit 3c50881)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Astro per-site literal content routes for multisite (#5648)
* per-site literal content routes for multisite
* README detail
* Increase in-memory caching count
(cherry picked from commit e79bb0e)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* PRO-10168: server side errors reported in widget modals should be visible (#5652)
* show server errors to the user in the widget modal
* changeset
(cherry picked from commit db625b2)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Disable Save in the media manager's image editor until the image changes (#5654)
* Fix detect changes in the image editor, remove decorative Shadow tooltip text for screen readers.
* Proper confirmation question on relationship changed image
(cherry picked from commit bdaf318)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* PRO-10147: fixed the apostrophe:image tooltip (#5657)
(cherry picked from commit 6af1243)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Fix missing and broken strings (#5600)
Co-authored-by: Tom Boutell <tom@apostrophecms.com>
(cherry picked from commit b7084c9)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Bump Haiku to 5.5 (#5653)
(cherry picked from commit 3cca1b8)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* AI: a usage record for every billed provider response (#5656)
* Dedicated usage tracking event
* Report explicit image usage tokens
* Improve changeset
(cherry picked from commit d503bda)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Add tests marker for relationship modalls (#5659)
(cherry picked from commit 5b247e0)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Restore console output of command line tasks (#5660)
(cherry picked from commit eea226c)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Bump dependencies for security advisories (#5661)
(cherry picked from commit 2a6b396)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* All advisories 2026 q4 m1 (#5663)
* Add failing test for GHSA-5gc8-frw3-3vqm
* Add failing test for GHSA-c9rx-x947-fp3h
* sanitize-html: bound recursion into discarded iframe fallback and carry nesting depth (GHSA-c9rx-x947-fp3h)
* Use unguessable file names for export downloads (GHSA-5gc8-frw3-3vqm)
* Add failing test for GHSA-rqgm-cfrp-4hx8
* Add failing test for GHSA-7jg5-frgc-c67w
* Add failing test for GHSA-5m22-7pfq-vp65
* Add failing test for GHSA-rw26-wwfc-9wvm
* Escape widget style wrapper attributes and reject unsafe style values (GHSA-7jg5-frgc-c67w)
* Ignore sort keys and field filters hidden by publicApiProjection in public REST API requests (GHSA-rqgm-cfrp-4hx8)
* Require the import owner for clean-export and a login for override-duplicates (GHSA-rw26-wwfc-9wvm)
* Require publish permission for published documents written by import (GHSA-5m22-7pfq-vp65)
* Reword GHSA-5m22-7pfq-vp65 changeset
* Add failing test for GHSA-vmgj-9cwm-cf3h
* Add failing test for GHSA-vh56-5m88-39rq
* Require the whole color field value to be a valid color (GHSA-vmgj-9cwm-cf3h)
* Add failing test for GHSA-jf5h-36mg-rp6x
* Remove viewPermission fields from all page REST responses, including embedded _ancestors and _children (GHSA-vh56-5m88-39rq)
* Add failing test for GHSA-rqgm-cfrp-4hx8: projection of embedded ancestors and children
* Bind import duplicate replacement to the server-side analysis and authorize the actual target (GHSA-jf5h-36mg-rp6x)
* Limit embedded ancestors and children to publicApiProjection in anonymous page REST requests (GHSA-rqgm-cfrp-4hx8)
* Add failing test for GHSA-f66c-mpj2-3r8h
* Add failing test for GHSA-9g7p-m758-rp72
* Require editing permission for the slug-taken route (GHSA-f66c-mpj2-3r8h)
* Limit import archive extraction and clean up after failed imports (GHSA-9g7p-m758-rp72)
* Add failing test for pending import archive exposure (GHSA-5gc8-frw3-3vqm)
* Add failing test for related-doc forbidden fields (GHSA-vh56-5m88-39rq)
* Test that public API search results stay sorted by search quality (GHSA-rqgm-cfrp-4hx8)
* Add failing core tests for GHSA-5m22-7pfq-vp65
* Encrypt pending import archives kept in uploadfs (GHSA-5gc8-frw3-3vqm)
* Revert encryption of pending import archives
An unguessable name is enough here, see the following commits.
* Update failing test for pending import archive names (GHSA-5gc8-frw3-3vqm)
* Remove viewPermission fields from related documents in page and piece REST responses (GHSA-vh56-5m88-39rq)
* Cover anonymous public API access to related documents (GHSA-vh56-5m88-39rq)
* Use unguessable names for pending import archives (GHSA-5gc8-frw3-3vqm)
* Honor publishRole and the document's own mode for published edits in core (GHSA-5m22-7pfq-vp65)
* Add failing test for big upload chunk ids (GHSA-5gc8-frw3-3vqm)
* Use unguessable ids for big upload chunks (GHSA-5gc8-frw3-3vqm)
* Add failing test for forbidden fields in REST write responses (GHSA-vh56-5m88-39rq)
* Add failing test for GHSA-rqgm-cfrp-4hx8: projection of related documents
* Use generateId for export names; revert pending archive and big upload changes (GHSA-5gc8-frw3-3vqm)
cuid2 3.x already draws on the platform's cryptographically secure random
number generator, so pending import archive names and big upload chunk ids
were already unguessable.
* Add failing test for GHSA-rqgm-cfrp-4hx8: projection of related pages
* Remove viewPermission fields from page and piece REST write responses (GHSA-vh56-5m88-39rq)
* Add failing test for GHSA-rqgm-cfrp-4hx8: projection of related images
* Limit related documents to the publicApiProjection of their own type in public REST API responses (GHSA-rqgm-cfrp-4hx8)
* Add failing test for viewPermission fields in version change lists (GHSA-vh56-5m88-39rq)
* Leave viewPermission fields out of version change lists (GHSA-vh56-5m88-39rq)
* Add failing tests for viewPermission fields in version change counts and highlights (GHSA-vh56-5m88-39rq)
* Leave viewPermission fields out of version change counts and highlights (GHSA-vh56-5m88-39rq)
* Revert limiting related documents to their own type's publicApiProjection
Relationships only appear in public API responses when the developer lists
them in publicApiProjection, and their fields can be limited with the
relationship's own projection.
* Remove inaccurate mitigating factor from changeset (GHSA-5gc8-frw3-3vqm)
* Compare public API search order with the database's own ranking (GHSA-rqgm-cfrp-4hx8)
* Leave mode and publish authorization of replaced documents to core (GHSA-jf5h-36mg-rp6x)
Writes go through core with permission checks on, which enforces publishRole,
and archives with inconsistent modes are rejected when they are read. Keep only
the import-specific type check on the replaced document.
* Fix GHSA-7jg5-frgc-c67w at the attribute sink only
Drop the render-time style value and class token filtering and the
getWidgetElements id escaping; escaping in getWidgetAttributes covers it.
* Check the login for clean-export once, in its route (GHSA-rw26-wwfc-9wvm)
* Restore upstream handling of tar entry types and unsupported uploads (GHSA-9g7p-m758-rp72)
The limits and the cleanup wrapper already cover both.
* Record test versions in distinct milliseconds so their order does not depend on the database (GHSA-vh56-5m88-39rq)
* Remove viewPermission fields once, in the shared REST API route wrapper (GHSA-vh56-5m88-39rq)
* Trust the request mode in core, enforce publishRole in core only, keep import's mode validation (GHSA-5m22-7pfq-vp65)
(cherry picked from commit 40b989b)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
* Add a patch changeset for the relationship chooser test marker (#5659)
Claude-Session: https://claude.ai/code/session_01VG5Nqou7GgfGpKgG7J2wEg
---------
Co-authored-by: raveman179 <telebit179@gmail.com>
Co-authored-by: Michael Lip <51033404+theluckystrike@users.noreply.github.com>
Co-authored-by: Miro Yovchev <2827783+myovchev@users.noreply.github.com>
Co-authored-by: lindsayhi <66084010+lindsayhi@users.noreply.github.com>
Co-authored-by: Robert Means <robert@apostrophecms.com>1 parent 9500b8b commit 06e4b37
187 files changed
Lines changed: 9181 additions & 1786 deletions
File tree
- .changeset
- packages
- ai-helper
- i18n/aposAiHelper
- anchors
- apostrophe-astro
- components
- endpoints
- lib
- test/lib
- apostrophe
- modules/@apostrophecms
- ai-adapter-anthropic
- ai-adapter-google
- ai-adapter-openai-compatible
- ai-adapter-openai
- lib
- ai
- lib
- area
- ui/apos/components
- attachment
- lib/tasks
- color-field
- doc-type
- document-versions
- doc
- i18n
- i18n
- image/ui/apos/components
- layout-column-widget
- modal/ui/apos
- components
- mixins
- module
- page
- ui/apos/components
- permission
- piece-type
- ui/apos/components
- styles/lib
- template
- url
- widget-type/ui/apos/components
- test
- modules/render-note-widget/views
- boring
- broadband
- cache-on-demand
- cache-redis
- create-apostrophe
- csv-to-zone-file
- db-connect
- emulate-mongo-3-driver
- eslint-config-apostrophe
- lib
- test
- express-cache-on-demand
- font-size
- form-submission-google
- form
- i18n
- i18n-static
- i18n
- import-export-xlsx
- import-export
- i18n
- lib
- formats
- methods
- test
- launder
- login-hcaptcha
- login-recaptcha
- login-totp
- mongodb-snapshot
- moog-require
- oembetter
- postcss-viewport-to-container-toggle
- random-words
- redirect
- sanitize-html
- test
- scheduled-publishing
- seo
- modules/@apostrophecms/seo-fields-global
- test
- sitemap
- sluggo
- stylelint-config-apostrophe
- stylelint-no-mixed-decls
- svg-sprite
- uploadfs
- vite
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
0 commit comments