Skip to content

Snappier doms, searchable nicknames on user - #16

Merged
joelsalisbury merged 6 commits into
mainfrom
Jay8-19
Aug 24, 2026
Merged

Snappier doms, searchable nicknames on user#16
joelsalisbury merged 6 commits into
mainfrom
Jay8-19

Conversation

@JayKitt28

Copy link
Copy Markdown
Contributor

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

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

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.php explicitly 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, position is only the index among the visible cards. moveTask persists 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-*-tasks target with outerHTML. After that swap, evt.detail.target is the detached old element, so target.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'));
}
});
@joelsalisbury
joelsalisbury merged commit ad25c48 into main Aug 24, 2026
1 check passed
@JayKitt28
JayKitt28 deleted the Jay8-19 branch September 7, 2026 14:37
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.

3 participants