Skip to content

feat: redesign board UI, add real-time comments #39

Open
danielprokopowicz wants to merge 6 commits into
Pandetthe:mainfrom
danielprokopowicz:feature/board-updates
Open

feat: redesign board UI, add real-time comments #39
danielprokopowicz wants to merge 6 commits into
Pandetthe:mainfrom
danielprokopowicz:feature/board-updates

Conversation

@danielprokopowicz

Copy link
Copy Markdown

No description provided.

@Pandetthe Pandetthe requested review from Pandetthe and Copilot May 6, 2026 11:04

Copilot AI left a comment

Copy link
Copy Markdown

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 redesigns key board UI components and introduces real-time card comments via the boards SignalR hub, while also changing board/card descriptions to be optional and adding persistence for card comments on the server.

Changes:

  • UI refresh for swimlanes/lists/cards/board tiles and wiring to open the card modal via card click.
  • Add card comment DTOs, server-side CardComment entity + migrations, and hub/client plumbing to broadcast CommentAdded.
  • Make card (and partially board) descriptions nullable/optional across several API/domain contracts.

Reviewed changes

Copilot reviewed 42 out of 45 changed files in this pull request and generated 19 comments.

Show a summary per file
File Description
web/src/routes/(auth)/profile/+page.svelte Removes section divider comments (no functional change).
web/src/routes/(auth)/boards/[id]/+page.svelte Subscribes to comment-added events and passes onAddComment to the card modal.
web/src/lib/features/boards/types/boards.hub.ts Makes UpdateCardRequest.description optional.
web/src/lib/features/boards/types/boards.api.ts Adds CardCommentDto and adds comments to CardDto.
web/src/lib/features/boards/hub/boards.hub.ts Adds addComment + onCommentAdded wrappers for the hub.
web/src/lib/features/boards/components/Swimlane.svelte UI redesign + drag/drop handler adjustments (currently contains a broken move implementation).
web/src/lib/features/boards/components/List.svelte UI redesign and safer drag/drop finalize logic.
web/src/lib/features/boards/components/CardModal.svelte Adds comments panel + posting UI to the card modal.
web/src/lib/features/boards/components/Card.svelte UI redesign and makes the entire card clickable to open the modal.
web/src/lib/features/boards/components/BoardCard.svelte UI redesign for board tiles.
web/src/lib/features/boards/api/boards.api.ts Adds REST addComment call (cards/{cardId}/comments).
server/src/Presentation/Presentation.csproj Adds MediatR package reference.
server/src/Presentation/Hubs/Board/IBoardHubClient.cs Adds CommentAdded callback and makes description fields nullable in payloads.
server/src/Presentation/Hubs/Board/Hub.cs Adds URL parsing fallback for boardId and adds hub method AddComment.
server/src/Presentation/Endpoints/Cards/Update.cs Makes update request description nullable.
server/src/Infrastructure/Persistence/Migrations/AppDbContextModelSnapshot.cs Updates EF snapshot for nullable card description and new CardComments entity/nav.
server/src/Infrastructure/Persistence/Migrations/20260505193022_AddCardCommentsRelation.Designer.cs Adds migration snapshot for comments relation (designer).
server/src/Infrastructure/Persistence/Migrations/20260505193022_AddCardCommentsRelation.cs Adds migration stub (currently empty).
server/src/Infrastructure/Persistence/Migrations/20260505141557_AddCardComments.Designer.cs Adds migration designer for CardComments table.
server/src/Infrastructure/Persistence/Migrations/20260505141557_AddCardComments.cs Creates CardComments table and indexes.
server/src/Infrastructure/Persistence/Migrations/20260505113154_AddCardDescription.Designer.cs Adds migration designer for nullable card description.
server/src/Infrastructure/Persistence/Migrations/20260505113154_AddCardDescription.cs Alters cards.description to nullable with max length 2000.
server/src/Infrastructure/Persistence/Configurations/CardConfiguration.cs Configures cards.description as optional with max length 2000.
server/src/Infrastructure/Persistence/AppDbContext.cs Adds DbSet<CardComment> and configures CardComment↔User relationship/table mapping.
server/src/Infrastructure/Infrastructure.csproj Adds EF Core Tools package reference.
server/src/Domain/Cards/CardEvents.cs Makes card event descriptions nullable.
server/src/Domain/Cards/CardComment.cs Introduces CardComment domain entity.
server/src/Domain/Cards/Card.cs Makes description nullable and adds comment collection + AddComment.
server/src/Domain/Boards/BoardEvents.cs Makes board event description nullable.
server/src/Domain/Boards/Board.cs Makes description nullable and updates create/update signatures accordingly.
server/src/Application/Cards/Update/UpdateCardCommand.cs Makes command description nullable.
server/src/Application/Cards/GetBySwimlaneId/GetCardsBySwimlaneIdResponse.cs Makes DTO description nullable.
server/src/Application/Cards/GetByListId/GetCardsByListIdResponse.cs Makes DTO description nullable.
server/src/Application/Cards/GetById/GetCardByIdResponse.cs Makes DTO description nullable.
server/src/Application/Cards/GetByBoardId/GetCardsByBoardIdResponse.cs Makes DTO description nullable.
server/src/Application/Cards/AppComment/CardCommentDto.cs Adds comment DTO (currently unused/duplicative).
server/src/Application/Cards/AppComment/AddCardCommentHandler.cs Adds handler to create/persist a new comment and return a comment DTO.
server/src/Application/Cards/AppComment/AddCardCommentCommand.cs Adds command for adding a card comment.
server/src/Application/Boards/GetDetails/GetBoardDetailsResponse.cs Makes board details description nullable.
server/src/Application/Boards/GetById/GetBoardByIdResponse.cs Adds comments list to card DTO and makes descriptions nullable; adds nested CardCommentDto.
server/src/Application/Boards/GetById/GetBoardByIdHandler.cs Projects card comments into the board-by-id response.
server/src/Application/Boards/Get/GetBoardsResponse.cs Makes board list description nullable.
server/src/Application/Boards/Create/CreateBoardCommand.cs Makes create-board description nullable.
server/src/Application/Abstractions/Persistence/IAppDbContext.cs Adds DbSet<CardComment>.
server/Directory.Packages.props Adds MediatR + EF Tools versions.
Files not reviewed (3)
  • server/src/Infrastructure/Persistence/Migrations/20260505113154_AddCardDescription.Designer.cs: Language not supported
  • server/src/Infrastructure/Persistence/Migrations/20260505141557_AddCardComments.Designer.cs: Language not supported
  • server/src/Infrastructure/Persistence/Migrations/20260505193022_AddCardCommentsRelation.Designer.cs: Language not supported

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread server/src/Presentation/Hubs/Board/Hub.cs Outdated
Comment thread server/src/Application/Cards/AppComment/CardCommentDto.cs Outdated
Comment thread web/src/routes/(auth)/boards/[id]/+page.svelte
Comment thread web/src/lib/features/boards/components/Swimlane.svelte Outdated
Comment thread web/src/lib/features/boards/components/CardModal.svelte Outdated
Comment thread web/src/lib/features/boards/components/Card.svelte Outdated
Comment thread web/src/lib/features/boards/types/boards.api.ts
Comment thread server/src/Presentation/Presentation.csproj
Comment thread server/src/Presentation/Hubs/Board/IBoardHubClient.cs
@danielprokopowicz danielprokopowicz force-pushed the feature/board-updates branch from 5328f34 to cb147b9 Compare May 6, 2026 11:22
@danielprokopowicz danielprokopowicz changed the title redesign UI, add real-time comments redesign board UI, add real-time comments May 6, 2026
@Pandetthe Pandetthe requested a review from Copilot May 6, 2026 11:46
@danielprokopowicz danielprokopowicz changed the title redesign board UI, add real-time comments feat: redesign board UI, add real-time comments May 6, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 40 out of 43 changed files in this pull request and generated 4 comments.

