fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(docs): Expand terminology and documentation guidance - #10672

Open
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab
Open

fix(docs): Expand terminology and documentation guidance#10672
claucambra wants to merge 3 commits into
masterfrom
work/docs-vocab

Conversation

@claucambra

Copy link
Copy Markdown
Collaborator

Summary

Particularly relevant for AI agents which tend to produce incomprehensible word salads

Checklist

AI (if applicable)

Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
Signed-off-by: Claudio Cambra <developer@claudiocambra.com>
@claucambra

Copy link
Copy Markdown
CollaboratorAuthor

/backport to stable-34.0

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Artifact containing the AppImage: nextcloud-appimage-pr-10672.zip

Digest: sha256:6140787fb1e795021cdc6a5f1cd0c238705b7ff94f341a67bac151d0d531fe29

To test this change/fix you can download the above artifact file, unzip it, and run it.

Please make sure to quit your existing Nextcloud app and backup your data.

@mgallienmgallien modified the milestones: 34.0.3, 34.0.4Aug 26, 2026
Comment threaddoc/terminology.md
Comment threaddoc/terminology.md
Use these terms consistently in comments and documentation. The client has two related but different engines, so vocabulary is scoped below:

- The **standard sync engine** is the C++ `SyncEngine`/`Folder` path, including its VFS integrations.
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not an extension of Swift but macOS (and a particular kind thereof) which could have also been done in Objective-C (which the file provider framework actually is written in, hence the APIs aren't that "swifty" or fit for strict concurrency).

Suggested change
- The **File Provider engine** is the macOS Swift extension built on Apple's File Provider framework.
- The **File Provider engine** is the macOS file provider extension built on Apple's File Provider framework written in Swift.

Comment threaddoc/terminology.md
Comment on lines +32 to +33
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a difficult linguistic distinction even for humans, in my perception. Also, there is an overlap. status includes the progress of an operating which already is covered semantically by state as "the current condition".

Suggested change
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**status**| The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
|**state**| The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
|**result**| The result of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |

Comment threaddoc/terminology.md
| --- | --- | --- |
| **state** | The current condition of an object, account, or operation. | A requested setting; use **policy** or **configuration**. |
| **status** | The result or progress of an operation, especially a transfer. | Every kind of state. Use the exact enum name when one exists. |
| **mode** | A selected implementation or operating configuration, such as a VFS mode. | A temporary result or transfer status. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is a VFS mode?

Comment threaddoc/terminology.md
| **policy** | A rule or preference that controls what should happen, such as pinning or keeping a file downloaded. | Proof that the requested result has already happened. |
| **configuration** | Values that select or set up how a component operates. | A live operation result. |
| **error** | A failure or failure result. | A conflict or warning unless the code treats it as an error. |
| **conflict** | A specific sync outcome where changes cannot be applied together automatically. | A general failure. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**conflict**| A specific sync outcome where changes cannot be applied together automatically. | A general failure. |
|**conflict**| A specific sync outcome where diverging changes between different content states cannot be reconciled automatically or without data loss. | A general failure. |

Comment threaddoc/terminology.md
| **materialized** | An item in File Provider's local materialized set. This can include a downloaded file or a visited directory. |
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**dataless**| A File Provider item with no local materialized content, typically after eviction. |
|**dataless**| A File Provider item without actual content but metadata available locally. |

Comment threaddoc/terminology.md
| **downloaded** | The local file-content flag used for a File Provider file. |
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**|Removing an item's local File Provider representation without treating it as a server deletion. |
|**evict**|Remove the local content copy of a file provider item without actually deleting the item on the server and retain the existing metadata. |

Comment threaddoc/terminology.md
| **visitedDirectory** | A directory that has been enumerated locally; it does not mean the directory was downloaded. |
| **dataless** | A File Provider item with no local materialized content, typically after eviction. |
| **evict** | Removing an item's local File Provider representation without treating it as a server deletion. |
| **keepDownloaded** | The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**keepDownloaded**| The stored intent behind “Always keep downloaded”; it is not the current downloaded or materialized state. |
|**keepDownloaded**| The stored content policy behind the “Always keep downloaded” custom file provider action; it is not a state detail. |
|**content policy**| Defines how the File Provider framework is expected to handle local content copies of a file provider item. Defines policy for automatic eviction by the framework but also whether content should be downloaded from the server automatically and eagerly or local content copies evicted on case of server-side changes to the represented item. |

Comment threaddoc/terminology.md

| Standard sync engine | File Provider engine | Notes |
| --- | --- | --- |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the framework object. |
| virtual file / placeholder | File Provider item | Both are local representations, but `item` is the actual framework object regardless off its state (either "dataless" or "materialized"), not a placeholder. |

Comment threaddoc/terminology.md
| **folder** | A user-facing or sync-folder concept. |
| **delete** | A deletion operation. |
| **soft-deleted** | A record marked as deleted but not yet removed. |
| **evict** | A provider or operating-system eviction operation. |

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
|**evict**| A provider or operating-system eviction operation. |
|**evict**| A File Provider framework eviction operation. |

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@claucambra@i2h3@mgallien