Snappier doms, searchable nicknames on user - #16
Merged
Merged
Conversation
… columns with 100+ tasks
… fonts so fonts dont adjust after dom load
…or things that cant be edited without clicking in. Hopefully this may also tackle assigne being wiped bug??
There was a problem hiding this comment.
Pull request overview
Adds user nickname support and improves board rendering, drag-and-drop performance, stylesheet loading, and dark-mode initialization.
Changes:
- Adds nickname storage, editing, display, and search.
- Reduces unnecessary board rerenders and updates task counts.
- Loads styles and theme settings earlier to prevent visual flashes.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Summary |
|---|---|
hacklog/resources/views/users/show.blade.php |
Displays user nicknames; no final comments. |
hacklog/resources/views/users/index.blade.php |
Adds nickname search and display; no final comments. |
hacklog/resources/views/users/edit.blade.php |
Adds nickname editing; no final comments. |
hacklog/resources/views/users/create.blade.php |
Adds nickname creation; no final comments. |
hacklog/resources/views/projects/partials/board-task-card.blade.php |
Simplifies inline board updates; no final comments. |
hacklog/resources/views/projects/partials/board-column.blade.php |
Adds task-count hooks; no final comments. |
hacklog/resources/views/projects/partials/board-column-tasks.blade.php |
Adds empty-state hooks; no final comments. |
hacklog/resources/views/projects/board.blade.php |
Optimizes board interactions. Moderate: destination counts can remain stale after cross-column moves (2 votes). |
hacklog/resources/views/partials/user-picker.blade.php |
Adds nickname-aware assignee search; no final comments. |
hacklog/resources/views/layouts/app.blade.php |
Initializes theme and styles earlier; no final comments. |
hacklog/public/css/hacklog-theme.css |
Removes late-loading font imports; no final comments. |
hacklog/database/migrations/2026_08_19_152422_add_nicknames_to_users_table.php |
Adds the nicknames column; no final comments. |
hacklog/app/Models/User.php |
Adds nickname parsing and search helpers; no final comments. |
hacklog/app/Http/Controllers/UsersController.php |
Validates and searches nicknames; no final comments. |
hacklog/app/Http/Controllers/ProjectController.php |
Handles optimized task updates. Critical: column validation is not project-scoped (1 vote). Moderate: same-column moves can leave database ordering inconsistent (3 votes). |
Suppressed comments (3)
hacklog/app/Models/User.php:117
- On PostgreSQL (and any other non-SQLite connection), this fallback calls MySQL's
JSON_SEARCH, so nickname searches from the users index fail with an undefined-function SQL error.config/database.phpexplicitly defines a PostgreSQL connection; add a driver-specific JSON-array implementation (and a deliberate fallback for each supported driver) instead of routing every non-SQLite driver here.
return $query->whereRaw('JSON_SEARCH(nicknames, "one", ?) IS NOT NULL', [$like]);
hacklog/resources/views/projects/board.blade.php:704
- When the board is filtered by phase, assignee, priority, or weight,
positionis only the index among the visible cards.moveTaskpersists that value while shifting every task in the unfiltered column, so a filtered drag can get the wrong absolute position and change order when the filter is cleared. Convert the visible index to an unfiltered position on the server, or disable reordering while filtered.
draggedTask.dataset.position = position;
hacklog/resources/views/projects/board.blade.php:494
- For the column selector and delete actions, HTMX swaps the
board-column-*-taskstarget withouterHTML. After that swap,evt.detail.targetis the detached old element, sotarget.closest('.board-column')is null and the count outside the swapped element is never updated. Resolve the replacement element (or update all affected columns) here so counts do not remain stale after a task is moved or deleted.
updateBoardColumnCount(target.closest('.board-column'));
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+1238
to
+1244
| // The board already moved the card in the DOM. Do not re-render column HTML | ||
| return response()->json([ | ||
| 'success' => true, | ||
| 'columnChanged' => $oldColumnId !== $validated['column_id'], | ||
| 'oldColumnId' => $oldColumnId, | ||
| 'newColumnId' => $validated['column_id'], | ||
| ]); |
Comment on lines
+913
to
+914
| 'column_id' => 'required|exists:columns,id', | ||
| ]); |
Comment on lines
+490
to
+496
| document.body.addEventListener('htmx:afterSwap', function(evt) { | ||
| const target = evt.detail && evt.detail.target; | ||
| if (!target || !target.id) return; | ||
| if (target.id.indexOf('board-column-') === 0 && target.id.indexOf('-tasks') === target.id.length - 6) { | ||
| updateBoardColumnCount(target.closest('.board-column')); | ||
| } | ||
| }); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Loading css earlier in dom loading so pages dont style post load.
stopped reredneding columns when moving tasks, js already moves it and its very sluggish on big columns.
no more light mode flashbangs when using dark mode.
Users can be searched by nicknames when creating, editing tasks or searching users