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
-
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 #894Please report issues in Diego's repoSend merge requests to Diego's repo
- 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
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
Slowly slide in the new core so we can validate how it works
- Initialize
Datastore2
toApplication
and read thegtg_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 togtg_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
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
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).
- The most important of CalDAV-related issues
- The most important of Hamster-related issues