Skip to content

Conversation

@HarshMN2345
Copy link
Member

@HarshMN2345 HarshMN2345 commented Jan 4, 2026

What does this PR do?

Before

image

After

image image

Test Plan

(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.)

Related PRs and Issues

(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.)

Have you read the Contributing Guidelines on issues?

(Write your answer here.)

Summary by CodeRabbit

  • New Features

    • Added a Display Settings modal to customize table columns and set view (Table), accessible from table actions.
  • Style

    • Improved mobile responsiveness with a compact small-viewport action layout that consolidates controls (Add/Import/Export/Display/Create).
    • Wrapped tables in a responsive container and added base styling to improve scrolling and layout across device sizes.

✏️ Tip: You can customize this high-level summary in your review settings.

@HarshMN2345 HarshMN2345 requested a review from ItzNotABug January 4, 2026 13:16
@appwrite
Copy link

appwrite bot commented Jan 4, 2026

Console (appwrite/console)

Project ID: 688b7bf400350cbd60e9

Sites (1)
Site Status Logs Preview QR
 console-stage
688b7cf6003b1842c9dc
Ready Ready View Logs Preview URL QR Code

Tip

Every Git commit and branch gets its own deployment URL automatically

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 4, 2026

Walkthrough

Introduces a responsive small-viewport UI branch that moves and stacks action controls (Add preset, Import, Export, Display settings, Create) when isSmallViewport is true. Adds DisplaySettingsModal and IconAdjustments imports, a showDisplaySettingsModal state, and renders the modal with columns, hideView, and view=Table. Adds class="responsive-table" to Table.Root and a new .responsive-table CSS file. Updates package.json to bump two @appwrite packages and add install/pnpm metadata. No exported/public API changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Pre-merge checks

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Title check ⚠️ Warning The title focuses on 'preset button visibility in smaller screen', but the main changes involve a comprehensive responsive UI overhaul including display settings modal, responsive controls layout, and CSS utilities. The title describes only one aspect of the changeset. Revise the title to reflect the primary change: consider 'Add responsive UI layout and display settings modal for domains page' or similar to better represent the comprehensive nature of the changes.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 732b785 and 394cb06.

📒 Files selected for processing (1)
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js,jsx,svelte}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx,svelte}: Import reusable modules from the src/lib directory using the $lib alias
Use minimal comments in code; reserve comments for TODOs or complex logic explanations
Use $lib, $routes, and $themes aliases instead of relative paths for module imports

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
src/routes/**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
**/*.{ts,tsx,js,jsx,svelte,json}

📄 CodeRabbit inference engine (AGENTS.md)

Use 4 spaces for indentation, single quotes, 100 character line width, and no trailing commas per Prettier configuration

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
src/routes/**

📄 CodeRabbit inference engine (AGENTS.md)

Configure dynamic routes using SvelteKit convention with [param] syntax in route directory names

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Capture and include UI change screenshots in PR description or comments before finalizing work
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to **/*.svelte : Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to src/routes/**/*.svelte : Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-10-13T05:13:54.542Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2413
File: src/routes/(console)/project-[region]-[project]/databases/table.svelte:33-39
Timestamp: 2025-10-13T05:13:54.542Z
Learning: In Svelte 5, `import { page } from '$app/state'` provides a reactive state proxy that can be accessed directly (e.g., `page.params`), unlike the older `import { page } from '$app/stores'` which returns a readable store requiring the `$page` syntax for auto-subscription in components.

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build
  • GitHub Check: e2e
🔇 Additional comments (3)
src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte (3)

16-16: LGTM! Import additions follow coding guidelines.

The new imports for responsive design (isSmallViewport), display settings icon (IconAdjustments), and modal component (DisplaySettingsModal) properly use the $lib alias as specified in the coding guidelines.

Also applies to: 19-25


43-43: LGTM! State management follows established pattern.

The showDisplaySettingsModal state variable is consistent with existing modal state management in this component.


190-192: LGTM! Table wrapper and modal integration implemented correctly.

The responsive-table wrapper and DisplaySettingsModal integration follow established patterns in the codebase. The modal properly receives columns and view configuration consistent with the ViewSelector on line 163.

Also applies to: 240-246

