Releases: CITOpenRep/timemanagement
v1.2.8
Release Notes - Version 1.2.8
Features and Enhancements
-
Chart & Dashboard Enhancements:
- Enhanced the dashboard with Chart Info popups and action integration.
- Added ProjectCard and TaskRow components, and new dashboard components for project and task visualization.
- Enhanced chart components for project-wise time spent to support dynamic height, improved UI scaling, and better responsiveness.
- Added dynamic display limits with "show more/collapse" functionality for the project hours display.
- Integrated hover functionality, improved text wrapping, and added tooltips for chart elements and pie chart slices.
- Integrated stage names and dynamic color coding based on project statuses in the project charts.
- Migrated the TaskChartCanvas to a grid-based layout with axis indicators and integrated labels.
-
Performance & Data Handling:
- Optimized SQL queries to enhance project and task hours retrieval.
- Streamlined chart data loading and enhanced data refresh functionality.
- Improved loading indicators and messages in the dashboard for better user experience.
-
Task Management Refactoring:
- Implemented lightweight task selector data retrieval to improve performance.
- Improved layout and loading logic in task components to enhance usability.
- Improved draft handling and updated image paths within task forms.
- Implemented task form utility functions and centralized task handling.
-
Navigation & Settings:
- Refactored settings pages for improved Background Sync and Theme Preferences.
- Implemented NavigationController to centrally manage and refactor navigation handling across various UI components.
- Reorganized the navigation structure and removed deprecated components.
Fixes and Improvements
-
Theme & UI Improvements:
- Fixed visibility issues in light mode by improving color handling for project and task visualizations.
- Enhanced UI and Resolved dark mode issues in
AttachmentManager.qml. - Updated text and border color properties, using the central theme palette for consistency across
ProjectCard,TaskRow, andTaskTimeChart. - Fixed visibility of tabbed titles and project labels at the bottom during dark mode.
- Updated the base bar color to blue for consistency across chart components.
-
General Fixes:
- Fixed an issue with displaying the correct Project Status.
- Removed search icon from unnecessary views to clean up the UI.
- Addressed an issue to remove hierarchy limitations and successfully display sub-projects and sub-tasks.
- Added a visibility toggle to only display tabbed charts in mobile mode rather than the convergence display.
- Removed unnecessary flick-ended events in
Dashboard2.qmland correctly updated the notification icon paths for resource loading. - Cleaned up duplicate and deprecated files (e.g.,
qml/tasks.qml).
Documentation
- Added a high-level architecture diagram.
- Added official contributing guidelines and linked necessary references.
- Created and updated the Pull Request template for consistent and accurate submissions.
- Added documentation for the Phase 1 refactoring and created migration checklists to assist future development.
v1.2.7
What's Changed
This release brings big updates to how the app looks and moves, better background syncing, and important bug fixes for notifications and saved timesheets. We've also added text formatting options and made the login screen much easier to use when a keyboard pops up.
New Features & Enhancements
- Main Menu & Layout: We built a new main menu and a better layout system so the app looks and works better across different screen sizes.
- Account Switching: It's now much easier to switch between accounts. Task filters reset automatically, and the screen updates right away when you change accounts.
- Link Navigation: Links to Project Updates now work much better and take you exactly where you need to go inside the app.
- Better Syncing: The app is smarter about saving data in the background, making sure your local changes aren't lost when syncing with the server.
- Theme Support: We added an official way to switch themes in the main menu, and improved how dark mode looks when screens are loading.
- Project Stages: You can now set and track the "stage" or progress of a project when creating or updating it.
- Text Formatting: You can now save styled text (like bold or italics) in the "Read More" page, making your notes look nicer.
UI & Styling Updates
- Search Bar: We redesigned the search bar at the top of lists so it looks better and is easier to read, especially in dark mode.
- Activity Screen: We changed how text is displayed on the Activity page to make it more helpful for accessibility tools like screen readers.
- Menu Consistency: We simplified how the app's internal menus work, so buttons and links behave the same way on all of your devices.
- Projects & Tasks Spacing: We tweaked the height and spacing of items in the Projects and Tasks lists so they fit better on your screen.
- Keyboard-Friendly Account Page: On the Account page, the screen now automatically adjusts when your keyboard pops up. You can easily scroll down to see the password field without the keyboard hiding it.
Bug Fixes
- Timesheet Tracking: Fixed an issue where timesheets might look up the wrong project. They now correctly use your currently selected account.
- Draft Auto-save: Fixed how drafts are saved and restored so you don't lose your work. We also made the background saving process faster.
- Notifications: Fixed a bug that caused duplicate project notifications to pop up. We also made the database more stable to prevent crashes.
- Action Bar: Removed some broken buttons on the Dashboard that were overlapping with other parts of the screen.
Under the Hood / Code Cleanup
- App Structure: We cleaned up the code by moving the main app pieces into their own dedicated folder.
- Cleaner Logs: Reduced background noise in the app's hidden logs to help us spot real issues faster.
- Simpler Navigation Code: Made it easier for the app's code to know exactly which page you are on, making screen switching smoother.
- Database Safety: Added stricter rules during syncing to make sure the app always understands the latest data layout, preventing messy data doesn't get confused.
v1.2.6
v1.2.6
Highlights
- Improved assignee filtering UX with email-aware display, clearer selected/others grouping, and better account chip behavior.
- Fixed multiple assignee selection edge cases, including checkbox interaction and mutable-state issues.
- Added assignee list caching to reduce repeated fetches and improve responsiveness.
- Enhanced notification handling with managed daemon mode, accurate total count support, and panel invocation tracking.
- Improved Odoo connectivity with URL normalization and HTTP redirect handling during login.
- Updated activity save flow to return and use record IDs correctly.
- Added fail-fast behavior for push/helper automation paths.
Fixes
- Assignee filter stability and interaction fixes .
- Notification badge/display reliability improvements.
- Reduced redundant selected-assignee count calls.
- General reliability hardening across daemon and QML interaction points.
v1.2.5
-
Release v1.2.5
Time Management for Ubuntu Touch
Release branch: release/v1.2.5 → main
Previous release: v1.2.4
Maintainer: CIT Services info@cit-services.eu
What's New
Timesheet
- Bottom Edge Timesheet Creation — A new bottom edge gesture now allows quick creation of timesheets directly from the timesheet list, with improved interaction design.
- Timer Auto-Save — The timer now auto-saves its state, preventing data loss when navigating away or closing the app.
- Elapsed Time Tracking Fix — Timer ticks during manual time edits are now excluded from elapsed time calculations, ensuring accuracy.
- Simplified Play/Pause Logic — The play/pause icon in
TimeRecorderWidgetnow derives from the actual recording state for clearer feedback.
Assignee Filtering
- Default Assignee Filter — Activity and Task pages now default to filtering by the currently logged-in user on load.
- Enhanced Filtering Across Pages — Assignee filtering has been extended and unified across both the Activity and Task pages.
- "My Items" Filter — Added global state-driven "My Items" toggle to show tasks/activities assigned to or created by the current user. Mutual exclusivity with assignee filter enforced.
- Composite ID Filtering — Assignee filter selection now correctly uses
isAssigneeSelectedfor composite user + account IDs. - No Duplicate Loading — Fixed an issue where the activity list was loaded twice on page initialization.
Accounts Page Redesign
- Revamped Account List UI — The accounts list has been fully redesigned with improved styling, and new quick-action buttons for viewing logs and deleting accounts.
- Default Account Checkbox — Replaced the star icon with a styled custom checkbox for setting the default account, improving clarity and touch usability.
- Instance Selector Redesign — The account selection dialog layout has been improved for better usability and visual consistency.
- Inline Option Selector —
Account_Page.qmlnow usesInlineOptionSelectorinstead of the defaultComboBoxfor a more consistent UI. - InlineOptionSelector Enhancement — The component now resolves
selectedNamedynamically based onselectedIdandmodelDataupdates. - Read-Only State Indicator —
OutlinedTextFieldnow reflects read-only state with an appropriate background color. - Placeholder Text Support —
OutlinedTextFieldnow supports placeholder text with improved border color handling. - New Components — Introduced
OutlinedContainerandOutlinedTextFieldreusable components for consistent form styling across pages. - Account List Height Fix — Corrected the height of the account list container for proper UI alignment.
Background Sync per Account
- Per-Account Sync Settings — Each account can now have its own background sync interval configured independently.
- Enhanced Sync Interval Options — The sync interval selector now offers more granular options with improved display formatting.
- Sync Notification Management — Sync notifications can now be cleared manually and will auto-expire, reducing notification clutter.
- Separate Notification Handling —
NotificationBellnow distinguishes between unread normal notifications and sync notifications. - Zero Interval Guard — Zero sync interval values are now ignored during sync status extraction to prevent incorrect behavior.
RichTextEditor (Scroll & Keyboard)
- On-Screen Keyboard Awareness — The editor now adjusts scroll position when the on-screen keyboard appears, keeping the cursor visible at all times.
- Cursor Visibility During Input — Improved cursor visibility during text input by preventing unintended scroll position resets.
- Keyboard Scroll Adjustment — Keyboard handling refined to ensure content visibility during and after typing.
UI / General
- Password Visibility Icons — Password show/hide toggle icons renamed to more descriptive identifiers.
- Font Size Refactor — Removed scale-factor adjustments from font size handling for cleaner, more predictable text sizing.
- Icon Size Consistency — Adjusted icon and checkbox sizes on the Accounts page for improved visual alignment across device sizes.
- View Mode Icon Fix — Corrected view mode icon assignment and updated the default to flat view mode.
Bug Fixes
| # | Description |
|---|---|
| 1 | Fixed duplicate activity list loading on page initialization |
| 2 | Fixed incorrect view mode icon assignment; default view now set to flat mode |
| 3 | Fixed user retrieval in getCurrentUserOdooId to correctly filter by account ID |
| 4 | Fixed account list container height for correct UI alignment |
| 5 | Fixed zero sync interval being processed in sync status extraction |
Refactoring & Cleanup
- Removed unused image assets for a cleaner project structure
- Removed unused database handling scripts
- Simplified
Account_Pageinput layout by removing an unnecessary column wrapper - Improved account selection dialog layout and structure
- Activity and Task pages cleaned up to remove legacy "My Items" filter code (superseded by new implementation)
- Added
filter.pngimage asset to QML images directory
v1.2.4
v1.2.4
Highlights
- Comprehensive SQL-level pagination across core modules for improved large-dataset performance
- Major Rich Text Editor upgrade with improved stability and high-DPI support
- Expanded notification controls and improved background daemon management
- UI responsiveness improvements and cleanup across multiple views
Performance Improvements
-
Implemented SQL pagination across:
- Tasks & Timesheets
- Activities & Projects
- Project Updates
-
Improved filtering and search performance
-
Reduced loading latency for large datasets
-
Added consistent loading states across pages including:
- MyTasks
- Activity_Page
- Other major views
Rich Text Editor
Enhancements
- Added Squire Js Based Rich text Editor replacing Quill Js Based Editor.
- Added multi-column layout support
- Added dynamic zoom scaling for high-DPI displays
- Implemented HTML sanitization removing unsafe
<script>tags - Added dark-mode compatibility
- Added dynamic font attributes
- Implemented
getFormattedTextfor API compatibility
UI Changes
- Replaced toolbar text buttons with icons
- Refactored HtmlEditorToolbar for improved performance
Stability Fixes
- Suppressed unwanted
contentChangedsignals during initialization
Notifications & Background Service
Settings Improvements
-
Added Connected Accounts section
-
Added Option to Edit Configured Accounts And Warning Message while removing a Account
-
Added notification scheduling:
- Working days
- Active hours
-
Added master notification toggle
-
Added Sync and Theme preferences
Daemon Management
- Added ability to restart background daemon from UI
- Improved systemd integration
- Improved logging reliability
Notification UI
- Notifications now include assigner avatars
UI / UX Improvements
-
Standardized account selection using
selectedAccountId- Value
-1now represents All Accounts
- Value
-
ListHeader filtering now updates immediately
-
Removed unused menu sections
-
Improved layout spacing and alignment
-
Added confirmation dialogs for destructive actions (e.g., account deletion)
Refactoring & Cleanup
- Removed large number of development
console.logstatements - Simplified
Activity_Page.qmlby removing redundant sync logic - Removed legacy RichTextEditor and Quill files
- General performance-oriented QML and toolbar refactors
Bug Fixes
- Sync failure notifications now include account names and clearer error messages
- Fixed margin inconsistencies in menus and editors
- Fixed reliability issues in content synchronization
Version
Application version updated to 1.2.4
v1.2.3
23-01-2026 : Version 1.2.3
New Features and Improvements
- Enhancement in UI/UX of WorkItem Option Selectors
- Fix for 'Done' label in Activities.
- Fix for Selecting Orphaned Task and Projects from the WorkItemSelector.
- Improvrement in UI/UX of Sync Logs
- New Flatten Hierarchy Filter for Project and Task List Views.
V1.2.2
16-01-2026 : Version 1.2.2
New Features and Improvements
-
Deep Linking from Notifications:
Tap on system notifications to navigate directly to the specific record (project, task, activity, etc.). Includes delayed navigation on cold start to ensure UI components are fully loaded. -
Push Notifications & Auto-Sync:
Auto-sync from Odoo to device with configurable settings. -
Activity Done Filter:
Added Done filter option in the Activities page to view completed activities. Improved activity synchronization to preserve the done state and local records. -
Assignment Tracking:
Notifications now detect new task/project assignments post-sync using stable Odoo record IDs. -
Bulk Notification Protection:
Implemented smart notification limiting to prevent notification spam during sync cycles, including summary notifications for fresh syncs. -
Project Stage Management:
View and update project stages directly from the app using a new stage selector dialog. -
Project Updates Enhancements:
Added search and status filtering to the Project Updates page. -
Option Selector Popover:
Replaced the Selection Button Dialog Box with a cleaner OptionSelector Popover for improved UX. -
Draft Manager for Projects:
Added draft management support for project forms. -
User Favorites Sync:
Addeduser_idto projects and synchronized favorites with Odoo.
Notification System Improvements
-
Redesigned Notification Popup:
Improved header layout, empty state display, and overall structure. -
Swipe-to-Delete:
Individual notifications can be deleted using swipe gestures. -
Notification Deduplication:
Prevented duplicate notifications at both database and UI levels. -
Enhanced Notification Icons:
Improved icons for project, task, activity, and timesheet notifications, including an active notification indicator. -
Notification Management:
Added mark-all-as-read, delete-all-read notifications, and unread count tracking. -
Periodic Refresh:
Enabled automatic tracking and periodic refresh in the notification bell component.
Daemon
- Version Control:
Daemon version checks with automatic restart on updates.
Bug Fixes and Technical Improvements
-
Activity Race Conditions:
Fixed race conditions during activity creation and synchronization to prevent duplicates. -
Null Value Warnings:
Normalized null handling fortask_idandresIdto eliminate warnings. -
Daemon Improvements:
Enhanced startup reliability with improved logging, service checks, and heartbeat handling. -
Sync Logic:
Updated last-check logic to use the maximumlast_modifiedvalue from synced data. -
Exception Handling:
Improved global exception and signal handling inNotificationDaemon. -
Account Selection:
Fixed default account handling and no-selection edge cases.
v1.2.1
TimeManagement App - Unconfined Template Justification
App Name: Time Management (UBTMS)
App ID: ubtms
Version: 1.2.1
Developer: CIT-Services
Summary
We are requesting approval for the "unconfined" AppArmor template for the Time Management app. This app provides background synchronization with Odoo ERP servers and requires elevated system access to deliver real-time push notifications and persistent background operation—features that cannot be achieved with standard confined templates.
Features Requiring Unconfined Access
1. Background Daemon Service
The app runs a persistent Python daemon (daemon.py) that:
- Syncs data from Odoo ERP servers every minute
- Continues running even when the main app is closed
- Survives device sleep/wake cycles
Why unconfined is needed:
- The daemon uses systemd user services to ensure restart resilience
- It requires access to
/proc/self/oom_score_adjfor OOM protection - Standard confined templates do not allow spawning detached background processes
2. DBus System Bus Access
The daemon requires system DBus access for:
- com.lomiri.Repowerd - To acquire wakelocks and prevent the daemon from being killed during device sleep
- org.freedesktop.login1 - To receive PrepareForSleep signals for graceful sleep/wake handling
Why unconfined is needed:
- System bus access is blocked by the standard
ubuntu-sdktemplate - These capabilities are essential for reliable background sync on mobile devices
3. Push Notifications via Postal
The app sends persistent push notifications through:
- com.lomiri.Postal - For notification popups and badge counts
- org.freedesktop.Notifications - As a fallback notification mechanism
Why unconfined is needed:
- While push-notification-client is in our policy_groups, the daemon's background process needs broader DBus session bus access to post notifications when the main app is not running
4. Process Management
The daemon:
- Writes PID files for process tracking
- Uses signal handlers (SIGTERM, SIGHUP, SIGINT) for lifecycle management
- Spawns using
setsidfor session detachment
Why unconfined is needed:
- Process detachment and signal manipulation require capabilities not available in confined apps
Security Mitigations
Despite requiring unconfined access, we implement several security best practices:
- No root access required - All operations run as the user
- Local data only - SQLite database stored in standard app directory (
~/.local/share/ubtms/) - HTTPS only - All Odoo API communication uses encrypted connections
- No arbitrary code execution - The daemon only syncs predefined data models
- API key authentication - Credentials stored locally, never transmitted insecurely
- Open source - Full source code available for review at the repository
Alternatives Considered
| Approach | Why It Doesn't Work |
|---|---|
Standard ubuntu-sdk template |
Cannot spawn background processes or access system DBus |
| Using only session DBus | Wakelocks require system bus access |
| Push Helper approach | Ubuntu Touch push helpers are for server-initiated pushes; our app needs client-initiated periodic sync |
| Foreground-only operation | Defeats the purpose of a time management app that needs to notify users of task updates |
Conclusion
The Time Management app requires the unconfined template to provide essential background synchronization and notification features that users expect from a productivity app. Without these capabilities, the app cannot:
- Notify users of new tasks/activities when the app is closed
- Sync data reliably in the background
- Survive device sleep cycles
We believe the security mitigations in place, combined with the open-source nature of the project, justify the need for elevated permissions.
v1.1.10
--------------21-11-2025 : V1.1.10--------------------
New Features
- Activities – Navigate to project/task detail view directly from the activity screen.
- Project updates – In-app edit support for summary, description, and overall progress.
- Activities – In-app editing for summary, description, activity type, date, and WorkItemSelector details.
- Draft management – Edit support enabled for Activities and Project Updates.
Bug Fixes and Improvements
- UI enhancements in the Project Updates list view.
- Resolved task stage issues when working across multiple instances.
- Introduced two additional connection types for Activities: Updates and Other.
v1.1.9
New Features
- Introdcing Draft Manager in Timesheets, Tasks form View and Project Update Creation Form. Draft Manager will save your data in draft state in case of app crash or in case of Navigation to some other page.
- Introducing Weblates. Added Support for nl language.
- Adding Rich Text Editor support for Project Updates.
Note:
Since there is currently no edit option available for project updates, the draft project update is shown only when the user reopens the same project and clicks Create Project Update.
Bug Fixes and Enhancement
- Added Download Button in Attachments.
- Fixes in Project Searc