diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 000000000..120c6893b
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,6 @@
+version: 2
+updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
\ No newline at end of file
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8bbea8352..92fa88b08 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -6,18 +6,8 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
name: CI
-jobs:
- lint:
- name: "Vala Lint"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v4
- - uses: elementary/actions/vala-lint@main
- with:
- dir: .
- conf: .vala-lint.conf
- flatpak:
- name: "Flatpak"
+ flatpak-devel:
+ name: "Flatpak (Devel)"
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:gnome-46
@@ -29,8 +19,6 @@ jobs:
bundle: io.github.alainm23.planify.Devel.flatpak
manifest-path: build-aux/io.github.alainm23.planify.Devel.json
cache-key: flatpak-builder-${{ github.sha }}
- repository-name: flathub-beta
- repository-url: https://flathub.org/beta-repo/flathub-beta.flatpakrepo
# snap:
# name: "Snap"
# runs-on: ubuntu-latest
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
new file mode 100644
index 000000000..96165a5d4
--- /dev/null
+++ b/.github/workflows/lint.yml
@@ -0,0 +1,12 @@
+jobs:
+ lint:
+ name: "Vala Lint"
+
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v4
+ - uses: elementary/actions/vala-lint@main
+ with:
+ dir: .
+ conf: .vala-lint.conf
\ No newline at end of file
diff --git a/data/io.github.alainm23.planify.appdata.xml.in.in b/data/io.github.alainm23.planify.appdata.xml.in.in
index 6c53977a1..d061b59fb 100644
--- a/data/io.github.alainm23.planify.appdata.xml.in.in
+++ b/data/io.github.alainm23.planify.appdata.xml.in.in
@@ -61,6 +61,30 @@
https://www.patreon.com/alainm23
@appid@.desktop
+
+
+
+ - Added feature to collapse sections.
+ - A task counter per section has been added.
+ - Pinned tasks are now displayed at the start of each project.
+ - Added an overdue tasks indicator to the today button.
+ - New keyboard shortcuts were added to Quick Add, @ to add tags, # to select a project and ! to create a reminder.
+ - A new view has been added to see completed tasks, sorted by date and the possibility to filter by Sections.
+ - New task history log added, now it is possible to see when the task was completed, moved between projects or sections.
+ - Fixed several bugs when doing Drag and Drop.
+ - Quick Find now opens the task detail when selected.
+ - Added a preference to enable or disable the use of Markdown in task detail.
+ - Improved navigation using the keyboard.
+ - In Quick Add, it is now possible to create a section if it does not exist.
+ - Added a numerical indicator for the number of attachments.
+ - Added preference to keep the task detail pane open, making navigation faster.
+ - The option to repeat a task has been moved to the date and time selection widget, allowing you to create recurring tasks more quickly.
+ - Fixed several bugs with Nextcloud synchronisation.
+ - Several design and optimisation improvements, Planify now feels faster and consumes less resources.
+
+
+
+
diff --git a/src/App.vala b/src/App.vala
index ebfe2b9c2..dfae83724 100644
--- a/src/App.vala
+++ b/src/App.vala
@@ -51,7 +51,7 @@ public class Planify : Adw.Application {
Object (
application_id: Build.APPLICATION_ID,
flags: ApplicationFlags.HANDLES_OPEN
- );
+ );
}
~Planify () {
diff --git a/src/Dialogs/CompletedTasks.vala b/src/Dialogs/CompletedTasks.vala
index b313839ea..76921d614 100644
--- a/src/Dialogs/CompletedTasks.vala
+++ b/src/Dialogs/CompletedTasks.vala
@@ -140,9 +140,71 @@ public class Dialogs.CompletedTasks : Adw.Dialog {
add_items ();
Services.EventBus.get_default ().disconnect_typing_accel ();
- listbox.row_activated.connect ((row) => {
+ signals_map[filters_flowbox.filter_removed.connect (() => {
+ filter_section_id = null;
+ clear_items ();
+ add_items ();
+ })] = filters_flowbox;
+
+ signals_map[search_entry.search_changed.connect (() => {
+ if (search_entry.text == "") {
+ clear_items ();
+ add_items ();
+ }
+
+ filter_section_id = null;
+ listbox.invalidate_filter ();
+ })] = search_entry;
+
+ signals_map[remove_all.clicked.connect (() => {
+ var items = Services.Store.instance ().get_items_checked_by_project (project);
+
+ var dialog = new Adw.AlertDialog (
+ _("Delete All Completed Tasks"),
+ _("This will delete %d completed tasks and their subtasks from project %s".printf (items.size, project.name))
+ );
+
+ dialog.body_use_markup = true;
+ dialog.add_response ("cancel", _("Cancel"));
+ dialog.add_response ("delete", _("Delete"));
+ dialog.set_response_appearance ("delete", Adw.ResponseAppearance.DESTRUCTIVE);
+ dialog.present (Planify._instance.main_window);
+
+ dialog.response.connect ((response) => {
+ if (response == "delete") {
+ delete_all_action (items);
+ }
+ });
+ })] = remove_all;
+
+ signals_map[listbox.row_activated.connect ((row) => {
view_item (((Widgets.CompletedTaskRow) row).item);
- });
+ })] = listbox;
+
+ signals_map[Services.EventBus.get_default ().checked_toggled.connect ((item, old_checked) => {
+ if (item.project_id != project.id) {
+ return;
+ }
+
+ if (!old_checked) {
+ if (!items_checked.has_key (item.id)) {
+ items_checked [item.id] = new Widgets.CompletedTaskRow (item);
+ listbox.insert (items_checked [item.id], 0);
+ }
+ } else {
+ if (items_checked.has_key (item.id)) {
+ items_checked [item.id].hide_destroy ();
+ items_checked.unset (item.id);
+ }
+ }
+ })] = Services.EventBus.get_default ();
+
+ signals_map[Services.Store.instance ().item_deleted.connect ((item) => {
+ if (items_checked.has_key (item.id)) {
+ items_checked [item.id].hide_destroy ();
+ items_checked.unset (item.id);
+ }
+ })] = Services.Store.instance ();
closed.connect (() => {
listbox.set_sort_func (null);
diff --git a/src/Widgets/CompletedTaskRow.vala b/src/Widgets/CompletedTaskRow.vala
index f4cb5ce1a..8ec5c792e 100644
--- a/src/Widgets/CompletedTaskRow.vala
+++ b/src/Widgets/CompletedTaskRow.vala
@@ -39,7 +39,8 @@ public class Widgets.CompletedTaskRow : Gtk.ListBoxRow {
}
construct {
- add_css_class ("no-selectable");
+ add_css_class ("row");
+ add_css_class ("no-padding");
checked_button = new Gtk.CheckButton () {
valign = Gtk.Align.START,
diff --git a/src/Widgets/ItemDetailCompleted.vala b/src/Widgets/ItemDetailCompleted.vala
index 21ee2bdc3..7d4934737 100644
--- a/src/Widgets/ItemDetailCompleted.vala
+++ b/src/Widgets/ItemDetailCompleted.vala
@@ -134,7 +134,10 @@ public class Widgets.ItemDetailCompleted : Adw.Bin {
content.append (content_group);
content.append (properties_group);
content.append (description_group);
- content.append (subitems_group);
+
+ if (item.items.size > 0) {
+ content.append (subitems_group);
+ }
var scrolled_window = new Widgets.ScrolledWindow (content);