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
  [ ] 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
  @gui+ctrl
  [ ] When undoing/redoing things, switch to a diagram where you see the changes
  [ ] When pasting a new diagram, switch to the new diagram in nav view to see the changes
  @pencil
  [ ] improve layouting of relationships. Maybe "longest first + shortest best" is not the best strategy?
      instead look more for distances to other lines
  [ ] Support Diagram-Types: Profile
  [ ] exception+error flows to leave an interruptable area (activity diagrams)
  [ ] activity bars on lifelines missing
  [ ] feature compartments in use-cases look ugly
  [?] more relationship types needed: undirected ---- and one-way x--> and no x--x dependency (non-navigateable ends)
  [?] more relationship types needed: undirected ---- and one-way x--> and no x--x association
  [?] sequence diagrams need if/loop-boxes
  [?] activity diagrams need swimlanes/partitions
  @io
  [ ] export formats: enhance xmi standard compliance
  [ ] import XMI format
  [ ] 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 is lost at cut+paste, a new uuid is assigned.
  @data
  [?] some diagrams exist for completeness only - but do not contain important information. These shall be greyed out.
      --> add a "display_flags" field to "diagrams"
  [ ] performance optimization: possibly the feature and relationship filter on a visible_set is slow?
  [?] diagrams need some kind of category/classification/stereotype like idea-for-future, rejected-alternative, ...
      --> add a "stereotype" field to "diagrams"
  [ ] some way to compare two database files / and/or to merge
      - maybe there are already solutions for sqlite3 and git:
      a) store an sqlite3 dump to git, not the binary
      Note that a cfu1 database file contains many ids and foreign-keys and ordering-hints,
      this is not mergeable by humans
      see e.g "sqlite3 mouse_droid.cfu1 .dump"
      b) setup git hooks and use a custom merge/diff tool for binary db
      documentation needed
      maybe rowid should be replaced by GUID to make this easier
      maybe a database schema file is needed
      c) define an own simple, sorted, line-based text format for version-control-system storage
  [ ] links unclear:
      interactionuse(diag-reference)-to-fragment(diag);
      part-to-component, object-to-class
  [ ] links unclear: provided/required-interface(feature)-to-interface(classifier)
  [?] features can have stereotypes, see UML spec 2.5.1 chapter 11.4.5 (maybe use existing value-type?)
  @ctrl
  [ ] delete features immediately when they become invisible in all diagrams (note: the search+xmi+json export find them)
  [ ] delete relationships immediately when they become invisible in all diagrams (note: the search+xmi+json export find them)
  @universal+utf8stringbuf
  [ ] combine the static string allocation with dynamic additional buffers for unexpectedly-long strings
  [ ] combine the static array allocation with dynamic additional buffers for arrays of unpredictable lengths
  @main
  @ts_log/trace/test_fw
