1. This is similar to adding per-station note, which someone mentioned on the forum previously. Ideally this should be stored in EEPROM space on the controller (along with other station attributes), but because the EEPROM space is pretty limited, it might be better to store this information in the app and not on the controller.
2. Display controller name in the main screen: this should be easy to do.
3. Hide unused zones: this is already supported. You can disable a station and when disabled, the station will not be shown.
4. Access levels: this is harder to achieve, especially on the microcontroller-based OpenSprinkler, which does not run a Linux system.
5. Per-zone query: this is fairly easy to do and is mainly a UI change.
6 and 7: geolocation — these are pretty difficult to implement. Well, first, if you don’t allow remote access all together, then already users can only access the controller when they are within your WiFi range, so it sort of does what you need already. Otherwise, limiting access based on geolocation is pretty difficult, because one can always send fake GPS location to fool the controller, and I don’t see an easy way to prevent that.