Files not reviewed (3)
  • server/src/Infrastructure/Persistence/Migrations/20260505113154_AddCardDescription.Designer.cs: Language not supported
  • server/src/Infrastructure/Persistence/Migrations/20260505141557_AddCardComments.Designer.cs: Language not supported
  • server/src/Infrastructure/Persistence/Migrations/20260505193022_AddCardCommentsRelation.Designer.cs: Language not supported
Comments suppressed due to low confidence (4)

server/src/Presentation/Hubs/Board/Hub.cs:1

  • The hub method never signals failures back to the caller (it just logs and returns), so connection.invoke('AddComment', ...) will resolve successfully even when the comment wasn’t created. This will cause the web client to think the operation succeeded (and it won’t show an error) while no CommentAdded event is broadcast. Return a result/DTO (or throw a HubException on failure) so invoke rejects/returns an error and the client can reliably display failure.
    web/src/lib/features/boards/hub/boards.hub.ts:1
  • New comment APIs are typed as any (Response<any> and comment: any), which defeats type-safety and makes it easy to accidentally push malformed data into card.comments. Use the existing CardCommentDto type from the web API types for both the addComment return value and the onCommentAdded callback parameter (and prefer returning a typed DTO instead of any).
    web/src/lib/features/boards/components/Card.svelte:1
  • This makes the whole card a pseudo-button (div with role=\"button\") but only handles Enter, not Space (Space is expected for button-like controls). Also, the card contains another interactive element (<button ...> for the drag handle), which creates nested interactive controls and can confuse keyboard and screen-reader users. Prefer using a real <button type=\"button\"> as the root (or make the drag handle non-button and rely on stopPropagation with a non-interactive wrapper), and handle both Enter and Space consistently.
    web/src/lib/features/boards/components/BoardCard.svelte:1
  • The previous focus-visible ring styling appears to have been removed from the interactive element users tab to (the <a>). This can make keyboard focus hard to see. Add a visible :focus-visible style (e.g., ring/outline classes) on the anchor to preserve accessible keyboard navigation.

Comment thread server/src/Application/Cards/AppComment/AddCardCommentHandler.cs
Comment thread server/src/Infrastructure/Persistence/AppDbContext.cs

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

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.

2 participants