Git Product home page Git Product logo

timecard's Introduction

πŸ“š Author | 🎀 Speaker | ⌚ Time Lord

Author of Dead Simple Python (No Starch Press, 2022) and mystery novels. Communication nerd.

Former Principal Software Engineer. Geek in Python, C++, and Linux. Accidental expert in debugging and memory management. Mentor, business analyst, and project manager. Creator of Quantified Tasks standards. Reluctant IT.

Community moderator at DEV.

Member of Ubuntu, Python Software Foundation, Open Source Initiative.

Sometimes I also make Minecraft datapacks.

πŸ”­ See my CV.

βš™ Selected Skills

  • Python
  • C++
  • C
  • C#
  • Ruby
  • TypeScript
  • CSS
  • HTML5

See full skill list.

πŸ“« How to reach me

timecard's People

Contributors

cmcode-dev avatar codemouse92 avatar jwigert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

timecard's Issues

Popup Focus Reminder

Focus reminders should pop up periodically, e.g.

You've been working on X for X minutes.

...or...

Are you still working on X?

The user should be able to answer "Yes, go away" to close the dialogue, or "No, I'm not" to bring up the main interface.

This same feature can be used to implement "soft limits", which will later allow things like Pomodoros. The only difference is that a soft limit might automatically pause the timer and bring up the interface.

Quick Adjust Time

If a user realized they've been distracted, they should be able to quickly remove time from the paused or running timer with +5 min and -5 min buttons.

This may need to be implemented as a separate screen on the interface.

Filter time log

I'd like to only see the entries for a particular date (e.g. "today" or "7 march 2022"), and to see a grand total as well.

Order By Date

Time log needs to be orderable by the actual date, not just the date string.

Add Command-Line Options

timecard-app needs to accept command-line options, including the standard ones:

  • -v, --version displays program version
  • -h, --help displays help
  • --startintray starts the application in the tray, with window hidden
  • --settings-file= overrides the settings file path

Duration incorrect

I'll test further next time I need to measure some time. Tried the app out today since the one I was using was annoying me endlessly. The timer at the top of the screen showed the correct duration from 10:53 am to 12:15 pm of 1:22. However, after saving to the log and then going in the settings and finding the "show duration in decimal" option and saving that, I went back to the log screen to discover it listed a duration of 2.25 which was clearly incorrect. I didn't notice what it said before I went in the settings menu, but disabling and reenabling the decimal function continues to give a quantity of two and one quarter hours in whichever notation.

The log file has only this:

2020-10-24-10-53-58|02:15:34|task

