-
Notifications
You must be signed in to change notification settings - Fork 196
feat: enhance support wizard with hierarchical topics, severity levels, and org-scoped filtering #2515
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
base: main
Are you sure you want to change the base?
Conversation
|
This PR was not deployed automatically as @Copilot does not have access to the Railway project. In order to get automatic PR deploys, please add @Copilot to your workspace on Railway. |
ConsoleProject ID: Tip Appwrite has a Discord community with over 16 000 members. |
|
Important Review skippedBot user detected. To trigger a single review, invoke the You can disable this status message by setting the Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. Note Free review on us!CodeRabbit is offering free reviews until Fri Nov 07 2025 to showcase some of the refinements we've made. Comment |
Co-authored-by: stnguyen90 <[email protected]>
Co-authored-by: stnguyen90 <[email protected]>
Co-authored-by: stnguyen90 <[email protected]>
… technical default, required severity Co-authored-by: stnguyen90 <[email protected]>
Co-authored-by: stnguyen90 <[email protected]>
Co-authored-by: stnguyen90 <[email protected]>
Co-authored-by: stnguyen90 <[email protected]>
stnguyen90
left a 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.
@copilot make sure the following run successfully
- npm run check
- npm run build
- npm run lint
- npm run test
Co-authored-by: stnguyen90 <[email protected]>
I attempted to run the validation commands but encountered network connectivity issues (blocked access to pkg.pr.new) which prevented npm install from completing. The code changes are syntactically correct based on Svelte 5 patterns used elsewhere in the codebase. The changes made:
These are standard Svelte 5 patterns. I recommend running the validation commands in your local environment with proper network access to confirm all tests pass. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
- set default severity to question since there needs to be a value set but the required attribute on InputSelect doesn't work - require details
| $effect(() => { | ||
| return () => { | ||
| $supportData = { | ||
| message: null, | ||
| subject: null, | ||
| category: 'technical', | ||
| topic: undefined, | ||
| severity: 'question', | ||
| file: null | ||
| }; | ||
| }; | ||
| }); |
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.
why $effect here? lets just use onDestroy, much cleaner.
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.
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.
Fixed in commit 5898e21. Replaced $effect with onDestroy for cleaner cleanup logic.
| }); | ||
| // Update topic options when category changes | ||
| let topicOptions = $derived( |
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.
const.
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.
@copilot lets use const here
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.
Fixed in commit 5898e21. Changed let to const for topicOptions.
| $: supportTimings = `${utcHourToLocaleHour(workTimings.start)} - ${utcHourToLocaleHour(workTimings.end)} ${localeTimezoneName()}`; | ||
| $: supportWeekDays = `${utcWeekDayToLocaleWeekDay(workTimings.startDay, workTimings.start)} - ${utcWeekDayToLocaleWeekDay(workTimings.endDay, workTimings.end)}`; | ||
| let supportTimings = $derived( |
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.
const.
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.
@copilot let's use const here
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.
Fixed in commit 5898e21. Changed let to const for supportTimings.
| let supportTimings = $derived( | ||
| `${utcHourToLocaleHour(workTimings.start)} - ${utcHourToLocaleHour(workTimings.end)} ${localeTimezoneName()}` | ||
| ); | ||
| let supportWeekDays = $derived( |
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.
same.
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.
@copilot let's use const here
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.
Fixed in commit 5898e21. Changed let to const for supportWeekDays.
| $effect(() => { | ||
| return () => { | ||
| $supportData = { | ||
| message: null, | ||
| subject: null, | ||
| category: 'technical', | ||
| topic: undefined, | ||
| severity: 'question', | ||
| file: null | ||
| }; | ||
| }; | ||
| }); |
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.
| }); | ||
| // Update topic options when category changes | ||
| let topicOptions = $derived( |
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.
@copilot lets use const here
| $: supportTimings = `${utcHourToLocaleHour(workTimings.start)} - ${utcHourToLocaleHour(workTimings.end)} ${localeTimezoneName()}`; | ||
| $: supportWeekDays = `${utcWeekDayToLocaleWeekDay(workTimings.startDay, workTimings.start)} - ${utcWeekDayToLocaleWeekDay(workTimings.endDay, workTimings.end)}`; | ||
| let supportTimings = $derived( |
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.
@copilot let's use const here
| let supportTimings = $derived( | ||
| `${utcHourToLocaleHour(workTimings.start)} - ${utcHourToLocaleHour(workTimings.end)} ${localeTimezoneName()}` | ||
| ); | ||
| let supportWeekDays = $derived( |
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.
@copilot let's use const here
Co-authored-by: stnguyen90 <[email protected]>

Support Wizard Updates - COMPLETED ✅
All requirements from the issue have been successfully implemented.
Completed Features:
Recent Changes (Latest PR Feedback):
$effectwithonDestroy: Changed cleanup logic from$effectwith return function to standardonDestroylifecycle hook for cleaner, more idiomatic codelettoconstfor$derivedvalues: UpdatedtopicOptions,supportTimings, andsupportWeekDaysto useconstsince$derivedvalues are read-onlyImplementation Details:
1. Store Updates (
src/routes/(console)/wizard/support/store.ts):topic?: stringfield for sub-category selectionseverity?: stringfield for ticket severity level2. Support Wizard UI (
src/routes/(console)/supportWizard.svelte):$staterune for reactive variables (projectOptions)$derivedrune withconstfor computed values (topicOptions,supportTimings,supportWeekDays)onMountfor one-time project loading (avoiding reactive dependencies)onDestroyfor cleanup (cleaner than$effectfor simple cleanup)severityPopoversnippet containing the entire popover markup{@render severityPopover()}to render the snippet in the InputSelectQueryfrom @appwrite.io/console for server-side filteringPopoverfrom @appwrite.io/pink-svelte for severity descriptionsIconInfofrom @appwrite.io/pink-icons-svelte for info iconButtonfrom $lib/elements/forms for popover buttononMountandonDestroyfrom svelte for lifecycle managementcategoriesarray with value/label pairs for proper title-cased displaytopicsByCategoryobject mapping categories to their respective topicsseverityOptionsarray with all severity levelsonMountwith server-side filtering usingQuery.equal('teamId', $organization.$id)categoriesarray{#key $supportData.category}to force reset on category changerequired={true}torequiredhandleSubmit):resetData()to use 'technical' as default categoryonDestroylifecycle hookFiles Modified:
src/routes/(console)/supportWizard.svelte- Main implementation (migrated to Svelte 5)src/routes/(console)/wizard/support/store.ts- Type definitions and default valuesFixes https://linear.app/appwrite/issue/SUC-1741/update-support-wizard
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.