Comment on lines 81 to 189
{#if $isSmallViewport}
<Layout.Stack gap="s">
<div class="u-flex u-gap-8">
<div style="flex: 1">
<Popover let:toggle padding="none">
<Button secondary fullWidth on:click={toggle}
>Add preset</Button>
<svelte:fragment slot="tooltip" let:toggle>
<ActionMenu.Root>
{#each presets as preset}
<ActionMenu.Item.Button
on:click={(e) => {
toggle(e);
selectedPreset = preset;
showPresetModal = true;
}}>{preset}</ActionMenu.Item.Button>
{/each}
</ActionMenu.Root>
</svelte:fragment>
</Popover>
</div>
<Button
secondary
icon
ariaLabel="Import zone file"
on:click={() => (showImportModal = true)}>
<Icon size="m" icon={IconUpload} />
</Button>
<Tooltip>
<PinkButton.Button
variant="secondary"
icon
on:click={downloadRecords}>
<Icon icon={IconDownload} size="m" />
</PinkButton.Button>
<svelte:fragment slot="tooltip">Export as .txt</svelte:fragment>
</Tooltip>
<Button
secondary
icon
ariaLabel="Display settings"
on:click={() => (showDisplaySettingsModal = true)}>
<Icon icon={IconAdjustments} />
</Button>
</div>
<Button fullWidth on:click={() => (showCreate = true)}>
<Icon size="s" icon={IconPlus} slot="start" />
Create record
</Button>
</Layout.Stack>
</Layout.Stack>
<Table {data} />
{:else}
<Layout.Stack
direction="row"
gap="m"
justifyContent="space-between"
alignItems="center"
wrap="wrap">
<Layout.Stack
direction="row"
gap="s"
alignItems="center"
wrap="wrap"
style="flex: 1">
<Button secondary on:click={() => (showImportModal = true)}>
<Icon icon={IconUpload} size="s" slot="start" />
Import zone file
</Button>
<Tooltip>
<PinkButton.Button
variant="secondary"
icon
on:click={downloadRecords}>
<Icon icon={IconDownload} size="s" />
</PinkButton.Button>
<svelte:fragment slot="tooltip">Export as .txt</svelte:fragment>
</Tooltip>
</Layout.Stack>
<Layout.Stack
direction="row"
gap="s"
alignItems="center"
style="flex: 1; min-width: 250px; justify-content: flex-end;">
<ViewSelector ui="new" view={View.Table} {columns} hideView />

<Popover let:toggle padding="none">
<Button secondary on:click={toggle}>Add preset</Button>
<svelte:fragment slot="tooltip" let:toggle>
<ActionMenu.Root>
{#each presets as preset}
<ActionMenu.Item.Button
on:click={(e) => {
toggle(e);
selectedPreset = preset;
showPresetModal = true;
}}>{preset}</ActionMenu.Item.Button>
{/each}
</ActionMenu.Root>
</svelte:fragment>
</Popover>

<div>
<Button on:click={() => (showCreate = true)}>
<Icon size="s" icon={IconPlus} slot="start" />
Create record
</Button>
</div>
</Layout.Stack>
</Layout.Stack>
{/if}
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# Find ViewSelector component implementation
find . -type f -name "*.svelte" -o -name "*.ts" -o -name "*.tsx" | xargs grep -l "ViewSelector" | head -20

Repository: appwrite/console

Length of output: 1025


🏁 Script executed:

# Search for ViewSelector exports and definition
rg -n "export.*ViewSelector|component.*ViewSelector" --type=svelte --type=ts --type=tsx

Repository: appwrite/console

Length of output: 90


🏁 Script executed:

# Look at the specific file to understand context
head -80 "src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte" | tail -20

Repository: appwrite/console

Length of output: 645


🏁 Script executed:

# Search for display settings related code in the codebase
rg -n "displaySettings|Display.*Settings|display.*settings" --type=svelte --type=ts --type=tsx

Repository: appwrite/console

Length of output: 90


🏁 Script executed:

# Search for ViewSelector in the components index
grep -n "ViewSelector" src/lib/components/index.ts

Repository: appwrite/console

Length of output: 127


🏁 Script executed:

# Find ViewSelector component file
find src/lib/components -name "*ViewSelector*" -o -name "*viewSelector*"

Repository: appwrite/console

Length of output: 98


🏁 Script executed:

# Search for display settings using grep (works better with svelte)
grep -rn "displaySettings\|Display.*Settings\|showDisplaySettings" src/lib/components/ src/routes/

Repository: appwrite/console

Length of output: 905


🏁 Script executed:

# Look at the actual file context more carefully
sed -n '60,100p' "src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte"

Repository: appwrite/console

Length of output: 1956


🏁 Script executed:

# Check for state variables related to display settings
grep -n "showDisplaySettingsModal\|displaySettings" "src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte"

Repository: appwrite/console

Length of output: 359


🏁 Script executed:

# Check the entire large viewport branch (lines 131-188 approximately)
sed -n '131,189p' "src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte"

Repository: appwrite/console

Length of output: 3133


🏁 Script executed:

# Check ViewSelector component to see if it has display settings
cat src/lib/components/viewSelector.svelte

Repository: appwrite/console

Length of output: 2931


🏁 Script executed:

# Check if ViewSelector has any props related to display settings
grep -n "props\|export\|let\|bind:" src/lib/components/viewSelector.svelte | head -20

Repository: appwrite/console

Length of output: 175


Add Display Settings button to large viewport branch for consistent UX.

The Display Settings button is only rendered in the small viewport branch (line 122) but is missing from the large viewport branch (lines 131-189). Since ViewSelector only handles column visibility and view toggling—not display settings—large viewport users have no way to access the Display Settings feature.

Either add the Display Settings button to the large viewport branch or document why it's intentionally unavailable for larger screens.

<Button size="s" on:click={() => (showCreate = true)}>
{#if $isSmallViewport}
<Layout.Stack gap="s">
<div class="u-flex u-gap-8">
Copy link
Member

Choose a reason for hiding this comment

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

Stack

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI Agents
In
@src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte:
- Around line 248-255: The .responsive-table rule sets overflow: hidden while
also specifying scrollbar-width: thin, which prevents scrolling and will clip
the ~1035px-wide table on small screens; update the CSS for .responsive-table to
use overflow: auto (or overflow-x: auto) so horizontal scrollbars can appear, or
if the @appwrite.io/pink-svelte Table component already handles responsive
scrolling, remove the custom .responsive-table overflow and scrollbar rules
entirely; target the .responsive-table selector in the <style> block to make
this change.
🧹 Nitpick comments (2)
src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte (2)

81-130: Icon size inconsistency between viewport branches.

The small viewport branch uses size="m" for icons (lines 107, 114, 123), while the large viewport branch uses size="s" (lines 145, 153). While larger touch targets are appropriate for mobile, consider whether this inconsistency is intentional or if icon sizes should be standardized.


190-192: Consider using the existing Responsive container component.

The custom responsive-table wrapper could potentially be replaced with an existing Responsive container component, as suggested by ItzNotABug. Using established patterns from the codebase improves maintainability and consistency.

Based on feedback from ItzNotABug.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 394cb06 and d7b5167.

📒 Files selected for processing (1)
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js,jsx,svelte}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx,svelte}: Import reusable modules from the src/lib directory using the $lib alias
Use minimal comments in code; reserve comments for TODOs or complex logic explanations
Use $lib, $routes, and $themes aliases instead of relative paths for module imports

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
src/routes/**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
**/*.{ts,tsx,js,jsx,svelte,json}

📄 CodeRabbit inference engine (AGENTS.md)

Use 4 spaces for indentation, single quotes, 100 character line width, and no trailing commas per Prettier configuration

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
src/routes/**

📄 CodeRabbit inference engine (AGENTS.md)

Configure dynamic routes using SvelteKit convention with [param] syntax in route directory names

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
🧠 Learnings (6)
📓 Common learnings
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Capture and include UI change screenshots in PR description or comments before finalizing work
📚 Learning: 2025-09-25T04:23:14.025Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2373
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte:20-24
Timestamp: 2025-09-25T04:23:14.025Z
Learning: The Selector.Switch component from appwrite.io/pink-svelte doesn't accept `aria-describedby` or rest props (`...restProps`), limiting accessibility customization options.

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-09-25T04:33:19.632Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2373
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/createTable.svelte:28-33
Timestamp: 2025-09-25T04:33:19.632Z
Learning: In the Appwrite console createTable component, manual submit state management (like setting creatingTable = true) is not needed because: 1) The Modal component handles submit state internally via submissionLoader, preventing double submissions, and 2) After successful table creation, the entire view is destroyed and replaced with the populated table view, ending the component lifecycle.

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to **/*.svelte : Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to src/routes/**/*.svelte : Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-10-13T05:13:54.542Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2413
File: src/routes/(console)/project-[region]-[project]/databases/table.svelte:33-39
Timestamp: 2025-10-13T05:13:54.542Z
Learning: In Svelte 5, `import { page } from '$app/state'` provides a reactive state proxy that can be accessed directly (e.g., `page.params`), unlike the older `import { page } from '$app/stores'` which returns a readable store requiring the `$page` syntax for auto-subscription in components.

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build
  • GitHub Check: e2e
🔇 Additional comments (3)
src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte (3)

16-16: LGTM! Imports follow coding guidelines.

The imports properly use the $lib alias and include all necessary components for the responsive behavior.

Also applies to: 19-25


240-246: LGTM! DisplaySettingsModal integration is correct.

The modal is properly integrated with appropriate props (columns, hideView, view={View.Table}) and follows the established pattern for modal rendering in the codebase.


131-189: Display Settings button missing from large viewport branch.

The Display Settings button (using IconAdjustments) is only rendered in the small viewport branch (lines 118-124) but is missing from the large viewport branch. Large viewport users have no way to access the Display Settings feature, creating an inconsistent UX.

Add the Display Settings button to the large viewport branch or document why it's intentionally unavailable for larger screens. Note that ViewSelector handles column visibility and view toggling, not display settings.

Likely an incorrect or invalid review comment.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte (1)

102-124: Minor: Inconsistent icon size prop.

The IconAdjustments icon on line 123 is missing the size="m" prop that's used consistently on other icons in this block (lines 107, 114).

🔎 Proposed fix
                             <Button
                                 secondary
                                 icon
                                 ariaLabel="Display settings"
                                 on:click={() => (showDisplaySettingsModal = true)}>
-                                <Icon icon={IconAdjustments} />
+                                <Icon icon={IconAdjustments} size="m" />
                             </Button>
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d7b5167 and b60295a.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (4)
  • package.json
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/table.svelte
  • src/routes/+layout.svelte
✅ Files skipped from review due to trivial changes (2)
  • src/routes/+layout.svelte
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/table.svelte
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js,jsx,svelte,json}

📄 CodeRabbit inference engine (AGENTS.md)

Use 4 spaces for indentation, single quotes, 100 character line width, and no trailing commas per Prettier configuration

Files:

  • package.json
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
**/*.{ts,tsx,js,jsx,svelte}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx,svelte}: Import reusable modules from the src/lib directory using the $lib alias
Use minimal comments in code; reserve comments for TODOs or complex logic explanations
Use $lib, $routes, and $themes aliases instead of relative paths for module imports

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
src/routes/**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
src/routes/**

📄 CodeRabbit inference engine (AGENTS.md)

Configure dynamic routes using SvelteKit convention with [param] syntax in route directory names

Files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
🧠 Learnings (5)
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to **/*.svelte : Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Applied to files:

  • package.json
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to src/routes/**/*.svelte : Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Applied to files:

  • package.json
  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-09-26T06:48:57.938Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2373
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte:629-631
Timestamp: 2025-09-26T06:48:57.938Z
Learning: In the Appwrite console codebase using appwrite.io/pink-svelte, the Icon component automatically handles CSS variable names passed to its color prop by internally wrapping them with var(). Therefore, passing '--some-css-variable' as a string to the Icon color prop works correctly without needing to manually wrap it with var().

Applied to files:

  • package.json
📚 Learning: 2025-09-25T04:23:14.025Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2373
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte:20-24
Timestamp: 2025-09-25T04:23:14.025Z
Learning: The Selector.Switch component from appwrite.io/pink-svelte doesn't accept `aria-describedby` or rest props (`...restProps`), limiting accessibility customization options.

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
📚 Learning: 2025-10-13T05:13:54.542Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2413
File: src/routes/(console)/project-[region]-[project]/databases/table.svelte:33-39
Timestamp: 2025-10-13T05:13:54.542Z
Learning: In Svelte 5, `import { page } from '$app/state'` provides a reactive state proxy that can be accessed directly (e.g., `page.params`), unlike the older `import { page } from '$app/stores'` which returns a readable store requiring the `$page` syntax for auto-subscription in components.

Applied to files:

  • src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte
🔇 Additional comments (4)
src/routes/(console)/organization-[organization]/domains/domain-[domain]/+page.svelte (3)

16-26: Imports are well-organized and follow conventions.

New imports use the $lib alias correctly per coding guidelines, and the icon imports are consolidated into a single statement.


43-43: State variable follows existing patterns.

The showDisplaySettingsModal state follows the same naming and initialization pattern as other modal toggles in this file.


237-244: Modal integration follows established patterns.

The DisplaySettingsModal render block follows the same conditional rendering pattern as other modals in this file. The props (columns, hideView, view={View.Table}) align with the page's table-only view context.

package.json (1)

27-29: Dependency version bumps are coordinated and aligned with component imports.

Both @appwrite.io/pink-icons-svelte and @appwrite.io/pink-svelte are updated to commit cb016bd. This aligns with the new component imports: IconAdjustments (from pink-icons-svelte) and DisplaySettingsModal are now used in responsiveContainerHeader.svelte.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🤖 Fix all issues with AI Agents
In @package.json:
- Line 43: The package.json contains an accidental dependency entry "install":
"^0.13.0" which should be removed; delete the "install" dependency line from
package.json (the exact symbol to remove is the dependency key "install") and
then run your package manager (pnpm/yarn/npm) to update node_modules and the
lockfile; before committing, verify no code imports or requires the package
(search for "from 'install'", "from \"install\"", or require('install')) and
ensure tests/build still pass.
- Line 47: Remove "pnpm": "^10.27.0" from package.json dependencies (the entry
under "dependencies") and resolve the version mismatch with the existing
packageManager field (pnpm@10.20.0) by updating packageManager to the desired
version or adding an "engines" entry for pnpm; then search the codebase for any
imports/requires of the "pnpm" module (e.g., occurrences of from 'pnpm' or
require('pnpm')) and remove/replace them if found so pnpm is not treated as a
runtime dependency.
📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b60295a and 01a7cdc.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1)
  • package.json
🧰 Additional context used
📓 Path-based instructions (1)
**/*.{ts,tsx,js,jsx,svelte,json}

📄 CodeRabbit inference engine (AGENTS.md)

Use 4 spaces for indentation, single quotes, 100 character line width, and no trailing commas per Prettier configuration

Files:

  • package.json
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Capture and include UI change screenshots in PR description or comments before finalizing work
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to **/*.svelte : Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Applied to files:

  • package.json
📚 Learning: 2025-09-26T06:48:57.938Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2373
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte:629-631
Timestamp: 2025-09-26T06:48:57.938Z
Learning: In the Appwrite console codebase using appwrite.io/pink-svelte, the Icon component automatically handles CSS variable names passed to its color prop by internally wrapping them with var(). Therefore, passing '--some-css-variable' as a string to the Icon color prop works correctly without needing to manually wrap it with var().

Applied to files:

  • package.json
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to src/routes/**/*.svelte : Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Applied to files:

  • package.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: e2e
  • GitHub Check: build
🔇 Additional comments (1)
package.json (1)

27-29: Confirm that commit cfa2920 includes the responsive preset button visibility fixes.

The updates to @appwrite.io/pink-icons-svelte and @appwrite.io/pink-svelte reference commit cfa2920. Since these are commit-based dependencies rather than semantic versions, confirm that this commit includes the necessary components for the responsive preset button visibility changes mentioned in the PR.

"deep-equal": "^2.2.3",
"echarts": "^5.6.0",
"ignore": "^6.0.2",
"install": "^0.13.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Remove the accidental "install" package dependency.

The install package is a well-known npm placeholder with no real functionality. It appears to have been added accidentally (possibly from running pnpm install install instead of pnpm install). This dependency serves no purpose and adds unnecessary bloat to the installation.

🔎 Proposed fix
-        "install": "^0.13.0",

Verify that this package is not actually used anywhere in the codebase:

#!/bin/bash
# Description: Check if the "install" package is imported or used anywhere in the codebase

# Search for imports or requires of the "install" package
rg -n --type=ts --type=js --type=svelte "from ['\"]install['\"]|require\(['\"]install['\"]"
🤖 Prompt for AI Agents
In @package.json at line 43, The package.json contains an accidental dependency
entry "install": "^0.13.0" which should be removed; delete the "install"
dependency line from package.json (the exact symbol to remove is the dependency
key "install") and then run your package manager (pnpm/yarn/npm) to update
node_modules and the lockfile; before committing, verify no code imports or
requires the package (search for "from 'install'", "from \"install\"", or
require('install')) and ensure tests/build still pass.

"nanoid": "^5.1.5",
"nanotar": "^0.1.1",
"plausible-tracker": "^0.3.9",
"pnpm": "^10.27.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