2.25 hours have not even passed since starting the tracker until the moment I'm writing this, so I'm not clear on just what happened. (I experimentally timed another 4 minutes while writing this and doing a couple other things which logged correctly, but didn't go over an hour)

I'll let you know if I can reproduce the error and under what circumstances. :)

Incrementing Duration

On the Edit View, adding or removing time seconds or minutes should also increment minutes or hours accordingly.

Deprecate .timecardrc and .timecard in favor of user dirs

  • Deprecate storing settings in .~/timecardrc in favor of the user config directory, e.g. ~/.config/timecard/settings.conf.
  • If new default location doesn't contain settings.conf, fall back on .timecardrc and automatically migrate its contents.
  • Add line comments to config files, so we can leave comments on old config files that they were migrated.

Also, change the default log location from ~/.timecard to the more standard location of (e.g.) ~/.local/share/timecard/.

Problem with shiboken and python 3.8

Timecard failed silently on startup on my windows machine (windows 10, python 3.8). However, by running python timecard-app.exe, I received the following error message:

Traceback (most recent call last):
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 192, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "timecard-app.exe\__main__.py", line 4, in <module>
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\site-packages\timecard\__main__.py", line 11, in <module>
    from timecard.interface import interface
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\site-packages\timecard\interface\interface.py", line 8, in <module>
    from timecard.interface.app import App
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\site-packages\timecard\interface\app.py", line 12, in <module>
    from PySide2.QtWidgets import QApplication, QVBoxLayout, QWidget
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\site-packages\PySide2\__init__.py", line 51, in <module>
    _setupQtDirectories()
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\site-packages\PySide2\__init__.py", line 21, in _setupQtDirectories
    import shiboken2
  File "C:\Users\moshe\AppData\Local\Programs\Python\Python38\lib\site-packages\shiboken2\__init__.py", line 27, in <module>
    from .shiboken2 import *
ImportError: DLL load failed while importing shiboken2: The specified procedure could not be found.

This appears to be a shiboken with python 3.8 issue, according to this stack overflow answer. Since the import error involves a DLL, I assume it is also a windows-only problem.

Since this is a shiboken problem, I suppose not much can be done, but I think fair warning should be given that timecard won't work on windows with python 3.8.

Profiles

Allow switching between log files (same directory) from a drop-down menu in the main interface, possibly associating names with the files.

Task Time Limits

It should be possible to set a time limit on tasks, at which point the timer is automatically paused and an alert is displayed.

Add man page(s)

Create the man pages, which should be installed both by the Debian (and later, Fedora) packaging, and by the Linux install Makefile.

Load requirement.txt in setup.py

Hi. Juste see jour fossdem presentation. What about loading the dependencies from requirement.txt within thΓ© setup file. Having to manage duplicates can be source of trouble ? Thanks

Minimal Mode

Allow hiding everything except the timer and main buttons.

Alarms/Reminders

Allow setting alarms and reminders directly in Timecard, with the option to autopause your time when one goes off.

Customize Timestamp Format

Allow customizing the displayed timestamp used on the Log and Edit panes. (This will not affect the format used when reading from or writing to the log files.)

Save timer between sessions

When Timecard is quit, or stopped unexpectedly (e.g. the computer being shut down), the timer state should have already been saved to disk. This way, when it relaunches, it has the backup.

This temporary file should be updated every few seconds, not every tick, and should contain:

  • Activity
  • Time
  • Stopped/Not Stopped state.

When reloaded from a temporary file, a not-stopped timer should be loaded as paused, whether it was paused when Timecard was quit or not.

Duration Doubled

Hi, I discovered another issue.

The app is logging the time as 2x it's original duration.

Screenshot 2019-12-29 10 17 32

Seeing 100% CPU usage when tracking time

Hi @CodeMouse92 , I am enjoying Timecard. I'm using Flatpak to run it on Manjaro, and unfortunately I'm seeing 100% CPU usage whenever I'm tracking time. The CPU usage goes back to normal when it's not tracking time any more.

I'm looking into the code to see if I can propose a fix for this, but I wanted to bring it to your attention to see if you had any ideas.

quick edit: I'm running it straight from the source code without Flatpak and it is not using 100% CPU any more. So it seems that this could be related to Flatpak somehow. Still investigating.

Detect Idle

Often I forget to pause Timecard when walking away from the computer. I would like a feature that detects when the system has been idle (yes, this is possible in Python!) and pauses the time with a notification. As soon as the user comes back, they will see the prompt to select whether they're still working, or if they had walked away.

  1. User enables Idle Detect, and sets it to a 5 minute timeout.
  2. Timecard detects a five minute idle and saves the timestamp of the start of the idle period (five minutes ago).
  3. Timecard raises a window to ask the user if they're still working.
  4. If the user selects "I am still working", the timestamp is cleared.
  5. If the user selects "I was idle", the clock is paused and set back to when the idle period started. The user can then decide whether to resume, save, or reset.

Reusable Activities

The text box should also display a drop-down of saved activities, which you can save to and delete from with a button click.

Single Running Process Only

It should not be possible to start a second instance of Timecard while one is already running. Instead, trying to start another instance should show the hidden window.

It may be beneficial to allow an override for this via either the command line or a setting, but that part is low priority; there are few (if any) use cases for running multiple instances of Timecard.

Time Paused

Track how much time is spent paused, as well as running. This should be loggable too.

Crash On Start with Invalid Log Path

If you set the log path to something invalid, the program will not start until you fix it manually in the configuration file.

Timecard should display a warning or revert instead.

Pomodoro

Implement Pomodoro technique into Timecard.

  • Toggle with setting (currently dummy setting on Settings Pane)
  • Popup every 20 minutes.
  • Optional sound (chime).
  • Optional auto-pause.

This should be implemented through its own module, instead of as part of the TimeDisplay class.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.