Skip to content

Tracking issue for 0.7 (new core + GTK4) #737

Open
7 of 16 issues completed
Open
Feature
7 of 16 issues completed

Description

Image for: Description

We're getting to the end of the 0.6 cycle, so it's a good time to start planning for 0.7 since we have lots of large, sweeping changes to land. This issue is meant to centralize, keep track of all the work and plan ahead so we don't end up with another dev hell scenario.

This is more a birds eye view of the big stuff we have to complete, the complete list of issues is in the milestone

Overall Status / Landing current PRs

Image for: Overall Status / Landing current PRs
  • Land the new core PR New Core #668
  • Pin an issue mentioning the drag & drop regression, to avoid duplicate bug reports — Fixed in GTK 4.6
  • Start the Gtk4 port (Port to GTK4 #723) — superseeded by no.894 below
  • Land Gtk4 + New Core + Listview Megaport #894
  • Review and fix the fallout from having merged all of the above 🡸 🌟 HELP WANTED 🌟
    See the remaining issues from the comments thread in MR #894 and:
    • Help fix and expand the test suite: Fix the test suite #1036
    • Please rebase your existing pull requests (if any) on top of the latest master,
      which contains the new revamped codebase
    • Report (or directly fix!) issues in the regular issues tracker here,
      with the label "Regression" (if they didn't happen in 0.6);
      if they are mission-critical we ought to target them to the 0.7 milestone.
    • Please send fresh pull requests for any known or new regression issue you'd like to help fix in general
    • Help fix the most essential plugins (see further below)

Polishing and completing the port

Image for: Polishing and completing the port

The new core was designed with Gtk3 in mind, with the idea to port over to listboxes and then onto Gtk4. @ranchester2 port changed the schedule a bit, so we have to move directly to Gtk4's listviews and models. We also need to finish some missing features.

  • Add code for recurring tasks (@zeddo123 's territory). PR at New Repeating tasks #868
  • Check backends code with @jaesivsm
  • Port some properties in data classes to GObject properties (things that will need to be bound in widgets)
  • Add a function to generate child models in store classes (using the children list)
  • Add a model property to store classes
  • Move the filtering code to several Gtk.Filter subclasses in a their own modules (probably in a models folder)
  • Add a Gtk.Filter subclass for search
  • Move the sorting code to several Gtk.Sorter subclasses in a their own modules too

Plugging in the new core

Image for: Plugging in the new core

Slowly slide in the new core so we can validate how it works

  • Initialize Datastore2 to Application and read the gtg_data.xml file
  • Check the tasks are read correctly (using the dev console)
  • Add a call to save with the new core in requester.save_datastore, set the path to gtg_data2.xml
  • Check the xml files are the same
  • Add calls to all the other parts of the requester , so both cores do the same (remove task, new task, etc.)
  • Add calls to new core in editor to add, remove tags
  • Add calls to new core in editor to add, remove subtasks
  • Add calls to new core in editor to change status, "sync", etc
  • Plug new core in calls in the main window

Porting to listviews

Image for: Porting to listviews

EDIT: I've done most of the porting to listview into these two sample scripts

Sidebar: https://gist.github.com/diegogangl/eba75d467854068ea75cc9a03ce61495
Tasklist: https://gist.github.com/diegogangl/3e53105bd4ac6e9953f926e3134dfb73

Basically everything works, except multiselection. We'll have to wait for Gtk 4.6 to solve that. The code is a lovecraftian horror but we'll clean it up when the time comes. It also includes content search (filtering) and sorting by added date, modifed date and tags.

  • Design a UI for the new sorting, since we won't have treeview columns (kind of like the nautilus menu)
  • Subclass Gtk.Box for each data type, so it can hold a pointer to the original object (not sure this is the best way though)
  • Write the List item factory, DnD functions, etc
  • Replace the treeviews in main window with a single listview, or 3 listviews (can we get away with just 1 with the pane system?)
  • Figure out how to do the sidebar. Probably a Gtk.ListBox with rows for all tags/tasks with no tags, and 2 listviews for tags and saved searches mixed in the rows.
  • Use the new filter based search
  • Remove all calls and references to the old core
  • Clean up whatever other mess we left behind

Revamping the plugin and backends API, and fixing plugins

Image for: Revamping the plugin and backends API, and fixing plugins

As of 2021 this isn't so defined yet, but it's becoming clear that we need to change the old systems. Besides, all the previous porting and rewriting is going to break almost everything anyways.

  • Defined whether backends should be something separate from plugins, or just a kind of plugin that runs a task regularly or at certain events (AKA syncing). In other words, removing backends and expanding the plugin api so "sync plugins" are possible
  • Audit and update the plugin API for the new UI and core
  • Port plugins and backends to the new stuff

2024 status: please help fix long-standing issues with some of our plugins, as they have been plagueing users for too long, sometimes preventing them from starting the app (as you can see with issues currently pinned to the top of this bug tracker).

Sub-issues

Metadata

Image for: Metadata

Metadata

Image for: Metadata

Assignees

Labels

enhancementmaintainabilityAutomated tests suite, tooling, refactoring, or anything that makes it easier for developerspriority:critical

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions

Image for: Issue actions