Store client settings in core
Currently I have several clients on several systems, including official and non-official. On Mac, Linux and Windows I have Quassel client and on iOS I have iQuassel. There are some major inconsistencies due to the fact that each has different settings in terms of colour, timestamps enabled, etc.
It is not straightforward to copy configurations between the official client when it is a different OS. An export/import option would be useful here.
I think a better way is to store it in the core, and make it part of the protocol. Clients would optionally implement the option, especially exposing the option to the user (sync from server, use server settings, use local (ignore server)). I would definitely expect the official client to implement this feature.
In terms of storage, it seems a simple new association table with a many-to-one relationship would work (example: table named 'settings': user_id, setting name, value; unique on user_id and name).