TODO:
-----

Current TODO-list in prioritized order here:

- Bugs are often reported to Freeciv-web on Github here: https://github.com/freeciv/freeciv-web/issues - any fixes to these bugs is very welcome. Some of the bugs are also well suited for new developers interested in contributing to Freeciv-web.

Basically you can help improve Freeciv-web in any way you like, as long at it actually makes the game better! Other things to improve there:

Unimplemented Freeciv client features:
- action selection dialog pops up and down based on unit focus rather than
  opening all at once.
  - the Freeciv C clients give units that wants an action decision higher
    priority in the unit focus queue. This keeps player decisions fast.
  - makes turn change less confusing when many units on a goto reaches their
    targets.
  - gives the user freedom to delay a response without losing the reminder.
  - open action selection dialogs are stored in save games.
  - action selection dialogs are based on more up to date information.
    (Since it asks right before showing the dialog)
  - Implementation hints:
    - a unit's request for the player to chose an action is stored in its
      fields action_decision_want and action_decision_tile.
    - action_decision_want tells if an action decision is wanted and if it
      was caused by the unit being moved inside a transport
      (ACT_DEC_PASSIVE) or by the unit itself moving (ACT_DEC_ACTIVE). It is
      defined and explained in fc_types.js
    - action_decision_tile is the tile the unit wonders what to do to.
    - a unit's request for the player to chose an action can be set by the
      server based on unit movement or by the client via
      PACKET_UNIT_SSCS_SET(unit_id, type, value) where type is USSDT_QUEUE
      like key_unit_action_select() does.
    - once the player has made a decision (deciding not to act by pressing
      cancel is a decision too) the client must ask the server to clear the
      unit's action_decision_want by sending a USSDT_UNQUEUE typed
      PACKET_UNIT_SSCS_SET(unit_id, type, value).
    - the action selection dialog lives in action_dialog.js. It has recently
      become less repetitive. This should make it easier to send
      PACKET_UNIT_SSCS_SET with USSDT_UNQUEUE on all user choices.
    - when a client sends a PACKET_UNIT_GET_ACTIONS(actor_unit_id,
      target_unit_id, target_tile_id, disturb_player) the
      server will respond with the information needed for the action
      selection dialog in a PACKET_UNIT_ACTIONS.
    - the current situation is that the Freeciv-web client sends a
      PACKET_UNIT_GET_ACTIONS as soon as a unit's action decision state
      changes and the new state wants a decision. (See
      unit_actor_wants_input() and process_diplomat_arrival()) Multiple
      action selection dialogs will hide behind each other.
    - the current situation is that the Freeciv-web client clears the action
      decision as soon as an action selection dialog is received. (See
      handle_unit_actions())
    - in Freeciv C clients a PACKET_UNIT_GET_ACTIONS is sent when a unit
      gets focus OR when a unit already in focus changes action decision
      state to one that wants a decision.
    - Freeciv's common/networking/packets.def has up to date packet field
      info.
- the popup_attack_actions client setting (so attack pop up can be avoided)
- global work lists
- advanced unit selection
- rearranging items in the city production worklist
  - Maybe allow rearranging items by drag and drop?
- the cities tab
- the auto generated part of the help texts
  - the code is big (it also refers to other Freeciv C code)
  - "just rewrite the code in JavaScript"
    - would be much work
    - keeping it updated as the corresponding code changes in Freeciv would be a nightmare
    - high probability of it ending up telling lies
  - parts of the freeciv-manual output is now marked. This makes it more
    machine readable.
    - have freeciv-manual output more auto generated help texts in a form
      Freeciv-web can use.
- between turns timer count down

Unimplemented rule variation support:
- The topology server setting
  The Freeciv-web client can only display the TF_WRAPX and the non wrapping
  topology. Isometric, hex and WRAP_Y maps are unsupported.
  Testing: to test new topology support the Freeciv server must be changed.
  Open server/settings.c. Find topology_callback(). Remove the blocking of
  the toplogy you are working to support.
- The ID of certain extras are hard coded.
  - EXTRA_NONE isn't from the ruleset. There is no need to do anything about
    it.
  - replace the hard coded drawing code with code that draws the extra as
    specified by the tileset Freeciv-web extracts from and by the extra
    related packages the server sends.
  - replace the hard coded control code. Maybe delay this part until unit
    activities to becomes action enabler controlled?
- The graphic tags of certain extras are hard coded.
- Wikipedia help is only extracted for items that appear in the classic
  ruleset.

Simplify Freeciv server upgrade:
- get rid of the worst merge conflict causes
  - freeciv_web_all_packets_def_changes:
