Conversation
WalkthroughAdds a new "Coming Soon" documentation category and index page; introduces new doc pages for Emergency Access and Files-in-Use; updates admin and vault-management docs to describe Emergency Access event types, workflows, and UI elements; replaces Keycloak-centric user/group management docs with an in-Hub admin UI workflow (users, groups, roles, avatars, enterprise notes); adds an announcement pill CSS class and inserts a "Coming Soon" link above the homepage logo in the React front page. Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 1 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
src/pages/index.tsx (1)
18-22: Redundant wrapper<div>— the parent already centers inline-block childrenThe parent container has the
text--centerutility class (which setstext-align: center), so thedisplay: inline-blockpill will center itself without an extra block-level wrapper. The<div>adds no semantic value.♻️ Proposed simplification
- <div> - <Link to="/coming-soon" className={styles.announcementPill}> - ✨ Coming Soon → - </Link> - </div> + <Link to="/coming-soon" className={styles.announcementPill}> + ✨ Coming Soon → + </Link>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/pages/index.tsx` around lines 18 - 22, Remove the redundant block-level wrapper around the announcement pill: instead of wrapping the Link (the element using className={styles.announcementPill}) in an extra <div>, render the Link directly as a child of the parent container that already has the text--center utility; this keeps the inline-block pill centered and removes the unnecessary DOM node while preserving the existing Link, its text ("✨ Coming Soon →") and the announcementPill class.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/hub/user-group-management.md`:
- Line 177: The sentence in the Hub docs contains a compound adjective that
needs suspended hyphenation; change "user and group related tasks" to "user- and
group-related tasks" in the sentence starting "You can access the Keycloak
management interface..." so the compound adjectives are correctly hyphenated.
- Around line 170-189: The release note's ":::info Enterprise Feature"
admonition is never closed and the ":::warning" was unintentionally nested;
close the enterprise info block immediately after its content by adding a
matching closing token (:::) right after the paragraph that ends with "Visit
[cryptomator.org](https://cryptomator.org/hub/) for more information about
Enterprise features.", then move the standalone ":::warning" admonition (the
paragraph about the `admin` and `syncer` accounts) outside and below that closed
info block so it applies globally; ensure you only use three-colon tokens
consistently (:::info ... ::: and :::warning ... :::) to properly open and close
each admonition.
In `@src/pages/index.module.css`:
- Around line 1-16: Add an explicit keyboard focus style and a smooth hover
transition to the .announcementPill to ensure accessible focus indication and
avoid abrupt hover changes: update the .announcementPill selector to include a
transition for background-color (and optionally color), and add a
.announcementPill:focus-visible rule that sets a clear, high-contrast outline or
box-shadow (and preserve border-radius) so keyboard users see a visible focus
ring; ensure :focus-visible only applies to the .announcementPill element and
does not rely on browser defaults.
---
Nitpick comments:
In `@src/pages/index.tsx`:
- Around line 18-22: Remove the redundant block-level wrapper around the
announcement pill: instead of wrapping the Link (the element using
className={styles.announcementPill}) in an extra <div>, render the Link directly
as a child of the parent container that already has the text--center utility;
this keeps the inline-block pill centered and removes the unnecessary DOM node
while preserving the existing Link, its text ("✨ Coming Soon →") and the
announcementPill class.
ℹ️ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (7)
static/img/hub/group-add-member.pngis excluded by!**/*.pngstatic/img/hub/group-create.pngis excluded by!**/*.pngstatic/img/hub/group-detail.pngis excluded by!**/*.pngstatic/img/hub/group-list.pngis excluded by!**/*.pngstatic/img/hub/user-create.pngis excluded by!**/*.pngstatic/img/hub/user-detail.pngis excluded by!**/*.pngstatic/img/hub/user-list.pngis excluded by!**/*.png
📒 Files selected for processing (5)
docs/coming-soon/_category_.jsondocs/coming-soon/index.mddocs/hub/user-group-management.mdsrc/pages/index.module.csssrc/pages/index.tsx
| :::info Enterprise Feature | ||
| Connecting external identity and access management (IAM) solutions is available as an Enterprise feature. This allows you to: | ||
|
|
||
| - Synchronize users and groups from LDAP or Active Directory | ||
| - Delegate authentication via OpenID Connect or SAML | ||
| - Keep your user management centralized in your existing IAM | ||
|
|
||
| Cryptomator Hub supports user avatars. As an administrator, you can enable this feature in the administration area by creating a user "picture" profile attribute in the "User Profile" setting in the Realm in Keycloak. See [Keycloak Documentation](https://www.keycloak.org/ui-customization/avatars#_setting_a_picture_attribute_from_the_admin_console) for more information. | ||
| You can access the Keycloak management interface from the admin section of Hub. There you can perform all user and group related tasks, such as | ||
| [creating new users](https://www.keycloak.org/docs/latest/server_admin/index.html#proc-creating-user_server_administration_guide), | ||
| [deleting users](https://www.keycloak.org/docs/latest/server_admin/index.html#proc-deleting-user_server_administration_guide) or | ||
| [managing groups](https://www.keycloak.org/docs/latest/server_admin/index.html#proc-managing-groups_server_administration_guide). | ||
|
|
||
| Setting up LDAP synchronization is described in the [Keycloak documentation](https://www.keycloak.org/docs/latest/server_admin/#_ldap). | ||
| For OpenID Connect and SAML, the Keycloak documentation provides [general information](https://www.keycloak.org/docs/latest/server_admin/#_identity_broker). | ||
|
|
||
| Visit [cryptomator.org](https://cryptomator.org/hub/) for more information about Enterprise features. | ||
|
|
||
| When enabled, users can define their avatar in their Keycloak profile page. The avatar is then displayed in Cryptomator Hub, for example in the vault member list. | ||
| The avatar needs to be provided as a URL (e.g. https://path_to_image.png) or as a Base64 encoded data image (e.g. `data:image/svg+xml;base64,content`). | ||
| :::warning | ||
| Regardless of your IAM setup, your Hub instance always contains two system users: `admin` and `syncer`. **Do not edit or delete them!** These accounts are required for administration and synchronization tasks. | ||
| ::: |
There was a problem hiding this comment.
:::info Enterprise Feature is never closed — the :::warning must be outside it
Docusaurus admonitions can be nested, but require more colons for each parent level. Using the same three colons means :::warning (line 187) opens a nested directive inside the still-open :::info Enterprise Feature (line 170). The ::: at line 189 then closes only the inner warning, leaving the outer :::info unclosed and extending implicitly to the end of the file.
Beyond the parse problem, the warning text ("Regardless of your IAM setup…") applies to every user — not only enterprise users — so it should live after the enterprise info block, not inside it.
🐛 Proposed fix — close the info block before the warning
Visit [cryptomator.org](https://cryptomator.org/hub/) for more information about Enterprise features.
+:::
+
:::warning
Regardless of your IAM setup, your Hub instance always contains two system users: `admin` and `syncer`. **Do not edit or delete them!** These accounts are required for administration and synchronization tasks.
:::🧰 Tools
🪛 LanguageTool
[grammar] ~177-~177: Use a hyphen to join words.
Context: ...There you can perform all user and group related tasks, such as [creating new use...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/hub/user-group-management.md` around lines 170 - 189, The release note's
":::info Enterprise Feature" admonition is never closed and the ":::warning" was
unintentionally nested; close the enterprise info block immediately after its
content by adding a matching closing token (:::) right after the paragraph that
ends with "Visit [cryptomator.org](https://cryptomator.org/hub/) for more
information about Enterprise features.", then move the standalone ":::warning"
admonition (the paragraph about the `admin` and `syncer` accounts) outside and
below that closed info block so it applies globally; ensure you only use
three-colon tokens consistently (:::info ... ::: and :::warning ... :::) to
properly open and close each admonition.
| - Keep your user management centralized in your existing IAM | ||
|
|
||
| Cryptomator Hub supports user avatars. As an administrator, you can enable this feature in the administration area by creating a user "picture" profile attribute in the "User Profile" setting in the Realm in Keycloak. See [Keycloak Documentation](https://www.keycloak.org/ui-customization/avatars#_setting_a_picture_attribute_from_the_admin_console) for more information. | ||
| You can access the Keycloak management interface from the admin section of Hub. There you can perform all user and group related tasks, such as |
There was a problem hiding this comment.
Minor grammar: hyphenate the compound adjective
"user and group related tasks" should be "user- and group-related tasks" (suspended hyphen).
✏️ Proposed fix
-There you can perform all user and group related tasks, such as
+There you can perform all user- and group-related tasks, such as📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| You can access the Keycloak management interface from the admin section of Hub. There you can perform all user and group related tasks, such as | |
| You can access the Keycloak management interface from the admin section of Hub. There you can perform all user- and group-related tasks, such as |
🧰 Tools
🪛 LanguageTool
[grammar] ~177-~177: Use a hyphen to join words.
Context: ...There you can perform all user and group related tasks, such as [creating new use...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/hub/user-group-management.md` at line 177, The sentence in the Hub docs
contains a compound adjective that needs suspended hyphenation; change "user and
group related tasks" to "user- and group-related tasks" in the sentence starting
"You can access the Keycloak management interface..." so the compound adjectives
are correctly hyphenated.
| .announcementPill { | ||
| display: inline-block; | ||
| padding: 0.4rem 1rem; | ||
| margin-bottom: 1rem; | ||
| border-radius: 2rem; | ||
| background-color: rgba(255, 255, 255, 0.15); | ||
| color: white; | ||
| font-size: 0.9rem; | ||
| text-decoration: none; | ||
| } | ||
|
|
||
| .announcementPill:hover { | ||
| background-color: rgba(255, 255, 255, 0.25); | ||
| color: white; | ||
| text-decoration: none; | ||
| } |
There was a problem hiding this comment.
Add a :focus-visible style for keyboard accessibility
There is no explicit focus indicator for the announcement pill. Docusaurus or the browser's default may be overridden or low-contrast against the primary hero background; adding an explicit outline ensures keyboard users always get a visible focus ring.
♿ Proposed addition
.announcementPill:hover {
background-color: rgba(255, 255, 255, 0.25);
color: white;
text-decoration: none;
}
+
+.announcementPill:focus-visible {
+ outline: 2px solid white;
+ outline-offset: 3px;
+}You may also want to add a transition for the hover background change to avoid the abrupt opacity jump:
.announcementPill {
display: inline-block;
padding: 0.4rem 1rem;
margin-bottom: 1rem;
border-radius: 2rem;
background-color: rgba(255, 255, 255, 0.15);
color: white;
font-size: 0.9rem;
text-decoration: none;
+ transition: background-color 0.2s ease;
}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| .announcementPill { | |
| display: inline-block; | |
| padding: 0.4rem 1rem; | |
| margin-bottom: 1rem; | |
| border-radius: 2rem; | |
| background-color: rgba(255, 255, 255, 0.15); | |
| color: white; | |
| font-size: 0.9rem; | |
| text-decoration: none; | |
| } | |
| .announcementPill:hover { | |
| background-color: rgba(255, 255, 255, 0.25); | |
| color: white; | |
| text-decoration: none; | |
| } | |
| .announcementPill { | |
| display: inline-block; | |
| padding: 0.4rem 1rem; | |
| margin-bottom: 1rem; | |
| border-radius: 2rem; | |
| background-color: rgba(255, 255, 255, 0.15); | |
| color: white; | |
| font-size: 0.9rem; | |
| text-decoration: none; | |
| transition: background-color 0.2s ease; | |
| } | |
| .announcementPill:hover { | |
| background-color: rgba(255, 255, 255, 0.25); | |
| color: white; | |
| text-decoration: none; | |
| } | |
| .announcementPill:focus-visible { | |
| outline: 2px solid white; | |
| outline-offset: 3px; | |
| } |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/pages/index.module.css` around lines 1 - 16, Add an explicit keyboard
focus style and a smooth hover transition to the .announcementPill to ensure
accessible focus indication and avoid abrupt hover changes: update the
.announcementPill selector to include a transition for background-color (and
optionally color), and add a .announcementPill:focus-visible rule that sets a
clear, high-contrast outline or box-shadow (and preserve border-radius) so
keyboard users see a visible focus ring; ensure :focus-visible only applies to
the .announcementPill element and does not rely on browser defaults.
- add dedicated Emergency Access page - document Emergency Access settings and audit log events in Admin - extend Vault Management with setup/fix and creation flow details - add/update related Hub UI screenshots
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
docs/hub/vault-management.md (1)
28-34: Inconsistent admonition type — use:::info Early Accessto match the rest of the file.Elsewhere in this file (lines 55–57) and in
admin.md(lines 86–88) the standard pattern for early-access notices is:::info Early Access. This block uses:::notewith a plain-text qualifier instead, which produces a different visual style and is easy to overlook.✏️ Proposed fix
-:::note Emergency Access Status in Vault List (Enterprise only, early access) -In the `Vault List`, owners can see the Emergency Access status directly via badges: +:::info Early Access — Enterprise Only +Emergency Access is currently in **early access**. In the `Vault List`, owners can see the Emergency Access status directly via badges:🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/hub/vault-management.md` around lines 28 - 34, Replace the inconsistent admonition header ":::note Emergency Access Status in Vault List (Enterprise only, early access)" with the standard early-access admonition ":::info Early Access" so the block uses the same visual style as the other early-access notes; update the opening delimiter and ensure the closing "::: " remains in place to preserve the block content.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/hub/admin.md`:
- Line 154: Add the missing anchor ID to the "## Emergency Access" section by
updating the header line `## Emergency Access` to include the explicit markdown
anchor `{`#emergency-access`}` (so cross-links like `admin.md#emergency-access`
resolve correctly); locate the header text "## Emergency Access" in the file and
append the anchor immediately after it.
- Around line 153-175: Add an "Early Access" admonition to the admin Emergency
Access configuration section: locate the "Emergency Access" heading and the
block that mentions the Audit Log feature (the current ":::info Enterprise
Feature" block) and insert an ":::info Early Access" admonition (matching the
style used in the audit-log event subsection and in vault-management.md) near
the top of this section to indicate the feature is early access; ensure the
admonition text mirrors existing Early Access wording used elsewhere and does
not replace the existing Enterprise note.
In `@docs/hub/vault-management.md`:
- Around line 148-150: Add the missing Early Access admonition around the
"Setup/Fix Emergency Access Council" section (header "Setup/Fix Emergency Access
Council" or anchor {`#emergency-access-council`}) to match other Emergency Access
entries; wrap the paragraph that begins "To configure Emergency Access for a
vault..." in an :::info Early Access block so the section is consistent with the
other Emergency Access sections (e.g., the ones around lines 55–57).
---
Nitpick comments:
In `@docs/hub/vault-management.md`:
- Around line 28-34: Replace the inconsistent admonition header ":::note
Emergency Access Status in Vault List (Enterprise only, early access)" with the
standard early-access admonition ":::info Early Access" so the block uses the
same visual style as the other early-access notes; update the opening delimiter
and ensure the closing "::: " remains in place to preserve the block content.
ℹ️ Review info
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (14)
static/img/hub/admin-emergency-access.pngis excluded by!**/*.pngstatic/img/hub/create-vault-download.pngis excluded by!**/*.pngstatic/img/hub/create-vault-emergency-access.pngis excluded by!**/*.pngstatic/img/hub/create-vault-recoverykey.pngis excluded by!**/*.pngstatic/img/hub/create-vault.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_change_council_start.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_change_permissions_start.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_vault_list.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_vault_list_change_council_abort_dialog.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_vault_list_change_council_approve_dialog.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_vault_list_change_council_approve_now.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_vault_list_change_council_complete_dialog.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_vault_list_change_council_complete_now.pngis excluded by!**/*.pngstatic/img/hub/emergency_access_vault_list_hover_process.pngis excluded by!**/*.png
📒 Files selected for processing (3)
docs/hub/admin.mddocs/hub/emergency-access.mddocs/hub/vault-management.md
✅ Files skipped from review due to trivial changes (1)
- docs/hub/emergency-access.md
|
|
||
| ## Emergency Access | ||
|
|
||
| This configuration defines default Emergency Access values for new or updated vaults. | ||
|
|
||
| <Image src="/img/hub/admin-emergency-access.png" alt="Emergency Access" width="1440" height="658" /> | ||
|
|
||
| Enable `Enable Emergency Access` and configure: | ||
|
|
||
| * `Required Keys`: Number of required key shares | ||
| * `Keyholders`: Default council members (only activated users) | ||
| * Optional: `Let vault owners choose different keyholders` | ||
| * Optional: `At least` (minimum members if owners can choose a different council) | ||
|
|
||
| :::warning | ||
| A council without redundancy (`Required Keys == number of council members`) is possible, but not recommended. | ||
| ::: | ||
|
|
||
| :::info Enterprise Feature | ||
| The following Audit Log feature is available only in the **Enterprise Edition**: | ||
|
|
||
| - Emergency Access Audit Logs | ||
| ::: |
There was a problem hiding this comment.
Add an Early Access admonition to the admin Emergency Access config section.
The audit-log event sub-section (lines 86–88) already carries an :::info Early Access notice, and vault-management.md does the same wherever Emergency Access config is described. The admin-side configuration section is missing this notice, making it inconsistent with the rest of the docs.
✏️ Proposed fix
## Emergency Access {`#emergency-access`}
This configuration defines default Emergency Access values for new or updated vaults.
+
+:::info Early Access
+This feature is currently in **early access** and will be fully available in an upcoming release.
+:::🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/hub/admin.md` around lines 153 - 175, Add an "Early Access" admonition
to the admin Emergency Access configuration section: locate the "Emergency
Access" heading and the block that mentions the Audit Log feature (the current
":::info Enterprise Feature" block) and insert an ":::info Early Access"
admonition (matching the style used in the audit-log event subsection and in
vault-management.md) near the top of this section to indicate the feature is
early access; ensure the admonition text mirrors existing Early Access wording
used elsewhere and does not replace the existing Enterprise note.
| ::: | ||
|
|
||
|
|
||
| ## Emergency Access |
There was a problem hiding this comment.
Add missing anchor ID to keep cross-links working.
Every other H2/H3 section in this file has an explicit {#...} anchor, but ## Emergency Access does not. Any page that cross-links to admin.md#emergency-access (e.g., the new emergency-access.md page) will land on a broken fragment.
✏️ Proposed fix
-## Emergency Access
+## Emergency Access {`#emergency-access`}📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ## Emergency Access | |
| ## Emergency Access {`#emergency-access`} |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/hub/admin.md` at line 154, Add the missing anchor ID to the "##
Emergency Access" section by updating the header line `## Emergency Access` to
include the explicit markdown anchor `{`#emergency-access`}` (so cross-links like
`admin.md#emergency-access` resolve correctly); locate the header text "##
Emergency Access" in the file and append the anchor immediately after it.
| ### Setup/Fix Emergency Access Council {#emergency-access-council} | ||
|
|
||
| To configure [Emergency Access](emergency-access.md) for a vault, click `Setup Emergency Access Council` in the [vault details](#vault-details). If Emergency Access is already configured but needs correction, click `Fix Emergency Access Council`. This opens a dialog where you define the council members and confirm with `Grant`. |
There was a problem hiding this comment.
Add an Early Access admonition for consistency.
Every other Emergency Access section in this file carries an :::info Early Access block (e.g., lines 55–57). This section is missing one.
✏️ Proposed fix
### Setup/Fix Emergency Access Council {`#emergency-access-council`}
+:::info Early Access
+Emergency Access is currently in **early access** and will be fully available in an upcoming release.
+:::
+
To configure [Emergency Access](emergency-access.md) for a vault, click `Setup Emergency Access Council` ...📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Setup/Fix Emergency Access Council {#emergency-access-council} | |
| To configure [Emergency Access](emergency-access.md) for a vault, click `Setup Emergency Access Council` in the [vault details](#vault-details). If Emergency Access is already configured but needs correction, click `Fix Emergency Access Council`. This opens a dialog where you define the council members and confirm with `Grant`. | |
| ### Setup/Fix Emergency Access Council {`#emergency-access-council`} | |
| :::info Early Access | |
| Emergency Access is currently in **early access** and will be fully available in an upcoming release. | |
| ::: | |
| To configure [Emergency Access](emergency-access.md) for a vault, click `Setup Emergency Access Council` in the [vault details](`#vault-details`). If Emergency Access is already configured but needs correction, click `Fix Emergency Access Council`. This opens a dialog where you define the council members and confirm with `Grant`. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/hub/vault-management.md` around lines 148 - 150, Add the missing Early
Access admonition around the "Setup/Fix Emergency Access Council" section
(header "Setup/Fix Emergency Access Council" or anchor
{`#emergency-access-council`}) to match other Emergency Access entries; wrap the
paragraph that begins "To configure Emergency Access for a vault..." in an
:::info Early Access block so the section is consistent with the other Emergency
Access sections (e.g., the ones around lines 55–57).
and "Coming soon" section.
Features to be included: