-
Notifications
You must be signed in to change notification settings - Fork 208
Feat. Project labels #2765
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feat. Project labels #2765
Conversation
Console (appwrite/console)Project ID: Tip Git integration provides automatic deployments with optional PR comments |
|
Warning Rate limit exceeded@Meldiron has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 5 minutes and 57 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
WalkthroughUpdates the package.json dependency URL for Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 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.
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)/project-[region]-[project]/settings/updateLabels.svelte:
- Around line 35-41: The catch block is shadowing the component's reactive error
variable named "error"; rename the catch parameter (e.g., to "err" or
"caughtError") and update the handler to assign the reactive "error" variable
(error = err) and use that renamed variable when calling addNotification and
trackError (e.g., addNotification({ message: err.message, ... });
trackError(err, Submit.ProjectUpdateLabels);) so the component state is updated
and no shadowing occurs.
🧹 Nitpick comments (1)
src/routes/(console)/project-[region]-[project]/settings/updateLabels.svelte (1)
70-76: Consider a more robust key for re-renderingInputTags.Using
labels.lengthas the key won't trigger a re-render when labels are swapped or replaced 1:1 (same count). If the intent is to force re-render on any label change, consider using a more unique key.🔎 Alternative approach
- {#key labels.length} + {#key labels.join(',')} <InputTags id="project-labels" label="Labels" placeholder="Select or type project labels" bind:tags={labels} /> {/key}
📜 Review details
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (5)
package.jsonsrc/lib/actions/analytics.tssrc/routes/(console)/organization-[organization]/+page.tssrc/routes/(console)/project-[region]-[project]/settings/+page.sveltesrc/routes/(console)/project-[region]-[project]/settings/updateLabels.svelte
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{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/lib/actions/analytics.tssrc/routes/(console)/project-[region]-[project]/settings/updateLabels.sveltesrc/routes/(console)/organization-[organization]/+page.tssrc/routes/(console)/project-[region]-[project]/settings/+page.svelte
**/*.ts
📄 CodeRabbit inference engine (AGENTS.md)
**/*.ts: Define types inline or in .d.ts files, avoid creating separate .types.ts files
Use TypeScript in non-strict mode; any type is tolerated in this project
Files:
src/lib/actions/analytics.tssrc/routes/(console)/organization-[organization]/+page.ts
**/*.{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/lib/actions/analytics.tspackage.jsonsrc/routes/(console)/project-[region]-[project]/settings/updateLabels.sveltesrc/routes/(console)/organization-[organization]/+page.tssrc/routes/(console)/project-[region]-[project]/settings/+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)/project-[region]-[project]/settings/updateLabels.sveltesrc/routes/(console)/project-[region]-[project]/settings/+page.svelte
**/*.svelte
📄 CodeRabbit inference engine (AGENTS.md)
Use Svelte 5 + SvelteKit 2 syntax with TypeScript for component development
Files:
src/routes/(console)/project-[region]-[project]/settings/updateLabels.sveltesrc/routes/(console)/project-[region]-[project]/settings/+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)/project-[region]-[project]/settings/updateLabels.sveltesrc/routes/(console)/organization-[organization]/+page.tssrc/routes/(console)/project-[region]-[project]/settings/+page.svelte
🧠 Learnings (12)
📚 Learning: 2025-10-07T14:16:31.893Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2413
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/analytics.ts:17-18
Timestamp: 2025-10-07T14:16:31.893Z
Learning: In the console codebase analytics helpers at `src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/analytics.ts`, the dynamically constructed enum lookups (like `Submit[enumKey as keyof typeof Submit]`) are designed to return `undefined` safely when a terminology entry doesn't exist, because the corresponding views won't be rendered in those scenarios (e.g., DocumentsDB columns/attributes have no view), so the analytics code paths won't be reached.
Applied to files:
src/lib/actions/analytics.ts
📚 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: 2026-01-06T11:49:07.493Z
Learnt from: TorstenDittmann
Repo: appwrite/console PR: 2635
File: package.json:95-95
Timestamp: 2026-01-06T11:49:07.493Z
Learning: Remove the packageManager field from package.json in Bun projects. Bun does not use Corepack's packageManager setting, so keeping it can cause confusion and misleading tooling results. Apply this pattern to all package.json files in Bun-enabled environments.
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:
src/routes/(console)/project-[region]-[project]/settings/updateLabels.svelte
📚 Learning: 2025-11-19T11:22:42.553Z
Learnt from: atharvadeosthale
Repo: appwrite/console PR: 2512
File: src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte:51-83
Timestamp: 2025-11-19T11:22:42.553Z
Learning: In src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte, the Lovable integration URL format `https://lovable.dev/` with `autosubmit` and `prompt` as query parameters (set via searchParams) is correct and functional.
Applied to files:
src/routes/(console)/project-[region]-[project]/settings/updateLabels.svelte
📚 Learning: 2025-09-30T07:41:06.679Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2425
File: src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte:454-468
Timestamp: 2025-09-30T07:41:06.679Z
Learning: In `src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte`, the column suggestions API (console.suggestColumns) has a maximum limit of 7 columns returned, which aligns with the initial placeholder count of 7 in customColumns.
Applied to files:
src/routes/(console)/project-[region]-[project]/settings/updateLabels.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/lib/components/**/*.svelte : Use PascalCase for component file names and place them in src/lib/components/[feature]/ directory structure
Applied to files:
src/routes/(console)/project-[region]-[project]/settings/updateLabels.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)/project-[region]-[project]/settings/updateLabels.svelte
📚 Learning: 2025-11-19T11:22:42.553Z
Learnt from: atharvadeosthale
Repo: appwrite/console PR: 2512
File: src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte:51-83
Timestamp: 2025-11-19T11:22:42.553Z
Learning: In src/routes/(console)/project-[region]-[project]/overview/platforms/llmBanner.svelte, the Cursor integration URL format `https://cursor.com/link/prompt` with the `text` query parameter is correct and functional.
Applied to files:
src/routes/(console)/project-[region]-[project]/settings/updateLabels.svelte
📚 Learning: 2025-09-08T13:20:47.308Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2316
File: src/routes/(console)/project-[region]-[project]/functions/create-function/deploy/+page.svelte:29-29
Timestamp: 2025-09-08T13:20:47.308Z
Learning: The Form.svelte component in the Appwrite console creates a FormContext with isSubmitting as writable(false) and expects consumers to work with Svelte writable stores, not plain booleans.
Applied to files:
src/routes/(console)/project-[region]-[project]/settings/updateLabels.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)/project-[region]-[project]/settings/+page.svelte
📚 Learning: 2025-10-05T09:41:40.439Z
Learnt from: ItzNotABug
Repo: appwrite/console PR: 2398
File: src/routes/(console)/verify-email/+page.svelte:48-51
Timestamp: 2025-10-05T09:41:40.439Z
Learning: In SvelteKit 5, `page` imported from `$app/state` is a reactive state object (using runes), not a store. It should be accessed as `page.data` without the `$` prefix, unlike the store-based `$page` from `$app/stores` in earlier versions.
Applied to files:
src/routes/(console)/project-[region]-[project]/settings/+page.svelte
🧬 Code graph analysis (1)
src/routes/(console)/organization-[organization]/+page.ts (1)
src/lib/stores/sdk.ts (1)
sdk(173-196)
⏰ 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). (1)
- GitHub Check: e2e
🔇 Additional comments (6)
src/lib/actions/analytics.ts (1)
250-250: LGTM!The new
ProjectUpdateLabelsanalytics event follows the established naming convention and is appropriately placed alongside other project-related submit events.src/routes/(console)/project-[region]-[project]/settings/+page.svelte (2)
18-18: LGTM!The
UpdateLabelsimport follows the project's alias conventions using a relative path for sibling components.
89-90: LGTM!The component placement is logical—basic project metadata (
UpdateName,UpdateLabels) is grouped together before service and installation settings.src/routes/(console)/organization-[organization]/+page.ts (1)
27-29: LGTM!The composite search query enables users to find projects by name or by labels, supporting the new labeling feature effectively.
src/routes/(console)/project-[region]-[project]/settings/updateLabels.svelte (1)
1-103: LGTM overall!The component is well-structured with proper:
- Alphanumeric validation with clear user feedback
- Suggested labels as toggleable presets
- Disabled state logic using symmetric difference
- Analytics tracking for success and errors
- Cache invalidation for both PROJECT and ORGANIZATION dependencies
package.json (1)
25-25: SDK version supports theupdateLabelsAPI.The dependency update correctly aligns with the existing
UpdateLabelsimplementation. The codebase already uses bothsdk.forConsole.projects.updateLabels()andsdk.forProject().users.updateLabels()in the project settings and user management components.

What does this PR do?
Updates copy
Allows label searching
Allows to set label
Test Plan
Manual QA
Related PRs and Issues
appwrite/appwrite#11090
Have you read the Contributing Guidelines on issues?
Yes
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.