Remove pnpm from runtime dependencies and resolve version conflict.

Package managers like pnpm should not be listed as runtime dependencies. Additionally, this creates a version conflict with the packageManager field on line 104 (pnpm@10.20.0 vs ^10.27.0).

To specify the required pnpm version, use the packageManager field (already present) or the engines field, not dependencies. Having pnpm as a runtime dependency adds ~30MB of unnecessary files to node_modules.

🔎 Proposed fix
-        "pnpm": "^10.27.0",

If you need to update the pnpm version requirement, update line 104 instead:

-    "packageManager": "pnpm@10.20.0"
+    "packageManager": "pnpm@10.27.0"

Or add to the engines field:

     "engines": {
-        "node": ">=22.0.0"
+        "node": ">=22.0.0",
+        "pnpm": ">=10.20.0"
     },

Verify that pnpm is not imported as a module anywhere:

#!/bin/bash
# Description: Check if pnpm is imported as a module anywhere in the codebase

# Search for imports or requires of pnpm as a module
rg -n --type=ts --type=js --type=svelte "from ['\"]pnpm['\"]|require\(['\"]pnpm['\"]"
🤖 Prompt for AI Agents
In @package.json at line 47, Remove "pnpm": "^10.27.0" from package.json
dependencies (the entry under "dependencies") and resolve the version mismatch
with the existing packageManager field (pnpm@10.20.0) by updating packageManager
to the desired version or adding an "engines" entry for pnpm; then search the
codebase for any imports/requires of the "pnpm" module (e.g., occurrences of
from 'pnpm' or require('pnpm')) and remove/replace them if found so pnpm is not
treated as a runtime dependency.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/routes/+layout.svelte (1)

