Kanban Work In Progress (WIP) limits are for the Team.
Whether or not someone is assigned to a task should have no bearing whatsoever as far as any WIP limits are concerned. If your WIP limit for development is 3 issues, and you have two issues in 'Dev Done' for developer A and one issue in 'Dev Started' for developer B, then no one, not even developer C, can start development work on a new issue. This does not change if the two issues in 'Dev Done' are unassigned.
That being said, to answer your question: what my team currently does is remove the assignee from issues that are 'done' (whether that's Dev Done or QA Done). This indicates that no one is currently working on that issue. If we, for whatever reason, need to find out who worked on an issue, then the system we use (JIRA) allows us to look at the issue's history and view who had previously been assigned to that issue. That being said, it doesn't really matter; as long as everyone understands what an assignee (or lack thereof) on a 'done' task means, and everyone consistently follows that, then there shouldn't be a problem. My suggestion: ask your Team, do what they prefer.
if we remove people from done tasks, and make them work in another column, for example the design column which has still 2 free slots (so the system is not stuck yet)
Not all teams will have all individuals able to perform all tasks. In general, once a column (or multiple related columns) have reached their WIP limit and someone wants to put more in, rather than just automatically shifting to something else, the person wanting to put more in should look at the board to identify the roadblock and attempt to help fix it. Just because there is 'room' somewhere on the board doesn't mean you can/should ignore that you have a roadblock.
Likewise, teams should always try to work towards the right-most side of the board whenever possible. The idea is not to make sure everyone always has work to do (optimizing for utilization). The goal is to make sure issues reach 'Done' as soon as possible, or in other words, to reduce lead time (optimizing for flow).
If I deassign them from a done task and assign them to another tasks
Kanban only works as a Pull system. Not as a Push system. You do NOT assign tasks to developers, nor unassign them from developers. Developers assign tasks to themselves. Removing Kanban's self-organizing team structure rips out a large part of the benefit of Kanban, and of Agile in general.