Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
8b23bbc
bump version to 1.2.9 in manifest.json, constants.js, release_notes.t…
suraj-yadav0 May 11, 2026
b958c77
Merge pull request #216 from CITOpenRep/main
suraj-yadav0 May 11, 2026
68e804c
Add Timesheet and Timesheet_Page QML files for timesheet management
suraj-yadav0 May 12, 2026
ca98a19
feat: Add CreateUpdatePage and FormDraftHandler for project updates
suraj-yadav0 May 12, 2026
14bedd6
fix: Update Python import paths in BackendBridge, ImagePreviewer, and…
suraj-yadav0 May 14, 2026
fabe888
feat: Enhance attachment download handling with error notifications a…
suraj-yadav0 May 14, 2026
6e507ba
Merge pull request #218 from CITOpenRep/main
suraj-yadav0 May 14, 2026
56c90d1
Merge pull request #219 from CITOpenRep/timesheet-refactor
suraj-yadav0 May 14, 2026
760b082
feat: add offline Voice-to-Text support and Model Management
AnmollGarg May 14, 2026
fa44193
feat: Refactor MyTasks components and add MyTasksClosedIndicator for …
suraj-yadav0 May 20, 2026
657e8aa
feat: Refactor navigation structure and enhance MyTasks integration f…
suraj-yadav0 May 22, 2026
5e527ae
Add Updates and Updates_Page QML files for project update management
suraj-yadav0 May 22, 2026
3e4ed70
Merge pull request #221 from CITOpenRep/componenents-refactor
suraj-yadav0 May 27, 2026
b7935ec
Merge pull request #222 from CITOpenRep/MyTasks-refactor
suraj-yadav0 May 27, 2026
cc959bf
Refactor account management and logging features
suraj-yadav0 Jun 3, 2026
9e2376d
Refactor code structure for improved readability and maintainability
suraj-yadav0 Jun 3, 2026
7cbd6f9
chore: Remove outdated refactor documentation and scripts to streamli…
suraj-yadav0 Jun 3, 2026
b434363
Merge pull request #223 from CITOpenRep/Features-reorganise
suraj-yadav0 Jun 3, 2026
d1445ae
docs: Add Technical File Organization document for improved repositor…
suraj-yadav0 Jun 3, 2026
5b97bbf
Merge branch 'release/v1.2.9' into feature/voice2text
suraj-yadav0 Jun 3, 2026
cb287cf
Merge pull request #217 from AnmollGarg/feature/voice2text
suraj-yadav0 Jun 3, 2026
3e8ea21
feat: Add ModelDownloadTimerWidget for enhanced download management
suraj-yadav0 Jun 3, 2026
956214c
Refactor code structure and remove redundant sections for improved re…
suraj-yadav0 Jun 4, 2026
6422743
feat: Enhance homepage layout and styling with new features and docum…
suraj-yadav0 Jun 5, 2026
394d446
[ADD] User Manual
parvathyabnair Jun 8, 2026
0b03fd2
Added in website sidebar
parvathyabnair Jun 8, 2026
8c5fd53
fix: Update terminal code styles for improved appearance
suraj-yadav0 Jun 9, 2026
df28864
feat: Add copy functionality to TerminalPreview and enhance styling
suraj-yadav0 Jun 9, 2026
d0da8ed
feat: Integrate search functionality using @easyops-cn/docusaurus-sea…
suraj-yadav0 Jun 9, 2026
e39f1a0
Refactor code structure for improved readability and maintainability
suraj-yadav0 Jun 9, 2026
d52b855
chore: remove outdated website search plan documentation
suraj-yadav0 Jun 9, 2026
5bee673
[ADDED] user manual as sub sections
parvathyabnair Jun 9, 2026
1c57ad5
feat: Add 'All Features' page to documentation and update sidebar
suraj-yadav0 Jun 10, 2026
d504b81
feat: Update Activities module features and add upcoming items
suraj-yadav0 Jun 10, 2026
a9b9a50
feat: Update copyright notice in docusaurus.config.js
suraj-yadav0 Jun 10, 2026
5bf2ebc
feat: Add technical references for various modules and update sidebar…
suraj-yadav0 Jun 11, 2026
993ac09
Merge branch 'docs-website' into docs/user-docs
suraj-yadav0 Jun 12, 2026
a8c127a
Merge pull request #228 from parvathyabnair/docs/user-docs
suraj-yadav0 Jun 12, 2026
347ec1c
feat: Enhance Activities, Projects, Tasks, Timesheets, Dashboard, Set…
suraj-yadav0 Jun 12, 2026
56d5569
docs: migrate user manual from functional directory to user-manual su…
suraj-yadav0 Jun 15, 2026
c7a6bfb
feat: implement theme-aware footer styling with custom color variable…
suraj-yadav0 Jun 15, 2026
2ae0114
replace ComboBox with custom popover-based trigger in TaskInitialStag…
suraj-yadav0 Jun 16, 2026
f96afd6
refactor: replace custom row-based stage selector with InlineOptionSe…
suraj-yadav0 Jun 16, 2026
ac8e172
replace ComboBox with InlineOptionSelector in DateRangeSelector and s…
suraj-yadav0 Jun 16, 2026
8d59a9e
add top padding to contentColumn in Tasks page
suraj-yadav0 Jun 16, 2026
aa1cfd6
Merge pull request #235 from CITOpenRep/docs-website
suraj-yadav0 Jun 17, 2026
92f16a0
feat: add interactive device simulator component to showcase TimeMana…
suraj-yadav0 Jun 17, 2026
8e1b44c
feat: add theme-aware UI components, timesheet/task data models, and …
suraj-yadav0 Jun 17, 2026
b1474d3
feat: implement project summaries, task lists, activity logs, and set…
suraj-yadav0 Jun 17, 2026
0265d2c
feat: add dark mode styles for navigation components and update UI im…
suraj-yadav0 Jun 17, 2026
f1e61d5
feat: redesign settings screen with Ubuntu Touch style list components
suraj-yadav0 Jun 18, 2026
8ee6cbb
feat: implement Ubuntu Touch-style activities list with navigation ta…
suraj-yadav0 Jun 18, 2026
03e931b
feat: redesign project updates view with categorized cards, status ba…
suraj-yadav0 Jun 18, 2026
9a609f9
feat: overhaul about screen layout with new styles and detailed featu…
suraj-yadav0 Jun 18, 2026
4846e79
feat: add interactive simulator dimension controls and update scroll …
suraj-yadav0 Jun 18, 2026
cb49dd5
refactor: set default theme to light and remove theme toggle controls
suraj-yadav0 Jun 18, 2026
8baba69
refactor: rename projects and update user display names in mock dashb…
suraj-yadav0 Jun 19, 2026
e2612ff
feat: Voice-to-text enhancements, dynamic timeouts, and UI cleanup
AnmollGarg Jun 23, 2026
b439c17
Merge branch 'release/v1.2.9' into feature/voice_2_text
suraj-yadav0 Jun 23, 2026
4d79753
Merge pull request #232 from AnmollGarg/feature/voice_2_text
suraj-yadav0 Jun 23, 2026
ce9c6fb
refactor: replace ComboBox with InlineOptionSelector for project stat…
suraj-yadav0 Jun 24, 2026
47591ec
refactor: replace legacy selectors with InlineOptionSelector in Activ…
suraj-yadav0 Jun 24, 2026
b8c0e29
refactor: adjust layout constraints and padding in activity configura…
suraj-yadav0 Jun 24, 2026
7e6e00a
update ListHeader height and visibility logic to dynamically respond …
suraj-yadav0 Jun 24, 2026
f56c724
: remove redundant height and anchor constraints from date widget in …
suraj-yadav0 Jun 24, 2026
7a5fd32
restore subtask hierarchy during timesheet load by resolving parent …
suraj-yadav0 Jun 24, 2026
4cbfbe7
enable attachment deletion by adding backend logic and UI action int…
suraj-yadav0 Jun 24, 2026
ca32413
feat: enhance attachment upload feedback with progress messaging, siz…
suraj-yadav0 Jun 25, 2026
a93d9ca
implement server reachability checks and improve error reporting for …
suraj-yadav0 Jun 25, 2026
3490453
feat: localize project update status labels in cards and selection co…
suraj-yadav0 Jun 25, 2026
b1388d7
replace socket-based reachability check with HTTP requests and decode…
suraj-yadav0 Jun 25, 2026
4310189
Merge pull request #242 from CITOpenRep/Attachment-VollaMemeoryThreadFIx
suraj-yadav0 Jun 26, 2026
bd25a5c
[ADDED] Weblate translate for the voice model
parvathyabnair Jun 26, 2026
c6c078a
Merge pull request #243 from parvathyabnair/release/v1.2.9
suraj-yadav0 Jun 26, 2026
32f3574
improve responsive layout in DateRangeSelector and add metadata to ri…
suraj-yadav0 Jun 26, 2026
adac491
implement responsive device scaling using ResizeObserver to maintain…
suraj-yadav0 Jun 26, 2026
6f32c22
ci: trigger github pages deployment on website-customDeviceSimulation
suraj-yadav0 Jun 26, 2026
78f87c6
style: fix simulator range labels visibility in light/dark modes
suraj-yadav0 Jun 26, 2026
4e15b29
docs: hide Features sidebar items and remove architecture flow diagram
suraj-yadav0 Jun 26, 2026
26e9bbb
Merge branch 'release/v1.2.9' into website-customDeviceSimulation
suraj-yadav0 Jun 29, 2026
580f094
Merge pull request #244 from CITOpenRep/website-customDeviceSimulation
suraj-yadav0 Jun 29, 2026
252494e
skip voice-to-text python dependency installation on armhf architecture
suraj-yadav0 Jun 29, 2026
bf1070e
update terminal UI styles and remove unnecessary decorative dots
suraj-yadav0 Jun 29, 2026
e692ac8
docs: add release/v1.2.9 branch to deploy-docs workflow
suraj-yadav0 Jun 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: Deploy Documentation