20-20: Consider moving this CSS to a more general location.

The .responsive-table utility class is used across multiple components (organizationUsageLimits.svelte and the domains table), so importing it globally in the root layout is appropriate. However, the directory path $lib/profiles/css/ suggests profile-specific styling, which is misleading. Consider moving this file to $lib/styles/ or $lib/css/ to better reflect that it contains a global utility class.

📜 Review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 01a7cdc and bb76972.

📒 Files selected for processing (2)
  • src/lib/profiles/css/base.css
  • src/routes/+layout.svelte
✅ Files skipped from review due to trivial changes (1)
  • src/lib/profiles/css/base.css
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js,jsx,svelte}

📄 CodeRabbit inference engine (AGENTS.md)

**/*.{ts,tsx,js,jsx,svelte}: Import reusable modules from the src/lib directory using the $lib alias
Use minimal comments in code; reserve comments for TODOs or complex logic explanations
Use $lib, $routes, and $themes aliases instead of relative paths for module imports

Files:

  • src/routes/+layout.svelte
src/routes/**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Files:

  • src/routes/+layout.svelte
**/*.{ts,tsx,js,jsx,svelte,json}

📄 CodeRabbit inference engine (AGENTS.md)

Use 4 spaces for indentation, single quotes, 100 character line width, and no trailing commas per Prettier configuration

Files:

  • src/routes/+layout.svelte
**/*.svelte

📄 CodeRabbit inference engine (AGENTS.md)

Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development

Files:

  • src/routes/+layout.svelte
src/routes/**

📄 CodeRabbit inference engine (AGENTS.md)

Configure dynamic routes using SvelteKit convention with [param] syntax in route directory names

Files:

  • src/routes/+layout.svelte
🧠 Learnings (3)
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to **/*.{ts,tsx,js,jsx,svelte} : Use $lib, $routes, and $themes aliases instead of relative paths for module imports

Applied to files:

  • src/routes/+layout.svelte
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to src/routes/**/*.svelte : Use SvelteKit file conventions: +page.svelte for components, +page.ts for data loaders, +layout.svelte for wrappers, +error.svelte for error handling, and dynamic route params in square brackets like [param]

Applied to files:

  • src/routes/+layout.svelte
📚 Learning: 2025-11-25T03:15:27.539Z
Learnt from: CR
Repo: appwrite/console PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-11-25T03:15:27.539Z
Learning: Applies to **/*.{ts,tsx,js,jsx,svelte} : Import reusable modules from the src/lib directory using the $lib alias

Applied to files:

  • src/routes/+layout.svelte
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: build
  • GitHub Check: e2e

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants