-
-
Notifications
You must be signed in to change notification settings - Fork 514
next: organization and account notifications improvements #1930
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
Uses HashSet instead of Collection for storing user organization IDs and roles. This change improves performance by leveraging the efficient lookup capabilities of HashSet, ensuring uniqueness and faster access when checking for organization or role membership.
Adds links to manage organization settings and billing directly from the user and organization switcher dropdowns. This provides quick access to organization management features, improving the user experience.
Corrects user pagination by including pending invites in the total user count for accurate "has more" calculations.
Replaces the `goto` function calls with the `A` component from the typography module for navigating to organization management and creation pages. This change enhances the user experience and allows for styling.
Updates Svelte and Typescript-eslint dev dependencies. This ensures the project is using the latest available versions of these packages, which may include bug fixes, performance improvements, and new features.
Refactors code to use the TimeProvider abstraction when introducing delays. This allows for easier testing and mocking of time-dependent operations in jobs and migrations. Also changes AllScopes to be an ISet.
Ensures the notification settings form only renders after the form data is available. This prevents errors that occur when attempting to access properties of an undefined object.
Refactors the Beast Mode chatmode configuration for improved tool usage and instruction clarity. The update includes a refined set of available tools, clarifies internet research guidelines with more specific instructions on link fetching, and emphasizes the importance of memory management to avoid redundant file reads. Also enforces .env file creation and updates todo list formatting.
Refactors notification settings forms for users and integrations, improving UI and separating concerns. Introduces a generic `UserNotificationSettingsForm` for user-specific settings and an `IntegrationNotificationSettingsForm` for integration settings, enhancing code organization and reusability. Updates the UI to use a consistent card-based layout with descriptive text for each setting.
Enhances the user interface for the user notification settings form. Replaces the heading component to ensure consistent styling. Improves the loading state of the form by using a more visually appealing skeleton loader, providing a better user experience while data is being fetched.
Enhances the appearance settings page layout by aligning the theme options (Light, Dark, System) to the center using flexbox. This provides a better user experience by visually centering the theme previews and labels.
Updates dependencies to their latest versions. This ensures the project benefits from the latest features, bug fixes, and security patches in the updated libraries.
Refactors the notification settings forms for projects and users. This change introduces a new `UserNotificationSettingsForm` component that provides a better UI, including descriptions for each notification type. It also handles the display of settings based on plan features and email verification status.
Refactors the alert component to use variants for styling, and applies the 'information' variant to the alert in the user notification settings form to enhance readability.
Improves reactivity by utilizing SvelteMap for filter caching and SvelteDate for date calculations, enhancing UI responsiveness.
Refactors the notification settings form to use `onCheckedChange` instead of `onclick` for switch components, ensuring consistent event handling. Moves `isEmailAddressVerified` declaration for better readability. Improves project notification settings saving with toast notifications to provide user feedback.
Introduces `structuredCloneState` utility to prevent cache mutation and reactive entanglement when working with forms. Updates form components to use `structuredCloneState` for initializing and resetting form data, ensuring data isolation and predictable behavior. Adds Svelte component guidelines to promote best practices and consistent development. Improves performance by using reference comparison instead of JSON stringification for reset logic. Also adds reactive binding pattern to handle query data.
Adds documentation for async components in Svelte. Enables the `experimental.async` compiler option in the Svelte configuration file to allow using `await` directly in component scripts, `$derived` expressions, and template expressions.
Updates various dependencies to their latest versions. This includes updates to `@lucide/svelte`, `bits-ui`, `shiki`, `tailwind-variants`, `@chromatic-com/storybook`, `@iconify-json/lucide`, `@playwright/test`, `@storybook/*`, `@sveltejs/kit`, `@types/node`, `eslint-plugin-storybook`, `svelte`, `svelte-check`, `typescript`, and `typescript-eslint/*`. These updates may include bug fixes, performance improvements, new features, and security patches from the updated libraries.
Adds documentation outlining best practices and patterns for frontend development, including dialog component structure, API integration, naming conventions, and type safety. These guidelines aim to promote consistency, maintainability, and code quality across the frontend codebase.
Updates the component name from "DropDown" to "Dropdown" for consistency and to adhere to naming conventions. This change affects the component itself, its import statements, and its usage within the application.
Updates the organization API to use organization ID instead of email for user operations. Changes `removeOrganizationUser` to `deleteOrganizationUser` and updates related components. Renames `UpdateOrganizationRequest` to `PatchOrganizationRequest` and updates the corresponding API call to use PATCH.
Updates the placeholder text in the set event bonus and suspend organization dialogs. This improves clarity and user experience by providing more helpful hints.
Adds documentation for using Superforms within dialogs. The new documentation covers specific patterns for handling server-side validation, preventing focus theft by SvelteKit, and ensuring proper error propagation. It also emphasizes the importance of rethrowing errors from action functions called within dialogs.
Bumps various dependency versions, including `@lucide/svelte`, `@sveltejs/adapter-static`, `@sveltejs/kit`, `bits-ui`, and `svelte`. Also, adds "unsuspended" to the VS Code settings.
Improves error handling in the set bonus organization dialog. Catches validation exceptions from the server and displays them in the form. Also, fixes an issue where the expiration date was not being correctly converted to UTC.
Improves error handling in dialog forms by applying server-side validation errors and displaying them to the user. Also, throws errors from async mutations to be caught by the parent component.
Updates and reorganizes project instructions, removing the outdated 'Beast Mode' chatmode and improving the structure of the main copilot instructions. Specifically: - Removes the obsolete 'Beast Mode' chatmode file. - Moves the 'Key Principles' section to the top of `copilot-instructions.md` for better visibility. - Simplifies backend testing instructions.
This change adds a unique ID to each superform instance. This will allow us to properly target and interact with forms, enabling improved testing and accessibility.
Handles cases where a facet filter builder is not found by returning `undefined` to prevent errors and then filters out any undefined values to prevent rendering issues.
Removes the pie chart card component as it is no longer needed.
Replaces the card components with typography components (H3, Muted) to improve visual consistency and styling control across the application. This change ensures a more uniform and maintainable UI by leveraging the typography components for titles and descriptions.
Adds unique IDs to Superforms for easier identification and manipulation, particularly when dealing with multiple forms on a single page or when needing to target specific forms via JavaScript. This enhancement improves form management and accessibility.
Removes the key block surrounding the children render. This change avoids potential issues related to state management and component re-renders when the route changes.
Updates the Node.js version used in the build environment and Dockerfile to version 24. This ensures compatibility with the latest dependencies and features.
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.
Pull Request Overview
This pull request implements comprehensive organization improvements for the Exceptionless application, focusing on enhancing the user interface with modern design patterns, improving admin functionality, and adding new notification settings. The changes modernize the codebase by replacing Card components with cleaner layouts, updating dependency versions, and implementing new admin controls for organization management.
- Replaces Card-based layouts with modern flex layouts and typography components
- Adds admin functionality for organization suspension and bonus management
- Implements comprehensive notification settings with project-specific controls
Reviewed Changes
Copilot reviewed 117 out of 118 changed files in this pull request and generated 8 comments.
Show a summary per file
File | Description |
---|---|
src/Exceptionless.Web/Models/User/ViewUser.cs | Changes collection types to use ISet for better performance |
src/Exceptionless.Web/Controllers/UserController.cs | Adds total count tracking for pagination |
src/Exceptionless.Web/ClientApp/svelte.config.js | Enables experimental async features |
Multiple Svelte route pages | Replaces Card components with modern H3/Muted typography layout patterns |
Multiple API/component files | Adds comprehensive notification settings and admin functionality |
Package/dependency files | Updates Node.js version and various package dependencies |
Files not reviewed (1)
- src/Exceptionless.Web/ClientApp/package-lock.json: Language not supported
...ss.Web/ClientApp/src/lib/features/stacks/components/stacks-bulk-actions-dropdown-menu.svelte
Show resolved
Hide resolved
...ptionless.Web/ClientApp/src/lib/features/stacks/components/stack-status-dropdown-menu.svelte
Show resolved
Hide resolved
src/Exceptionless.Web/ClientApp/src/lib/features/shared/api/api.svelte.ts
Show resolved
Hide resolved
src/Exceptionless.Web/ClientApp/src/routes/(app)/project/[projectId]/integrations/+page.svelte
Show resolved
Hide resolved
....Web/ClientApp/src/lib/features/projects/components/table/project-config-actions-cell.svelte
Show resolved
Hide resolved
....Web/ClientApp/src/lib/features/projects/components/table/project-config-actions-cell.svelte
Show resolved
Hide resolved
...pp/src/lib/features/organizations/components/organization-admin-actions-dropdown-menu.svelte
Show resolved
Hide resolved
...pp/src/lib/features/organizations/components/organization-admin-actions-dropdown-menu.svelte
Show resolved
Hide resolved
Updates the node version in the Dockerfile from 20.x to 24.x. This ensures compatibility with the latest dependencies and features.
No description provided.