-
Notifications
You must be signed in to change notification settings - Fork 0
fix: Bugs and Cleanup #45
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
|
Hey there and thank you for opening this pull request! 👋🏼 We require pull request titles to follow the Conventional Commits specification and it looks like your proposed title needs to be adjusted. Details: |
5beec9c to
fee7949
Compare
ccfff88 to
08d9e37
Compare
15d0d82 to
dbc0037
Compare
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 PR upgrades the frontend to Tailwind CSS v4, introduces stricter code quality standards through Biome and Commitlint, and includes various bug fixes and improvements across the codebase. The migration involves substantial changes to CSS syntax, component styling, and tooling configuration.
Key Changes:
- Migration from Tailwind CSS v3 to v4 with new
@importsyntax and theme configuration - Added Commitlint for conventional commit message enforcement in CI
- Updated validation constants and refactored prompt/history management with improved type safety
- Removed obsolete files (test results, unused SVGs) and dependencies
Reviewed Changes
Copilot reviewed 40 out of 48 changed files in this pull request and generated 22 comments.
Show a summary per file
| File | Description |
|---|---|
frontend/package.json |
Upgraded Tailwind v4, added character count extension, Commitlint dependencies, removed html-to-docx |
frontend/biome.json |
Updated schema to v2.3.5, enabled Tailwind directives parsing, added stricter lint rules |
frontend/postcss.config.mjs |
Updated plugin from tailwindcss to @tailwindcss/postcss for v4 compatibility |
frontend/tailwind.config.ts |
Removed entire config file (v4 uses CSS-based configuration) |
frontend/src/app/globals.css |
Migrated to Tailwind v4 syntax with @import, @theme, custom variants, and prose utilities |
frontend/src/app/layout.tsx |
Improved layout structure with min-height container wrapper |
frontend/src/shared/constants.ts |
Reduced minimum length constraints, consolidated title/name constants, added prompt categories |
frontend/src/shared/schemas/history.ts |
Updated to use consolidated asset name length constants |
frontend/src/lib/constants.ts |
Added comprehensive Danish meeting/note type categories |
frontend/src/lib/ui/core/shadcn/*.tsx |
Updated Tailwind class syntax for v4 data attribute selectors and CSS improvements |
frontend/src/lib/ui/custom/prompt-library/* |
Refactored to use PromptDTO consistently, improved type safety in mutations |
frontend/src/lib/ui/custom/dialog/PromptDialog.tsx |
Migrated to centralized validation with validatePromptDTO, improved error handling |
frontend/src/lib/ui/custom/ExportFormatSelect.tsx |
New Select component replacing dropdown menu for export format |
frontend/src/lib/hooks/*.ts |
Replaced .forEach() with for...of loops per Biome rules |
.github/workflows/ci.yml |
Added Commitlint check, removed push trigger, enabled full git history fetch |
TEST_RESULTS.md |
Removed obsolete test documentation file |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| data-slot="table-head" | ||
| className={cn( | ||
| "text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", | ||
| "text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 *:[[role=checkbox]]:translate-y-[2px]", |
Copilot
AI
Nov 17, 2025
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.
The selector syntax *:[[role=checkbox]] appears incorrect. This should likely be [&>[role=checkbox]] to match direct children with role="checkbox", consistent with the original syntax. The double bracket syntax is not valid CSS.
| data-slot="table-cell" | ||
| className={cn( | ||
| "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", | ||
| "p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 *:[[role=checkbox]]:translate-y-[2px]", |
Copilot
AI
Nov 17, 2025
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.
The selector syntax *:[[role=checkbox]] appears incorrect. This should likely be [&>[role=checkbox]] to match direct children with role="checkbox", consistent with the original syntax. The double bracket syntax is not valid CSS.
| data-slot="select-item" | ||
| className={cn( | ||
| "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", | ||
| "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", |
Copilot
AI
Nov 17, 2025
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.
The data attribute selector syntax has been changed from data-[disabled] to data-disabled, but this is incorrect. The proper Tailwind v4 syntax for data attributes should use brackets like data-[disabled]:pointer-events-none. The current syntax will not match elements with the data-disabled attribute.
| "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", | |
| "focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", |
| data-inset={inset} | ||
| className={cn( | ||
| "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", | ||
| "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", |
Copilot
AI
Nov 17, 2025
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.
The data attribute selector syntax has been changed from data-[inset] to data-inset, but this is incorrect. The proper Tailwind v4 syntax for data attributes should use brackets like data-[inset]:pl-8. The current syntax will not match elements with the data-inset attribute.
| "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-inset:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", | |
| "focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", |
| variants: { | ||
| orientation: { | ||
| vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"], | ||
| vertical: ["flex-col *:w-full [&>.sr-only]:w-auto"], |
Copilot
AI
Nov 17, 2025
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.
The universal selector syntax *:w-full is overly broad and will affect all child elements. This should be [&>*]:w-full to only target direct children, consistent with the original implementation pattern.
| horizontal: [ | ||
| "flex-row items-center", | ||
| "[&>[data-slot=field-label]]:flex-auto", | ||
| "*:data-[slot=field-label]:flex-auto", |
Copilot
AI
Nov 17, 2025
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.
The universal selector syntax *:data-[slot=field-label]:flex-auto is incorrect. It should be [&>[data-slot=field-label]]:flex-auto to properly target child elements with the data attribute, consistent with the original implementation.
| responsive: [ | ||
| "flex-col [&>*]:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto", | ||
| "@md/field-group:[&>[data-slot=field-label]]:flex-auto", | ||
| "flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto", |
Copilot
AI
Nov 17, 2025
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.
The universal selector syntax *:w-full is overly broad and will affect all child elements. This should be [&>*]:w-full to only target direct children. Additionally, @md/field-group:*:w-auto should be @md/field-group:[&>*]:w-auto for consistency.
| --chart-3: 197 37% 24%; | ||
| --chart-4: 43 74% 66%; | ||
| --chart-5: 27 87% 67%; | ||
| ---removed-scrollbar-size: 15px; |
Copilot
AI
Nov 17, 2025
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.
The custom CSS variable name ---removed-scrollbar-size has three hyphens instead of the standard two. CSS custom properties should start with exactly two hyphens (e.g., --removed-scrollbar-size). The extra hyphen may cause this variable to be ignored or cause unexpected behavior.
| ---removed-scrollbar-size: 15px; | |
| --removed-scrollbar-size: 15px; |
| data-inset={inset} | ||
| className={cn( | ||
| "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", | ||
| "px-2 py-1.5 text-sm font-medium data-inset:pl-8", |
Copilot
AI
Nov 17, 2025
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.
The data attribute selector syntax has been changed from data-[inset] to data-inset, but this is incorrect. The proper Tailwind v4 syntax for data attributes should use brackets like data-[inset]:pl-8. The current syntax will not match elements with the data-inset attribute.
| "px-2 py-1.5 text-sm font-medium data-inset:pl-8", | |
| "px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", |
| data-slot="field-group" | ||
| className={cn( | ||
| "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4", | ||
| "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4", |
Copilot
AI
Nov 17, 2025
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.
The universal selector syntax *:data-[slot=field-group]:gap-4 is incorrect. It should be [&>[data-slot=field-group]]:gap-4 to properly target child elements with the data attribute, consistent with the original implementation.
| "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 *:data-[slot=field-group]:gap-4", | |
| "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4", |
409f35b to
0610236
Compare
0610236 to
efb69c2
Compare
This pull request introduces several improvements and updates across the frontend codebase, including dependency upgrades, stricter linting and commit standards, Tailwind CSS v4 migration, and minor bug fixes. The changes enhance code quality, maintainability, and ensure compatibility with the latest tooling.
Tooling and Dependency Upgrades:
@tailwindcss/postcss,@tailwindcss/typography), and removedhtml-to-docxfrom dependencies. Also updated@radix-ui/react-slotand added@tiptap/extension-character-count. [1] [2] [3] [4] [5]frontend/components.jsonalias forutilsto point to the correct path.CI and Commit Standards:
main, not on direct pushes.Tailwind CSS v4 Migration and Styling:
@tailwindwith@import, added custom variants and theme variables, and updated prose styles. [1] [2]postcss.config.mjsto use the new Tailwind v4 plugin format.Frontend Code and UI Improvements:
RootLayoutto ensure correct padding and min-height.getPromptsAPI function.Maintenance:
TEST_RESULTS.mdfile, as it is no longer relevant to the current codebase.