
     =====                                 =====
     =====     KEEP IT SIMPLE & STUPID     =====
     =====                                 =====

ideas for future versions:
  @gui
  [ ] performance optimization: redraw only when shown(=visible) items have changed;
      do not redraw 3 times when changing 3 attributes simultaneously. (especially at undo/redo)
  [ ] do not redraw twice, once for deactivating a tool and again for activating another
      (this is still the case in 1.61.2)
  [ ] a "saveAs" command should allow to copy the current db
  [ ] show a progress bar while exporting diagrams (especially for png mode)
  [ ] scrolling through search list missing if result list is too long
      (workaround hint already added to user manual)
  [?] store edited text fields before performing undo/redo operations
  [ ] auto-save when losing focus; Check gui_main_window_activated callback
  [ ] auto-reload when gaining focus; at least warn on changes; Check gui_main_window_activated callback
  [ ] do not auto-save when there are no changes
  [ ] kill -SIGTERM should save the latest changes - at least flush the database to disk
  [ ] allow creating diagrams before choosing a filename
  [ ] inserting messages _and_ actors to sequence charts does not work because the actor gets a new lifeline
  [ ] while pressing the mouse button, the status bar shall not change size -> otherwise pressed element moves around
  @pencil
  [ ] activity bars on lifelines missing
  [?] more relationship types needed: one-way x--> and no x--x dependency (non-navigateable ends)
  [?] more relationship types needed: one-way x--> and no x--x association (maybe x is a feature?)
  [?] check dot notation at opposite relationship ends
  [?] sequence diagrams need if/loop-boxes
  [?] activity diagrams need swimlanes/partition
  [?] A "contains" relationship towards features shall not influence the grid-layouting.
      check data_visible_set.c data_visible_set_private_update_containment_cache()
  [ ] allow arbitrary compartment sequences for features, e.g. tag - operation - property
  @io
  [ ] export formats: enhance xmi standard compliance
  [ ] xmi export is not spec-compliant for uml:Port, provided and required Interfaces
  [ ] xmi export: improve error message if exported file exists and is read-only
  [?] uuid are preserved at json import. It is not checked if these uuids are unique in _all_ tables.
  [ ] uuids shall be converted to lower case at import
  [ ] json import: check if the input bytes are valid utf8 characters
  [ ] json export declares "type": "ActivityFinalNode" even if type is state-final
  [ ] json export declares "type": "DecisionNode" even if type is ChoiceNode (statemachine)
  [ ] json export: determining if statemachine_context - is a good guess but not 100% correct
  [ ] add test case for opening non-cfuJ files
  [ ] in json format, types shall be unique and self-explaining instead of uml/sysml compliant
  @data
  [ ] some diagrams exist for completeness only - but do not contain important information. These shall be greyed out.
      --> use the "display_flags" field of "diagrams"
  [ ] allow to toggle element-filter in diagrams: Show/hide scenario-based relationships, show/hide features,
      show/hide relationships-of-other-diag-types
  [ ] links unclear:
      interactionuse(diag-reference)-to-fragment(diag); --> use a DATA_FEATURE_TYPE_LINK
  [ ] links unclear: provided/required-interface(feature)-to-interface(classifier)
      --> use a DATA_RELATIONSHIP_TYPE_UML_INSTANCE_OF
  [?] DATA_CLASSIFIER_TYPE_INTERACTION should exist as element, not be faked from a diagram
      --> see self_architecture.cfuJ / D0018
  [?] relationship ends don't have roles nor multiplicities nor dot-notation
  [ ] introduce a TABLE diagram type showing tagged values to do resource and risk calculations
  @ctrl
      Note: There must not be model elements that are not visible. a) One cannot review, b) unclear significance.
  [ ] delete features immediately when they become invisible in all diagrams (lifelines work since 1.52.0)
      (rationale: the search+xmi+json export find them)
  [ ] delete relationships immediately when they become invisible in all diagrams (partly works since 1.27.3)
      (rationale: the search+xmi+json export find them)
  [ ] undo and redo shall update the revision number of the database
      - so that the save button can indicate no changes
  @u8stream
  @main
  [ ] prevent slow start (>20sec); This is a general problem for gtk applications.
      Possibly crystal-facet-uml searches and waits for a non-existing accessibility service?
  [ ] in debug mode, on WSL, the program does not quit when the main function returns.
  @test_fw
  @documentation

ideas for a version 2
  - drop backwards-compatibility for old cfu1 storage formats (use cfuJ only)
  - support rust in application code