on:
push:
branches:
- main
- website-customDeviceSimulation
- release/v1.2.9
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: pages
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: website
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: npm
cache-dependency-path: website/package-lock.json

- name: Setup Pages
uses: actions/configure-pages@v5

- name: Install dependencies
run: npm ci

- name: Build site
run: npm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: website/build

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
needs: build
runs-on: ubuntu-latest
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,8 @@ __pycache__
build
*.pot
.agent
voice_to_text/lib/
.clickable
website/node_modules
website/.docusaurus
website/build
71 changes: 71 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,77 @@ install(DIRECTORY src DESTINATION ${DATA_DIR})

install(DIRECTORY qml DESTINATION ${DATA_DIR})
install(DIRECTORY models DESTINATION ${DATA_DIR})
install(DIRECTORY voice_to_text DESTINATION ${DATA_DIR} PATTERN "model" EXCLUDE)


# Map Clickable architecture to Pip platform tags
if(CLICK_ARCH STREQUAL "arm64")
set(PIP_PLATFORM "manylinux2014_aarch64")
elseif(CLICK_ARCH STREQUAL "amd64")
set(PIP_PLATFORM "manylinux2014_x86_64")
else()
set(PIP_PLATFORM "manylinux2014_${CLICK_ARCH}")
endif()

