

* Properties -> UI files
  * PropertiesPageWidget
    * Move UI init to a separate virtual method ???
  * PropertiesPageWidget hierachy (Re-introduce: individual update of each property)
    * PropertiesGeneral
      * PropertiesGeneralLibvirt
      * PropertiesGeneralOvirt
      * PropertiesGeneralRemote
      * PropertiesGeneralSpice
      * PropertiesGeneralVnc
    * PropertiesSystem
    * PropertiesDevices
      * PropertiesDevicesLibvirt
      * PropertiesDevicesSpice
  * Drop
    * Now redundant UI code/API from PropertyWidget
    * Any changes in the branch that were only needed for smooth
      transition away from Property hierarchy
    * PropertiesPage enum?
  * PropertiesPageWidget -> UI file ?
  * What's with LibvirtMachineProps.add_ram_property clearing reboot_req

* Port build to meson
  * Yelp
  * libgd
    * Update comment about possible workaround
  * VAPI checks
  * check for vala version
  * behave installed tests
  * configure summary: https://github.com/mesonbuild/meson/issues/757
  * can be lived without?
     *  DISABLE_DEPRECATED in AM_CPPFLAGS
  * Deal-breaker
    * sources from libgd_dep get ignored and src rules are executed before vapi
      generation

* GPU passthrough
  * Add hostdev support to libvirt-glib
  * Allow secondary usb input devices to be redirected
  * Binary to handle privileged work (polkit or setuid)
    * required option: --add or --remove
    * parameter: device list
    * --add
      * Setup kernel:
        * Setup params 'amd_iommu=on intel_iommu=on rd.driver.pre=vfio-pci'
          * grubby --update-kernel=ALL --args=ARGS
          * Append ARGS to GRUB_CMDLINE_LINUX= line in /etc/default/grub
        * Setup initrd
          * Add a file /etc/modprobe.d/gnome-boxes.conf:
            "options vfio-pci ids=ID1,ID2"
          * Add a file /etc/dracut.conf.d/gnome-boxes.conf:
            "add_drivers+="vfio vfio_iommu_type1 vfio_pci vfio_virqfd"
  * UI
    * Show only if:
      * There is secondary GPU of right model
      * Required tools are available (show warning on console)

* PXE boot

* host->guest comms for Builder/devs
  * scp not convenient enough
  * dbus api to transfer things & running commands in guests?

* Filechooser in Properties and Wizard Topbar has a lot of duplication

* Why does source files go to .cache dir?

* Machine construct (at least) assumes App.main_window to remain constant

* Ability to add media to menu

* ovirt
  * setup step:
    * ovirt ca cert
    * spice cert (should also be presented for spice machines?)
    * test machine (rh internal):
      * ovirt://fidencio%40spice.lab.eng.brq.redhat.com@rhevm34.spice.brq.redhat.com/w7x64
      * ovirt: http://idm.spice.brq.redhat.com/ipa/config/ca.crt
      * spice: http://rhevm34.spice.brq.redhat.com/ca.crt
      * user: fidencio%40spice.lab.eng.brq.redhat.com
      * pass: fo0m4nchU

* Drop libgd usage
  * MainIconView -> GtkFlowBox
    * Drop wip/show-progress branch from libgd (also origin)

* Boxes kdb shortcuts not working in fullscreen (there's a bug about it)

* buttons for switching between running machines in topbar
  * kbd shortcuts too (perhaps ctrl+` and ctrl+shift+`)

* Move all ui startup code .ui files
  * Properties (rather PageWidget) ITS HARD!

* Port to libarchive
  * ISOExtractor
  * UnattendedFile

* import system libvirt vms
  * Better wizard summary page.
  * Keep track of imported boxes so we don't give import option if already imported

* MediaManager.create_installer_media_from_config shouldn't be using async constructor

* 'Drag to restore' broken in display mode

* Make customization of spice/vnc box before creation possible

* Ready-made images:
  * Handle case of deletion during import
  * Show progressbar

* Downloadable OS
  * Implement downloading when given remote ISO URIs
  * Means to add ISO/images to wizard's menu
    * A config file in ~/config w/ media entries

* Look into running spinner (on under construct boxes) using gtk_widget_add_tick_callback

* wizard uses the first URI once a URI has been entered.

* LibvirtMachine.get_domain_disk(): Dont loop if storage_volume == null

* clear all old files in cache dir
  * Perhaps should be done at global level by systemd?

* wizard's setup page:
  * s/preconfigure/configure/ I think
  * Add text explaining:
    * what product key is and where it can be found
    * it is required

* Downloader doesn't track progress in 1 case

* https://bugzilla.gnome.org/show_bug.cgi?id=694141#c10

* osinfo-based installer
  * unattended data doesn't clean-up on wizard cancellation

* wizard: preparation should be cancellable.

* MS logo rejection aftermath
  * blog entry explaining how to add custom logos

* We really should refactor InstallerMedia code to seperate out
  installer state from media

* system cache for drivers and logos

<rudrab> [20:18:38] can anybody tell me how to access a remote machine using boxes?
<rudrab> [20:19:19] I tried: boxes->Enter URL-><username>@<machine>
<rudrab> [20:19:35] and it comes no such file or directory

* discuss with designers
  * save vs pause
  * Only basename shown from cdrom in props

* improve saving-time UI:
  * overlay spinner over machines being saved
    * New cell renderer widget in libgd

* Leaking .cache

* Make custom xml writing code more generic (Don't overwrite the whole xml).

* Remove some run_in_thread() usage by adding async variants to libvirt-glib

* Steal ACL helper from spice for usb sticks

* retain selection after deletion is *un*done

* progressbar over machine under installation?

* Collections
  * App
    * user_collections (getter for UserCollection in app.collection) ?
  * UI to add boxes to collections
    * gnome-documents way
    * Attempt to mimic iOS4 folders
  * Favorite
  * IPropertiesProvider?

* Tests using dogtail?

* remove disclaimer in wizard src if no media is presented.

* gvir_config_object_children (HINT: check users of gvir_config_object_foreach)

* /home/zeenix/.config/gnome-boxes/unattended/fedora17-initrd gets cached

* Add 'a.prop.notify' syntax to Vala

* Don't allow going below minimum resources?

* Reading of raw disks

* launch wizard on insertion of installer media when boxes is already running.

SAVED:

* Collections
  * Old plan
    * Tag class
      * name prop
      * implements Item
      * draws itself based on pixbufs relavent machines from app.collection
        * Could be just a rectangle as starting point
    * Machine.tags, app.all_tags (List<Tag>) and app.current_tag
  * Older plan
    * View adds/remove items on its own (in ui_state_changed)
    * app hides items by removing from collection
    * Collection.name
    * app.collection -> app.main_collection
    * app.collections
    * app.current_collection
    * View draws collections when app.current_collection == app.main_collection
      * Just a rectangle for now
  * Oldest plan
    * UI to add boxes to collections
    * Show collections as boxes
      * Collection impl Boxes.UI
      * hide when no box in it
