Repository navigation
fix(files): normalize Unicode in node paths - #65514
Merged
Merged
Conversation
mejo-
requested review from
icewind1991,
provokateurin,
salmart-dev and
sorbaugh
and removed request for
a team
October 15, 2026 06:00
Member
Author
|
/backport to stable35 |
Member
Author
|
/backport to stable34 |
Member
Author
|
/backport to stable33 |
5 tasks done
mejo-
added a commit
to nextcloud/text
that referenced
this pull request
Oct 15, 2026
Files uploaded from macOS in Chrome or Firefox have NFD names, while the filecache, and therefore the attachment list, stores names in NFC. The upload response returned the raw NFD name, so the editor inserted an NFD `src`. AttachmentResolver compared names exactly, found no matching attachment and fell back to loading the file as an image, which failed. Normalize uploaded names to NFC before saving them, and compare names in NFC in AttachmentResolver so that documents that already contain NFD srcs resolve as well. Fixes: #7873 Refs: nextcloud/server#65514 Refs: nextcloud/collectives#2327 Signed-off-by: Jonas <jonas@freesources.org> Assisted-by: ClaudeCode:claude-opus-5-5
skjnldsv
approved these changes
Oct 15, 2026
come-nc
reviewed
Oct 15, 2026
Filesystem::normalizePath() converts paths to Unicode NFC, so the filecache and storage always use NFC names. The Node API uses PathHelper::normalizePath() instead, which didn't normalize Unicode. Nodes returned by Folder::newFile(), Folder::newFolder(), Node::copy() and Node::move() therefore kept the name exactly as passed in. Files uploaded from macOS in Chrome or Firefox have NFD names. Apps that return $node->getName() after creating such a file sent back an NFD name for a file that is stored as NFC. Other clients then couldn't match the name against file listings, which broke attachments in Collectives and Text. Normalize to NFC in PathHelper::normalizePath(), like Filesystem::normalizePath() does. Hooks and events emitted by the Node API now get NFC paths as well. Refs: nextcloud/collectives#2327 Refs: nextcloud/text#7873 Signed-off-by: Jonas <jonas@freesources.org> Assisted-by: ClaudeCode:claude-opus-5-5
mejo-
force-pushed
the
fix/normalize_nfd_filenames
branch
from
October 15, 2026 09:34
d3d1a75 to
ed8bfe9
Compare
mejo-
added a commit
to nextcloud/text
that referenced
this pull request
Oct 15, 2026
Files uploaded from macOS in Chrome or Firefox have NFD names, while the filecache, and therefore the attachment list, stores names in NFC. The upload response returned the raw NFD name, so the editor inserted an NFD `src`. AttachmentResolver compared names exactly, found no matching attachment and fell back to loading the file as an image, which failed. Normalize uploaded names to NFC before saving them, and compare names in NFC in AttachmentResolver so that documents that already contain NFD srcs resolve as well. Fixes: #7873 Refs: nextcloud/server#65514 Refs: nextcloud/collectives#2327 Signed-off-by: Jonas <jonas@freesources.org> Assisted-by: ClaudeCode:claude-opus-5-5
mejo-
added a commit
to nextcloud/text
that referenced
this pull request
Oct 15, 2026
Files uploaded from macOS in Chrome or Firefox have NFD names, while the filecache, and therefore the attachment list, stores names in NFC. The upload response returned the raw NFD name, so the editor inserted an NFD `src`. AttachmentResolver compared names exactly, found no matching attachment and fell back to loading the file as an image, which failed. Normalize uploaded names to NFC before saving them, and compare names in NFC in AttachmentResolver so that documents that already contain NFD srcs resolve as well. Fixes: #7873 Refs: nextcloud/server#65514 Refs: nextcloud/collectives#2327 Signed-off-by: Jonas <jonas@freesources.org> Assisted-by: ClaudeCode:claude-opus-5-5
icewind1991
approved these changes
Oct 15, 2026
This was referenced Oct 15, 2026
mejo-
added a commit
to nextcloud/text
that referenced
this pull request
Oct 15, 2026
Files uploaded from macOS in Chrome or Firefox have NFD names, while the filecache, and therefore the attachment list, stores names in NFC. The upload response returned the raw NFD name, so the editor inserted an NFD `src`. AttachmentResolver compared names exactly, found no matching attachment and fell back to loading the file as an image, which failed. Normalize uploaded names to NFC before saving them, and compare names in NFC in AttachmentResolver so that documents that already contain NFD srcs resolve as well. Fixes: #7873 Refs: nextcloud/server#65514 Refs: nextcloud/collectives#2327 Signed-off-by: Jonas <jonas@freesources.org> Assisted-by: ClaudeCode:claude-opus-5-5
mejo-
added a commit
to nextcloud/text
that referenced
this pull request
Oct 15, 2026
Files uploaded from macOS in Chrome or Firefox have NFD names, while the filecache, and therefore the attachment list, stores names in NFC. The upload response returned the raw NFD name, so the editor inserted an NFD `src`. AttachmentResolver compared names exactly, found no matching attachment and fell back to loading the file as an image, which failed. Normalize uploaded names to NFC before saving them, and compare names in NFC in AttachmentResolver so that documents that already contain NFD srcs resolve as well. Fixes: #7873 Refs: nextcloud/server#65514 Refs: nextcloud/collectives#2327 Signed-off-by: Jonas <jonas@freesources.org> Assisted-by: ClaudeCode:claude-opus-5-5
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Filesystem::normalizePath() converts paths to Unicode NFC, so the filecache and storage always use NFC names. The Node API uses PathHelper::normalizePath() instead, which didn't normalize Unicode. Nodes returned by Folder::newFile(), Folder::newFolder(), Node::copy() and Node::move() therefore kept the name exactly as passed in.
Files uploaded from macOS in Chrome or Firefox have NFD names. Apps that return $node->getName() after creating such a file sent back an NFD name for a file that is stored as NFC. Other clients then couldn't match the name against file listings, which broke attachments in Collectives and Text.
Normalize to NFC in PathHelper::normalizePath(), like Filesystem::normalizePath() does. Hooks and events emitted by the Node API now get NFC paths as well.
Refs: nextcloud/collectives#2327
Refs: nextcloud/text#7873
Assisted-by: ClaudeCode:claude-opus-5-5
Checklist
3. to review, feature component)stable32)AI (if applicable)