# Detect Python version and ABI for pip dependencies
execute_process(
COMMAND python3 -c "import sys; print('{}.{}'.format(sys.version_info.major, sys.version_info.minor))"
OUTPUT_VARIABLE PYTHON_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(
COMMAND python3 -c "import sys; print('cp{}{}'.format(sys.version_info.major, sys.version_info.minor))"
OUTPUT_VARIABLE PYTHON_ABI
OUTPUT_STRIP_TRAILING_WHITESPACE
)

# Dynamically download python dependencies during build
if(CLICK_ARCH STREQUAL "armhf")
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/voice_deps_installed.stamp
COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib
COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/voice_deps_installed.stamp
COMMENT "Skipping voice-to-text Python dependencies on armhf (unsupported architecture)"
)
else()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/voice_deps_installed.stamp
# Clean the build-time lib directory to ensure a fresh install
COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib
# 1. Download all dependencies with the correct architecture/platform tags
COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/python_downloads
# Download binary packages (force aarch64)
# We use --no-deps to prevent it from trying to resolve pure-python dependencies with platform tags
COMMAND python3 -m pip download --dest ${CMAKE_CURRENT_BINARY_DIR}/python_downloads
--platform ${PIP_PLATFORM} --python-version ${PYTHON_VERSION} --implementation cp --abi ${PYTHON_ABI} --only-binary=:all: --no-deps
vosk==0.3.45 cffi==1.17.1 websockets==13.1 charset-normalizer==3.4.7
# Download pure-python packages (no platform tags needed as they are none-any)
COMMAND python3 -m pip download --dest ${CMAKE_CURRENT_BINARY_DIR}/python_downloads
certifi==2024.2.2 idna==3.13 requests==2.31.0 srt==3.5.3 tqdm==4.67.3 urllib3==1.26.18 pycparser

