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

ideas for future versions:
  @gui
  [ ] After deselecting all elements, paste does not work. One has to select an element first.
      (possibly improved in 1.38.0 by nicer error message)
  [ ] 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
  [ ] a "saveAs" or export-as-cfu1 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 (hint already added to user manual)
! [ ] When undoing/redoing things, switch to a diagram where you see the changes
      --> idea: use gui_toolbox_set_selected_tool_and_focus
! [ ] When pasting a new diagram, switch to the new diagram in nav view to see the changes
      --> idea: use gui_toolbox_set_selected_tool_and_focus
  [ ] store edited text fields before performing undo/redo operations
! [ ] auto-save when losing focus; Check GtkEventControllerFocus (example in gui_main_window.c)
  [ ] auto-reload when gaining focus
  [ ] allow creating diagrams before choosing a filename
  [ ] a communication diagram can (unintendedly) show hierarchies. In this case, children are not selectable.
  [ ] inserting messages _and_ actors to sequence charts does not work because the actor gets a new lifeline
! [ ] show static texts under the icons of buttons (Note: sadly, gtk_button_set_label replaces the image)
! [ ] make it obvious that in create mode, you shall click on the empty diagram space - nice button needed maybe?
  [ ] 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
  [ ] reduce overlaps, analyze the overlaps in test cases by extending pencil_layout_data_get_statistics()
  [?] 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
  [ ] stereotype images of packages are positioned unluckily
  @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
  @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
  [ ] performance optimization: possibly the feature and relationship filter on a visible_set is slow?
  [ ] 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
  [?] relationship ends don't have roles nor multiplicities nor dot-notation
  [ ] introduce a TABLE diagram type 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)
  @u8stream
  [ ] avoid the compiler warning on u8stream/include/utf8stream/utf8stream_writer.inl:93:17: warning:
      array subscript 65 is above array bounds of ‘char[64]’ [-Warray-bounds=]
       93 |         memcpy( &((*this_).buffer[(*this_).buf_fill]), start, length );

  @main
  @test_fw

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