Software for workshop - electronic components stock management
Since my last update to this answer, I was lucky enough to find an online system that meets most of my (and the OP's) requirements for managing small electronic components inventory. The service is called Parts-in-place.

The system is based on a typical workflow of small electronics products companies (so the site says - how would I know, I'm just a hobbyist) that incidentally supports the work of more serious hobbyists. The workflow looks like this:


After signing up, you start by importing your parts database into the system Parts Library. That's the central repository where all information about your parts will be stored. For a minimal setup (like mine), you'll only need to fill out a few columns, such as the Company's Part Numbers and Description. This is easily done thanks to the systems excellent integration with Excel. It is worth to note that before using the system, the user must define a standard coding for its parts (the above mentioned Company's Part Number) which will be used throughout the system.
Then you create a Bill of Materials which will represent an electronic board that your company (or the hobbyist) plans on building. You specify the part numbers and quantities that will be used. This information will later be used for defining necessary part orders.
Then you define how many boards are to be built based on a single Bill of Materials. This will later be used to define Parts Orders, in which the system confronts the required materials against the available inventory. You can later add more parts or change quantities in the order, before placing it with the suppliers.
Once the order arrives, you record it on the Part Arrivals tab.
Then, there are tabs for recording actual assemblies and parts transfer from inventory. Since I don't have such a factory, I don't really use those tabs. But you can if you want to play factory.
At any moment you can update inventory information using the Parts Write-offs and Inventories. The former can be used to account for parts that were lost for any reason or that were used and not tracked by the system workflow. The latter can be used to update part counts based on ad-hoc inventories performed.


The system is really easy to use, has a nice, modern and very responsive user interface. The free account (the one I signed up for) limits you to a single user, 3 BOMs and about 100 parts per BOM. I haven't reached any of them yet.

I wanted to highlight that the system features an extraordinary integration with Excel, both for importing and exporting. For importing, it does a great job identifying column names automatically and it's really forgiving regarding formatting and other trash that you may have left in your spreadsheet. The export function results in a nicely formatted spreadsheet that may be used elsewhere without problems. It's XLS format is recognized by Excel and OpenOffice Calc as well.

Here's how I think the system meets the OP's requirements:


(Yes) free or low cost software - it has a free account available.
(Yes) Not too complicated - it's really easy to use. Also, since it's a service, you don't have to go to the trouble of setting the software up or installing anything.
(Yes) Locations feature (Shelf 1 -> Box 1) - you can determine where the parts are stored.
(Yes) Stock/shopping history - the system lets you control shopping history pretty well. Orders also reflect on the stock upon arrival.
(No) Categories with tree structure - the system only presents a flat structure for parts. You can workaround this by selecting a clever prefixes for part numbers. But to me, not having categories makes things simpler. To me, less is more in this case.
(Yes) Functionality to assign part to projects - that's exactly what BOMs are for.
(Yes) Client-server architecture would be nice - it's an online service set up online, it's client-server.
(Yes) Functionality that allows me prepare shopping lists - it let's you prepare shopping lists based on BOM's and how many boards you say you want to build.


There are a few implied requirements that the system doesn't meet:


(No) It isn't open source. 
(No) Since it's a service, you normally won't have it running on your servers. If the company goes bankrupt, your data is gone. But since it provides a nice Excel export feature, you can have all your data backed up and ready for use in other ways. Also, the company says they can setup Parts-in-Place to run at your servers, but I suspect this may be expensive. 


Here's a screenshot of the BOM screen:



PS. I'm not affiliated with Parts-in-Place in any way.

Below is the original evaluation I had made of other systems.




zParts - Free and open source. But it is a bit too simple for the requirements. I guess one could probably use Excel to do the same zParts does.
PartKeepr - Web-based built around PHP, JavaScript and MySQL. Didn't actually install it, but read through some of its docs.
Ciiva - another online service for BOM management with integrated components database search. Seems pretty powerful yet simple, but I still couldn't find a way to manage my own inventory of components, but there's gotta be one as it let's you resell excess inventory.
My latest Google search on the topic - nothing really interesting, but maybe the search terms may help you filter the results better.


PS. I'm not affiliated with any of those companies in any way.