Moved to its own thread
I have thought about this in the past. It makes a lot of sense to respect the levels of a hierarchical item. Unfortunately it isn't easy to do. For performance reasons we keep the possible 2-level hierarchy (first letters, items with those first letters) in the database. The code would drastically change because we would now have N levels. Another problem is that the metadata for a book does not specify which columns are hierarchical. This is specified on a library basis, so we would need to remember what library a book came from. I will keep studying the issue. Perhaps some day a good solution will appear out of the ether.
As for hiding read books, why not delete them off the device? I suppose that you might want to keep your entire library on your device, which makes deleting books undesirable. Another solution would be to create that yes/no column in calibre and maintain it there. You would then use search in CC to select read or unread books. All of CC's sorting and grouping functions work on a search subset.
The "Read" item brings us back to a discussion we had in a thread some time back
: the ability to pass metadata back from CC to calibre. This isn't something that calibre currently supports. As noted in that other post, I can in theory add that support to calibre, but then I need to determine how to do it in a way that is not too CC-specific and that won't cause calibre to blow up. I also need to work out how to deal with simultaneous changes to the data. Yet again: I am still thinking about it.