Commit Graph
29 Commits
Author SHA1 Message Date
Daniel Hiller b581a97c2c feat: Show how many cards a list holds
A board level switch, off by default. With it on, each list puts its card
count on the add-card button. Useful to a board that is being kept to a size
and noise to one that is not, which is why it is a choice rather than always
on.

The count is every card in the list, not the ones a filter leaves visible.
Those answer different questions: how full is this list, versus how many match
what I am looking at right now. The first is the one a counter is for, and it
is also what the same switch counts in Pro, so a board keeps its meaning
across an upgrade.

The column matches Pro's name, type and default, so the setting survives that
upgrade rather than being dropped on the way.
2026-09-17 03:51:40 +02:00
Daniel Hiller ca035d670e fix: Restore two files committed empty by the list filter merge
75fcddcd wrote `client/src/models/Board.js` and the board filter bar out as
zero bytes. `BoardActions` imports `Filters` from that module, so the client
could not render a board at all.

The conflict resolution there was scripted, and the script opened each file
for writing before reading it, which truncates it first and then reads back
nothing. ESLint accepts an empty module, so lint stayed green and the commit
looked fine.

Both files are rebuilt from the two merge parents. All six conflicts resolve
to keeping both sides, which is what the merge intended: excluded labels,
cards without a member and lists are three independent filters.

One behaviour fix rides along, because the union merge would otherwise have
carried it in. The no-member branch ended its block with `return cardModels`,
which was correct while it was the last filter and wrong once the list filter
followed it: combining the two would have dropped the list filter without a
word. The three now compose.
2026-09-17 03:50:09 +02:00
Daniel Hiller 75fcddcd0b Merge pull request #1648 from symonbaikov/feat/list-filter
feat: add filter by list (status) in list view

Three filters landed in the same places while this was open: excluded labels,
cards without a member, and now lists. They are independent of each other, so
every conflict resolves to keeping both sides.

The selector was the one exception worth naming. Both branches had written the
same body under a different name, so the merge put one header on one body; it
is now two complete selectors.
2026-09-17 02:03:04 +02:00
Daniel Hiller bb2da7f36a Merge pull request #1236 from symonbaikov/feat/no-member-filter
Add filter for cards without members ("No member" filter)

Conflicted with the negative label filter, which had added its own field to
the board model next to this one. Both stay; they filter on different things.
2026-09-17 02:01:58 +02:00
Daniel Hiller 84827ab354 Merge pull request #1683 from symonbaikov/feat/negative-label-filter
Add negative label filtering for cards

Two conflicts, both from work that landed while this branch was open.

In the endless list query, master had added an ORDER BY so the cursor and the
limit agree. The exclusion clause belongs in the WHERE part, so it is placed
before it rather than after; the other way round the statement does not parse.

The label item had been restructured here for the tri-state filter and had
gained a tooltip on master. The restructured version is kept and the tooltip
put back on top of it, which also brings back the translation hook this branch
had dropped.
2026-09-17 00:46:31 +02:00
Daniel Hiller 2030722242 feat: Remember which view a board was last put into
Choosing a view and finding the board's default again after every reload is
the board forgetting something the reader clearly meant.

The choice lives in `sessionStorage`, not on the account. A view is how one
person is looking at a board right now, not a property of the board: two
windows may hold the same board open as a grid and as a list, and neither is
wrong. A stored preference would make one of them change under the other's
hands.

The context is stored alongside and has to match on the way back out, so a
view picked in the archive does not follow the board into its own context. A
view this build no longer knows falls through to the board's default, as does
anything stored while the browser refuses to keep it.
2026-09-17 00:42:11 +02:00
Symon 55d0e2f877 Add negative label filtering for cards 2026-06-05 16:43:45 +03:00
Symon 401c0412cb feat: add filter by list (status) in list view
Adds a per-list filter to the board action bar, visible only in
List View. Mirrors the existing transient label/member filter
pattern: filterLists is a many-relation on the Board ORM model,
toggled via entry actions and reset on board navigation. Empty
selection keeps the current behavior; non-empty selection shows
only cards whose listId is in the chosen set. Filter UI is hidden
in Kanban/Grid views where columns already convey the same info.

Closes #1524
2026-05-02 09:24:48 +03:00
Maksim Eltyshev c342d2edd7 feat: Add ability to display card ages 2026-03-18 09:42:20 +01:00
Maksim Eltyshev ae9517b37a fix: Prevent clearing linked tasks when soft deleting 2025-12-09 21:23:27 +01:00
Maksim Eltyshev 54e230d4c1 ref: Refactoring 2025-11-27 18:24:55 +01:00
Maksim Eltyshev 984b789e2e feat: Add board setting to expand task lists by default
Closes #683, closes #1333
2025-09-05 23:21:08 +02:00
symonbaikov 334f7b2028 feat: add 'No member' filter for board cards 2025-07-05 23:07:22 +03:00
Maksim Eltyshev 6988864808 fix: Fix filtering by task assignees 2025-06-17 16:04:22 +02:00
Maksim Eltyshev 86cfd155f2 feat: Add board activity log 2025-05-22 23:14:46 +02:00
Maksim Eltyshev 2ee1166747 feat: Version 2
Closes #627, closes #1047
2025-05-10 02:09:06 +02:00
Emmanuel Guyot 535ddff595 fix: Order users by name (#806) 2024-07-15 15:26:26 +02:00
Emmanuel Guyot 25a7a3bd3b feat: Filter cards by keyword with advanced capabilities (#713)
Closes #706
2024-04-22 23:15:31 +02:00
Maksim Eltyshev 21504c06a6 fix: Use creation timestamp instead of id for ordering
Closes #465
2023-06-13 00:19:17 +02:00
Maksim Eltyshev a741e26ccb feat: Labels reordering
Closes #289
2023-01-09 12:17:06 +01:00
Maksim Eltyshev 5cd025ffb7 ref: Remove board types, refactoring 2022-12-26 21:10:50 +01:00
Christoph Enne 948485c861 feat: Trello board JSON import (#352)
Closes #27, closes #105
2022-12-17 03:48:06 +05:00
Maksim Eltyshev 6ca0f89791 fix: Fix error on initial loading
Closes #347
2022-12-16 17:05:03 +01:00
Maksim Eltyshev f9e0147f33 feat: Permissions for board members
Closes #262
2022-08-19 14:00:40 +02:00
Maksim Eltyshev fe91b5241e Project managers, board members, auto-update after reconnection, refactoring 2021-06-24 01:05:22 +05:00
Maksim Eltyshev 30ed77af59 Prepare for collection board type, refactoring, update dependencies 2020-08-04 01:32:46 +05:00
Maksim Eltyshev de61d94a98 Update dependencies 2020-03-25 00:15:47 +05:00
Maksim Eltyshev 45bde7e7c0 Move from prettier-eslint to eslint-plugin-prettier, update dependencies 2020-02-03 18:42:31 +05:00
Maksim Eltyshev 36fe34e8e1 Initial commit 2019-08-31 04:07:25 +05:00