# 2. Install the downloaded packages into the target lib folder
# Phase 1: Binary ones (force platform). Use --no-deps to skip resolution of pure-python deps.
COMMAND python3 -m pip install --target ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib
--no-index --find-links=${CMAKE_CURRENT_BINARY_DIR}/python_downloads
--platform ${PIP_PLATFORM} --python-version ${PYTHON_VERSION} --implementation cp --abi ${PYTHON_ABI} --only-binary=:all: --no-deps
vosk==0.3.45 cffi==1.17.1 websockets==13.1 charset-normalizer==3.4.7
# Phase 2: Pure-python ones. We also use --no-deps here to be safe and specific.
COMMAND python3 -m pip install --target ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib
--no-index --find-links=${CMAKE_CURRENT_BINARY_DIR}/python_downloads --no-deps
certifi==2024.2.2 idna==3.13 requests==2.31.0 srt==3.5.3 tqdm==4.67.3 urllib3==1.26.18 pycparser

# 3. Bundle libatomic.so.1 (required by vosk on some arm64 devices)
# It's installed in the container via dependencies_target in clickable.yaml
COMMAND cp /usr/lib/${ARCH_TRIPLET}/libatomic.so.1 ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib/ || true
COMMAND touch ${CMAKE_CURRENT_BINARY_DIR}/voice_deps_installed.stamp
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/voice_to_text/requirements.txt
COMMENT "Installing Python dependencies for voice to text (${CLICK_ARCH})"
)
endif()
add_custom_target(install_voice_deps ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/voice_deps_installed.stamp)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/voice_to_text/lib DESTINATION voice_to_text)

# Translations
file(GLOB_RECURSE I18N_SRC_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/po qml/*.qml qml/*.js)
Expand Down
104 changes: 22 additions & 82 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,102 +1,42 @@
# Time Management
# TimeManagement

Time Management
TimeManagement is a desktop and Ubuntu Touch project for task, timesheet, dashboard, and sync-oriented workflows.

This guide explains how to install `clickable`, build the `TimeManagement` project, and run it on both desktop and Ubuntu Touch devices.
## Documentation site

## Prerequisites
The project now includes a Docusaurus website in `website/` that is intended to become the main home for:

- Ubuntu or Debian-based system
- Git
- Python 3
- Docker (for cross-compilation and device builds)
- product-facing overview content
- user and setup documentation
- technical architecture and repository guidance
- contributor workflow documentation

## Install Clickable
Planned published URL:

Follow the official steps to install `clickable`:
- `https://citopenrep.github.io/timemanagement/`

```bash
# Install required dependencies
sudo apt update
sudo apt install git python3 python3-pip

# Install Clickable using pip
pip3 install --user clickable-ut

# Add Clickable to your PATH
echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc
source ~/.bashrc
```

Verify installation:
## Local docs development

```bash
clickable --version
cd website
npm install
npm run start
```

## App build and run

## Build the project
To build the project, clone this repo and then you can run

```bash
clickable desktop
```

The above command will run the project on desktop
For the current application workflow:

```bash
clickable desktop
clickable install
```
to install the app on the connected device.

## Refactor guardrails

Phase 1 refactor guardrails and naming contract are documented here:

- docs/refactor/phase-1-architecture-contract.md
- docs/refactor/phase-1-naming-map.md
- docs/refactor/phase-1-smoke-checklist.md

Migration check helper:

```bash
./scripts/refactor_phase1_checks.sh report
```


## License

/*
* MIT License
*
* Copyright (c) 2025 CIT-Services
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/

## Contributing
## Existing source docs

- [Pull Request Guidelines](docs/PR-GUIDELINES.md)
- [High Level Architecture](docs/HLD.drawio)
- [Phase 1 Refactor Docs](docs/refactor/)
The legacy Markdown docs in `docs/` remain available during the migration into the Docusaurus site.

## References
* https://clickable-ut.dev/en/latest/
* Location of DB : ~/.clickable/home/.local/share/ubtms/Databases
## Repository references

- [Technical file organization](docs/TECHNICAL-FILE-ORGANIZATION.md)
- [Pull request guidelines](docs/PR-GUIDELINES.md)
4 changes: 4 additions & 0 deletions clickable.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,7 @@ clickable_minimum_required: 8.0.0
builder: cmake
kill: qmlscene
skip_review: true
dependencies_target:
- libatomic1
dependencies_host:
- python3-pip
Loading
Loading