Kimai v2 is a web-based multiuser time-tracking application.

Overview

Kimai logo

CI Status Code Coverage Latest stable version License Twitter

Kimai - time-tracker

Kimai is a free, open source and online time-tracking software designed for small businesses and freelancers. It is built with modern technologies such as Symfony, Bootstrap, RESTful API, Doctrine, AdminLTE, Webpack, ES6 etc.

Introduction

Requirements

About

This is the new version of the open source time tracker Kimai. It is stable and production ready, ships with many advanced features, including but not limited to:

JSON API, invoicing, data exports, multi-timer and punch-in punch-out mode, tagging, multi-user and multi-timezones, authentication via SAML/LDAP/Database, customizable role and team permissions, responsive and ready for your mobile device, user specific rates, advanced search & filtering, money and time budgets, multiple reports, support for plugins and many more.

Installation

Updating Kimai

Plugins

Roadmap and releases

You can see a rough development roadmap in the Milestones sections. It is open for changes and input from the community, your ideas and questions are welcome.

Kimai 2 uses a rolling release concept for delivering updates. You can upgrade Kimai at any time, you don't need to wait for the next official release. The master branch is always deployable, release tags are only snapshots of the current development version.

Release versions will be created on a regular base (approx. one release every 4-8 weeks). Every code change, whether it's a new feature or a bugfix, will be done on the master branch. Kimai is actively developed in my spare time, I put my effort into the software instead of backporting changes.

Credits

Kimai 2 is developed with modern frameworks like Symfony v4, Doctrine, AdminLTEBundle (based on AdminLTE theme) and many more.

Comments
  • add ldap support

    add ldap support

    Description

    Documentation can be found at: https://www.kimai.org/documentation/ldap.html

    Features:

    • Authenticate against an LDAP
    • New users will be created on the fly
    • Configured attributes will be synced on every login
    • Mapping LDAP groups to Kimai roles is possible

    TODO

    • [x] prevent setting an internal password
    • [x] get rid of the service class name parameter
    • [x] convert ldap container parameter to config class
    • [x] add group mapping query

    How to test

    • checkout the branch
    • composer install
    • adjust config/packages/local.yaml to your needs (see documentation)
    • bin/console cache:clear

    Open questions for EVERY reader

    • How do other apps handle LDAP support?
    • Should an app still offer registration when LDAP is activated?
      • Leave that configurable or turn it off always?
      • I guess we need to avoid problems like a local account with the same account name in LDAP, then the LDAP account would never be checked?
    • Should groups be transferred?
      • How? Is there a general approach?
      • I read something about a "memberof" field/attribute which seems to only a OpenLDAP feature?
    • The login needs to be checked against LDAP every time?
    • What should happen to the local account if an account in LDAP is deleted?
    • Can LDAP accounts be deactivated?

    If anything else comes to your mind, please share it. This is one of the features I have to develop without having a proper LDAP setup/knowledge, so I am "flying blindly" here and need YOUR input.

    Fixes #193 Fixes #795 Fixes #449

    Types of changes

    • [x] New feature (non-breaking change which adds functionality)

    Checklist

    • [x] I verified that my code applies to the guidelines (composer code-check)
    • [x] I updated the documentation (see here)
    • [x] I agree that this code is used in Kimai and will be published under the MIT license
    feature request security 
    opened by kevinpapst 111
  • added support for saml login

    added support for saml login

    Description

    Only tested with Google apps SAML implementation

    In order to test this branch, do a checkout and then:

    • composer install
    • edit config/packages/local.yaml with the adjusted contents below
    • bin/console cache:clear --env=prod
    • bin/console cache:warmup --env=prod
    • Test the new login button ...

    YOU FIND THE REQUIRED CONFIGURATION IN THE DOCUMENTATION See https://www.kimai.org/documentation/saml.html

    Fixes #1227

    Links:

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [x] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist

    • [x] I verified that my code applies to the guidelines (composer kimai:code-check)
    • [ ] I updated the documentation (see here)
    • [x] I agree that this code is used in Kimai and will be published under the MIT license
    feature request 
    opened by kevinpapst 75
  • Polish translations

    Polish translations

    Hi Just finished Polish traslation for Kimai. Before release to public via GitHub -wanted my users to review translation. But polish language does not apperar in language drop down list . Files added in kimai/translation :about.pl.xlf, daterangepicker.pl.xlf,flashmessages.pl.xlf,invoice-numbergenerator.pl.xlf, messages.pl.xlf, plugins.pl.xlf, tags.pl.xlf,validators.pl.xlf,actions.pl.xlf,exceptions.pl.xlf,invoice-calculator.pl.xlf, invoice-renderer.pl.xlf, pagerfanta.pl.xlf ,system-configuration.pl.xlf, teams.pl.xlf Files added in kimai2/vendor/kevinpapst/adminlte-bundle/Resources/translations/ AdminLTEBundle.pl.xliff config/packages/kimai.yaml not adjusted - there is no reason assuming fallback to en config/services.yaml adjusted app.js , callendar.js adjuster nginx reloaded . No languade in drop down . Do I miss something ? Reg - Mik

    translation 
    opened by MikKrz 42
  • Kimai 1.0 installation issue

    Kimai 1.0 installation issue

    Describe the bug Getting the following error when doing an upgrade using, please help

    [email protected] /var/www/kimai2.1 # git fetch --tags remote: Enumerating objects: 4769, done. remote: Counting objects: 100% (3575/3575), done. remote: Compressing objects: 100% (723/723), done. remote: Total 2396 (delta 1882), reused 2087 (delta 1642), pack-reused 0 Receiving objects: 100% (2396/2396), 3.08 MiB | 7.55 MiB/s, done. Resolving deltas: 100% (1882/1882), completed with 295 local objects. From https://github.com/kevinpapst/kimai2

    • [new tag] 1.0 -> 1.0 [email protected] /var/www/kimai2.1 # git checkout 1.0 Previous HEAD position was 6dc4fa0 fix tests that failed around midnight (#735) HEAD is now at 94e49ea updated Spanish translations (#906)

    [email protected] /var/www # chown -R www-data: kimai2.1/
    Logfile

    [email protected] /var/www/kimai2.1 # sudo -u www-data composer install --no-dev --optimize-autoloader
    Cannot create cache directory /root/.composer/cache/repo/https---repo.packagist.org/, or directory is not writable. Proceeding without cache
    Cannot create cache directory /root/.composer/cache/files/, or directory is not writable. Proceeding without cache
    Cannot create cache directory /root/.composer/cache/repo/https---repo.packagist.org/, or directory is not writable. Proceeding without cache
    Cannot create cache directory /root/.composer/cache/repo/https---repo.packagist.org/, or directory is not writable. Proceeding without cache
    Cannot create cache directory /root/.composer/cache/repo/https---flex.symfony.com/, or directory is not writable. Proceeding without cache
    Loading composer repositories with package information
    Installing dependencies from lock file
    Package operations: 1 install, 52 updates, 3 removals
      - Removing symfony/security-core (v4.2.7)
      - Removing symfony/security-csrf (v4.2.7)
      - Removing symfony/security-guard (v4.2.7)
      - Updating symfony/flex (v1.2.3 => v1.2.5): Downloading (100%)         
      - Updating beberlei/doctrineextensions (v1.2.0 => v1.2.1): Downloading (100%)         
      - Updating symfony/routing (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/http-foundation (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/contracts (v1.0.2 => v1.1.1): Downloading (100%)         
      - Updating symfony/event-dispatcher (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/debug (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/http-kernel (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/finder (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/filesystem (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/dependency-injection (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/config (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/var-exporter (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/cache (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/framework-bundle (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/doctrine-bridge (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/console (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating doctrine/doctrine-bundle (1.10.2 => 1.11.1): Downloading (100%)         
      - Updating egulias/email-validator (2.1.7 => 2.1.8): Downloading (100%)         
      - Updating jms/serializer (2.3.0 => 3.0.1): Downloading (100%)         
      - Updating twig/twig (v2.8.1 => v2.11.0): Downloading (100%)         
      - Updating symfony/inflector (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/property-access (v4.2.7 => v4.2.9): Downloading (100%)         
      - Removing symfony/security-http (v4.2.7)
      - Installing symfony/security (v4.2.8): Downloading (100%)         
      - Updating symfony/options-resolver (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating kevinpapst/adminlte-bundle (2.6 => 2.8.1): Downloading (100%)         
      - Updating nikic/php-parser (v4.2.1 => v4.2.2): Downloading (100%)         
      - Updating phpdocumentor/reflection-docblock (4.3.0 => 4.3.1): Downloading (100%)         
      - Updating phpoffice/phpspreadsheet (1.6.0 => 1.7.0): Downloading (100%)         
      - Updating symfony/var-dumper (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/twig-bridge (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/debug-bundle (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/dotenv (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/expression-language (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/intl (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/form (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/monolog-bridge (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/property-info (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/security-bundle (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/serializer (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/stopwatch (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/swiftmailer-bundle (v3.2.6 => v3.2.7): Downloading (100%)         
      - Updating symfony/templating (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/translation (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/validator (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/twig-bundle (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/web-profiler-bundle (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/process (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/web-server-bundle (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating symfony/yaml (v4.2.7 => v4.2.9): Downloading (100%)         
      - Updating zircote/swagger-php (2.0.13 => 2.0.14): Downloading (100%)         
      - Updating symfony/asset (v4.2.7 => v4.2.9): Downloading (100%)         
      - Installing symfony/webpack-encore-bundle (v1.6.0): Downloading (100%)         
    Generating optimized autoload files
    ocramius/package-versions:  Generating version class...
    ocramius/package-versions: ...done generating version class
    Executing script cache:clear [KO]
     [KO]
    Script cache:clear returned with error code 255
    !!  PHP Fatal error:  Class 'Symfony\Component\Security\Core\Authorization\ExpressionLanguage' not found in /var/www/kimai2.1/vendor/sensio/framework-extra-bundle/Security/ExpressionLanguage.php on line 21
    !!  
    Script @auto-scripts was called via post-install-cmd
    
    
    bug 
    opened by rarvin 40
  • Time tracking with RFID

    Time tracking with RFID

    Hi/Hallo/Servus everyone! First of all thanks for this geenius project ;). I found Kimai 2 days ago so I'm completly new to this.

    My idea is to connect kimai to RFID readers:

    (0. Kimai already installed)

    1. Buy a cheap ESP8266 microcontroller
    2. Flash firmware
    3. Connect cheap RFID modul to it
    4. Login on the ESP8266 WiFi interface and connect it to the running kimai
    5. Link RFID IDs to user and or activities
    6. User presence: start tracking / stop tracking of presence (and last activity)

    I tried out some API stuff and also read the dev docu but I can't find a clear entry point to start a plugin development.

    Actually I have these ideas to do it:

    1. Connect directly to database via subserver thats receiving the ID's and managing trackings
    2. Write a plugin to manage RFID IDs and try to use the API (would be the best)
    3. Use a subserver and use the API
    4. Just add a new RFID field to users and use the API (but maybe without good error handling)

    Things I can: Electronics, C, C++, C#, Java, Python, SQL

    Things I need:

    1. Link RFID IDs to user
    2. Requesting with an RFID ID Kimai
    3. Kimai does the handling of the tracking
    4. Kimai responses with a state: start/stop(maybe with duration)/fail(maybe reason)

    I would push the source code and shematics of the ESP8266 stuff on GitHub and when I get into the developing of a plugin that stuff too.

    But first I want to ask you for suggestions to this or help how to get into the development and what I'll need to build. Because I really start at 0 in PHP coding :D

    Greetings Alex

    feature request plugin 
    opened by AliGeenius 36
  • php error

    php error

    Describe the bug I installed the app locally and then uploaded all the files. Tried to navigate to the public folder and got a page 500 error and checked to see what error was causing it and was given the following:

    Uncaught Twig_Error_Loader: The "/home/south287/public_html/timeclock2.0/kimai2\vendor\symfony\framework-bundle/Resources/views" directory does not exist ("/home/south287/public_html/timeclock2.0/kimai2\vendor\symfony\framework-bundle/Resources/views"). in /home/south287/public_html/timeclock2.0/kimai2/vendor/twig/twig/lib/Twig/Loader/Filesystem.php:101 Stack trace: #0 /home/south287/public_html/timeclock2.0/kimai2/var/cache/prod/ContainerJSVbq8m/srcProdProjectContainer.php(711): Twig_Loader_Filesystem->addPath('/home/south287/...', 'Framework') #1 /home/south287/public_html/timeclock2.0/kimai2/var/cache/prod/ContainerJSVbq8m/srcProdProjectContainer.php(1182): ContainerJSVbq8m\srcProdProjectContainer->getTwigService() #2 /home/south287/public_html/timeclock2.0/kimai2/var/cache/prod/ContainerJSVbq8m/srcProdProjectContainer.php(490): ContainerJSVbq8m\srcProdProjectContainer->getSensioFrameworkExtra_View_ListenerService() #3 /home/south287/public_html/timeclock2.0/kimai2/vendor/symfony/event-dispatcher/EventDisp in /home/south287/public_html/timeclock2.0/kimai2/vendor/twig/twig/lib/Twig/Loader/Filesystem.php on line 101

    To Reproduce Steps to reproduce the behavior:

    1. Installed locally
    2. Uploaded all the files
    3. Navigated to the public folder

    Expected behavior App would be installed and running.

    Screenshots None at the moment. I just see a white screen

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Chrome
    • whatever the installed pulled from github

    Smartphone (please complete the following information): NA

    Additional context I installed locally as I have a shared server access to my website. I cannot install composer as I don't have root access.

    support 
    opened by wolftone1916 36
  • No login possible after clean install

    No login possible after clean install

    I installed Kimai 1.6.2 in a Website within ISPConfig. I followed the instructions from the website using git and composer and everything went fine. I'm able to open the login page but I can't log in - im redirected to the login page. Registering a new user doesn't work as well but I can see, that the communication with the database is working because I can't register a user with the same name of an existing user. After submitting the form I receive the following error: "Der CSRF-Token ist ungültig. Versuchen Sie bitte das Formular erneut zu senden."

    Any help is aprreciated.

    Best regards, Thorsten

    support 
    opened by kreutho 35
  • Changes in Doctrine with Kimai 1.15.3 cause 503 errors

    Changes in Doctrine with Kimai 1.15.3 cause 503 errors

    First, I have to admit that I'm a bit lazy when it comes to updating the Kimai core – Plugins as soon as possible but not the core.

    Some days ago I decided to update Kimai from cough 1.15.1 to the latest version. And this is where things started to go down the drain. Some operations where performed once and then quitted with a 503 error. Clearing the Kimai cache allowed exactly one operation and then failed again.

    Same with API calls. The first request got a 200, the second one a 503.

    No PHP errors where thrown.

    I was able to duplicate the behaviour by just opening the calendar. First click worked, second quitted with a 503.

    I then reverted back to 1.15.1 and everything was back to normal. An update to 1.15.2 did work flawlessly, too.

    The errors came back when 1.15.3 was installed. Same behaviour as before.

    14 days later I decided to go deep down this rabbit hole.

    I installed a new Kimai instance, no data, no plugins. Version 1.15.2 worked without issues, 1.15.3 did show the exact behaviour as the "real" instance.

    I then started to copy folders from the vendor folder over from 1.15.2 to 1.15.3 and long story short (or two days later)… Something seems to be badly wrong with the doctrine ORM.

    If I replace the file

    /vendor/doctrine/orm/lib/Doctrine/ORM/Query.php

    with the version from Kimai 1.15.2 (and only this one file) everything is running back stable again.

    Something must have changed which now causes trouble. I checked the ORM repository but couldn't find any issue that sounds familiar.

    I did not dig any deeper, but I think it might be something related to MySQL 5.7 – but I'm not sure.

    Just wanted to let you know that there's something going on – I stopped digging deeper at this point.

    Kimai 1.16.2 seems to be running fine with the replaced Query.php.

    Additional context

    • PHP version: 7.4
    • MySQL 5.7
    bug waiting for feedback 
    opened by pbksol 34
  • Cannot login after Synology DSM update (critical error)

    Cannot login after Synology DSM update (critical error)

    Describe the bug The installation was working properly, I tried to import an old database from Kimai 0.9, which did not work because of the version. I started to load and create the customers, projects, users manually. After I finished the day I closed it and next day I got the "critical error" message. I though I created an error with my import trials (despite unsuccessful). I whipped the DB with the commands: bin/console doctrine:schema:drop --force &&
    bin/console doctrine:schema:create &&
    After that I started again from zero and created some users and projects. Today as I want to log in I receive again the "critical error".

    To Reproduce Steps to reproduce the behavior:

    1. Create a new user from scratch.
    2. Create new users, projects, etc.
    3. Log out.
    4. Log in again.

    Logfile

    [prod after drop db 04-06.log](https://github.com/kevinpapst/kimai2/files/4728541/prod.after.drop.db.04-06.log)
    
    

    Screenshots grafik

    Desktop/Smartphone Please complete the following information if this seems to be a frontend issue:

    Device: Synology DS718+
    OS: DSM 6.2.2-24922 Update 4
    Browser Firefox 76.0.1 (64-Bit)
    

    Additional context Add any other context about the problem here.

    Kimai version 2
    PHP version 7.3
    -DB MariaDB v10
    -phpMyAdmin (PHP 5.6)
    
    support 
    opened by mauricebar 30
  • QUESTION: Graceful way to check for several things on startup

    QUESTION: Graceful way to check for several things on startup

    @kevinpapst I was trying to find a question template for this, as this is not a bug. I am currently working on an nginx-based docker image. However, I want to make the deployment as hassle free as possible, controlled by the docker ENV vars.

    I am using a base image that allows me to specify a number of entry point scripts (to be executed on launch of the container). Everything works, but after the first time, as the script tries to create schema, migrations, admin user (specified in docker-compose) it is obviously going to fail. The container works just fine, though.

    However, the schema:create command clearly specifies "do not run this on a production environment", I would assume because it might break it?

    Therefore, I am looking for a graceful way to check for:

    • Database exists.
    • Update schema exists.
    • Migration is up to date.
    • First superadmin (local) user exists.

    This, using preferable a simple bash script, but I am open to a php script as well.

    I think I have also found a way to send the output of the current log (env/prod) to the stdout. The base image I have uses supervisor. If I put the tail of of the log into a supervisor job, it will live for the duration of the container, and will display wherever the container's stdout is shown.

    feature request 
    opened by bkraul 30
  • Allow negative fixed amounts

    Allow negative fixed amounts

    Is your feature request related to a problem? Please describe. Often, customers have credit with me. In order to bill this correctly, it would be easy to add entries with negative fixed amounts

    Describe the solution you'd like Allow negative fixed amounts when adding an entry

    Describe alternatives you've considered Budget only shows, but does not affect billing or sums

    wontfix invoice 
    opened by praul 28
  • Poor UX:  Create time dialog cancel /close buttons on opposing sides

    Poor UX: Create time dialog cancel /close buttons on opposing sides

    Describe the bug I don't care of you want to put the save / confirm buttons on the left or on the right, but you shouldn't have the date drop drop down cancel button on the left and the dialog close button on the right.

    To Reproduce

    1. Click the play button at the top to start tracking time
    2. Notice the dialog has button order Save / Close
    3. Click on the from date input field
    4. See button order Cancel / Confirm
    bug 
    opened by kwhat 0
  • Automatically redirect to SAML

    Automatically redirect to SAML

    Is your feature request related to a problem? Please describe. I use SAML only, with the login form disabled in System > Settings. It works perfectly, but the user must click the Login with <SAML IdP> link to start the login process.

    Describe the solution you'd like The login page automatically redirects to the Login with <SAML IdP> link if the login form is disabled and SAML is configured.

    Describe alternatives you've considered An option in the Authentication section of System > Settings to automatically redirect to the SAML Identity Provider when visiting the login page.

    feature request 
    opened by Mortein 1
  • Reporting documentation not precise regarding project report permissions.

    Reporting documentation not precise regarding project report permissions.

    Describe the bug According to the documentation (https://www.kimai.org/documentation/reporting.html#projects), to access projects reporting, two permissions are required:

    • budget_project
    • view_reporting

    I have user, that belong to role with "view_reporting", but no "budget_project" permission. This person is able to access project's reporting (including financial data). I believe it's a not expected behaviour (at least according to the documentation).

    After investigating permission documentation (https://www.kimai.org/documentation/permissions.html), I noticed that "time_team_project" also grants access to project reporting. This is bit confusing, and it's easy to overlook for starters.

    security documentation reporting 
    opened by jsobiecki 5
  • Add

    Add "Go to today" button in date/time picker

    Since we are often copying/adding/editing entries from/for the past, a button such as "Go to today" in the date/time picker would be very helpful.

    feature request 
    opened by Sarmingsteiner 0
  • Checkbox Hide activity breakdown and Non Billables from Reporting

    Checkbox Hide activity breakdown and Non Billables from Reporting

    Is your feature request related to a problem? Please describe. Personally, I use Kimai to track my Working Time for my company only. My company is not entitled to in depth breakdowns of this, but I maintain this for personal reasons and discussions. However, I need to enter durations worked on projects into our internal tool, which is only on project level. This creates a lot of visual moving between the reporting chart.

    I only use Weekly view for one user, but potentially others would benefit on all pages.

    Describe the solution you'd like I'd like two options:

    1. Checkbox Show/Hide Activity Breakdown
    2. Dropdown Billable Yes / No / All

    First Checkbox modifies view to only show projects, and on demand the activity breakdown.

    Second Dropdown includes the matching records in the aggregates.

    feature request reporting good first issue 
    opened by Crumar 0
Releases(1.25.0)
  • 1.25.0(Sep 20, 2022)

    Upgrade Kimai - Install Kimai - Docker

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Enhancements

    • Configurable calendar drag and drop behavior (#3537)
    • Added keyboard shortcuts (#3536)
    • Translations update from Hosted Weblate (#3523) (#3532) (#3542)
    • Make project and customer available in export summaries (#3543)

    Fixed bugs

    • Prepare release 1.25.0 (#3531)

    Thanks to all contributors ❤️

    Involved in this release: @kevinpapst and @weblate

    Source code(tar.gz)
    Source code(zip)
  • 1.24.0(Sep 4, 2022)

    Upgrade Kimai - Install Kimai - Docker

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Enhancements

    • Translations update from Hosted Weblate (#3496)
    • Added inline disposition for PDF previews (#3486)
    • Allow to hide zero tax rows via plugin (#3484)
    • Support custom fonts in PDF via twig templates (#3509)

    Fixed bugs

    • fix datetime modify to now (#3511)
    • fix quick entry during grace period matching midnight (#3504)

    Thanks to all contributors ❤️

    Involved in this release: @Jelle-S, @LiaraAlis, @kevinpapst and @weblate

    Source code(tar.gz)
    Source code(zip)
  • 1.23.1(Sep 1, 2022)

    Upgrade Kimai - Install Kimai - Docker

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Enhancements

    • fix unit test failing on month borders (#3494)
    • Prevent invoice template update (#3493)

    Fixed bugs

    • bump version 1.23.1 (#3499)

    Thanks to all contributors ❤️

    Involved in this release: @kevinpapst

    Source code(tar.gz)
    Source code(zip)
  • 1.23.0(Aug 30, 2022)

    Upgrade Kimai - Install Kimai - Docker

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Enhancements

    • Translations update from Hosted Weblate (#3482)
    • Order quick entries by project name (#3488)
    • Translations update from Hosted Weblate (#3462)

    Fixed bugs

    • fixed multiple budget validation checks (#3489)
    • do not require user_preference permission when creating new user (#3474)

    Thanks to all contributors ❤️

    Involved in this release: @kevinpapst and @weblate

    Source code(tar.gz)
    Source code(zip)
  • 1.22.1(Aug 1, 2022)

  • 1.22.0(Aug 1, 2022)

    Upgrade Kimai - Install Kimai - Docker

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Enhancements

    • Translations update from Hosted Weblate (#3436)
    • rebuild assets for croatian (#3451)
    • Croatian translation 20220730 (#3447)
    • code improvements (#3438)
    • show total hourly rate in detail pages (#3441)
    • saml: allow to keep existing roles on login (#3440)
    • allow to restrict usage of global activities for projects (#3437)
    • link customer, project and activity in invoice listing (#3428)
    • total sums for duration and rate in invoice and export preview (#3431)
    • Project date-range report: allow budget-type independent project-listing (#3430)

    Fixed bugs

    • disable create-invoice links after click (#3452)

    Thanks to all contributors ❤️

    Involved in this release: @kevinpapst, @milotype and @weblate

    Source code(tar.gz)
    Source code(zip)
  • 1.21.0(Jul 13, 2022)

    Upgrade Kimai - Install Kimai - Docker

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Enhancements

    • Budget graph in project details (#3406)
    • Translations update from Hosted Weblate (#3399)
    • allow to filter for canceled invoices (#3415)
    • re-style overlapping border (#3400)
    • new command to delete empty translations (#3392)
    • Translations update from Hosted Weblate (#3356)
    • Suppress deprecation notice, convert route param (#3391)
    • require a language for invoice templates (#3387)
    • allow to set api token when creating user via API (#3380)
    • Export invoice metafields (#3366)

    Fixed bugs

    • fix en_GB format definition (#3383)
    • remove currency symbol if unknown (#3381)
    • reoad permissions page after role was created (#3377)
    • removed invalid destroy calls to daterangepicker (#3371)
    • do not copy description if restarting via calendar via drag&drop (#3406)

    Infrastructure

    • added release drafter workflow (#3362)

    Thanks to all contributors ❤️

    Involved in this release: @kevinpapst

    Source code(tar.gz)
    Source code(zip)
  • 1.20.4(Jun 14, 2022)

  • 1.20.3(Jun 11, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Implemented enhancements:

    • Added new permission to separate time and money budget #3352
    • Support pdfContext for PDF invoice templates #3340
    • Hide user switcher in calendar if there is only one user to choose #3340
    • Mark invoices as exported by default #3340
    • Make quick entry responsive for mobile-only users #3340
    • Updated composer packages #3340
    • Translations update from Weblate #3339

    Fixed bugs:

    • Fix edit timesheet link #3340
    • Fix drag & drop creates record for wrong user #3340
    • Fix search with multiple bindings #3340
    • Fix serialization deprecation warning #3340
    • Fix duration calculation for fixed rate entries #3340
    • Fix checkbox for horizontal forms #3340
    Source code(tar.gz)
    Source code(zip)
  • 1.20.2(May 31, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Implemented enhancements:

    • added invoice text field to project and activity #3335
    • added css class for custom fields columns on listing page #3328, #3336
    • added css classes in many forms for simpler customization via custom css #3320
    • Translated using Weblate #3321, #3329
    • code cleanup #3338

    Fixed bugs:

    • fix calendar view for users without drag & drop but with user-switch #3320
    • pre-select an option if it is the only available one worked only on every second click #3337
    Source code(tar.gz)
    Source code(zip)
  • 1.20.1(May 21, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Implemented enhancements:

    • improved timesheet calculator with changesets and priority #3317
    • helper method to reset timesheet rates #3317
    • calculate and include exported stats (e.g. available in export templates) #3317
    • added hourly rate column to timesheet listing #3317
    Source code(tar.gz)
    Source code(zip)
  • 1.20(May 18, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 is end-of-life: you need to update now
    • PHP 7.4, PHP 8 and PHP 8.1 are supported

    Implemented enhancements:

    • Allow switching user displayed in calendar #3314, #1746, #1067
    • Permission check for "mark-as-exported" checkboxes #3313
    • Prevent bookings with same start / stop time #3304, #2342
    • Added weekly-hours setting "how many weeks in the past for recent activities" #3296
    • Added weekly-hours setting "minimum number of rows" #3297
    • Added en_GB locale with dd/mm/yyyy format #3311
    • Translated using Weblate #3310, #3276

    Fixed bugs:

    • Unify extension check (add xsl to doctor) https://github.com/kevinpapst/kimai2/discussions/3295
    • Fix updating one system-config section redirects to all sections
    • edit_export_other_timesheet #1473
    Source code(tar.gz)
    Source code(zip)
  • 1.19.7(May 7, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP <= 7.3 might work: EOL, you need to update now!
    • PHP 7.4, PHP 8 and PHP 8.1 supported

    Implemented enhancements:

    • re-use the pattern for optgroup titles (e.g. project titles in activity dropdown)
    • update all dependencies
    • pre-select an option if it is the only available one (projects and activities)
    • added command to stop all active timesheets

    Fixed bugs:

    • fix weekend highlight in all reports if "Sunday is the first day of the week"
    • prevent method on null in reporting
    Source code(tar.gz)
    Source code(zip)
  • 1.19.6(Apr 29, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP <= 7.3 might work: EOL, you need to update now!
    • PHP 7.4, PHP 8 and PHP 8.1 supported

    Fixed bugs:

    • fix saving in quick-entry form with empty rows
    • fix totals cell alignment in new customer report
    • reactivate phpstan bleeding edge rules after update
    Source code(tar.gz)
    Source code(zip)
  • 1.19.5(Apr 26, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP <= 7.3 might work: EOL, you need to update now!
    • PHP 7.4, PHP 8 and PHP 8.1 supported

    Implemented enhancements:

    • Allow changing calendar entry title #3272
    • Added sort field for export items #3265
    • Trigger event if multiple invoices were created #3265
    • Provide entries as variables in twig invoice templates #3265
    • Added symfony-cli to check for security issues in packages #3265
    • Translations update from Hosted Weblate #3267 - thanks @weblate @shinkuroshi @xiexieqing

    Fixed bugs:

    • fixed: customer grouping and project ordering in new "customer, project, month, user" report #3265
    • fixed: billable not respected in api post request #3275 - thanks @j0hannesr0th
    • fixed: duplicate flash error, e.g. in invoice #3265
    • fixed: build translation id from resname, not from source #3265
    • fixed: order of export for personal timesheets #3064
    Source code(tar.gz)
    Source code(zip)
  • 1.19.4(Apr 19, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work: EOL, you need to update now!
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 should work: untested - feedback appreciated

    Implemented enhancements:

    • Login redirects to homepage if already being logged-in #3255
    • Added new report: month grouped by project, activity and user #3255
    • Translations update from Hosted Weblate #3263

    Fixed bugs:

    • Fix budget validation for entries that are moved to another moth #3255
    • Invoice: fix amount should be decimal if decimal template is used #3255
    Source code(tar.gz)
    Source code(zip)
  • 1.19.3(Apr 5, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work: EOL, you need to update now!
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 should work: untested - feedback appreciated

    Implemented enhancements:

    • added interface for saml config #3249
    Source code(tar.gz)
    Source code(zip)
  • 1.19.2(Apr 4, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work: EOL, you need to update now!
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 should work: untested - feedback appreciated

    Implemented enhancements:

    • allow arbitrary string length for system configurations #3243
    • Translated using Weblate #3235
    • improved logic to extract configuration from string #3244

    Fixed bugs:

    • fixed null issue in project dropdown with activated order number #3244
    Source code(tar.gz)
    Source code(zip)
  • 1.19.1(Mar 30, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work: EOL, you need to update now!
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 should work: untested, especially LDAP

    Implemented enhancements:

    Fixed bugs:

    • Billable of time-records created from recent acitivities in calendar view #3218
    • fix billable calculation on timesheet restart #3225 (kevinpapst)
    • fix relative times in budget calculation in export #3216 (kevinpapst)
    Source code(tar.gz)
    Source code(zip)
  • 1.19(Mar 21, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work: EOL, you need to update now!
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 should work: untested, especially LDAP

    Implemented enhancements:

    • Added event to extend the detail pages from plugins #3209
    • Default option of the "Billable" attribute for each defined activity #3200, #2594
    • Kimai API billable switch missing #2705
    • Translations update from Hosted Weblate #3208, #3194
    • Better default button label for non-translated renderer #3204

    Fixed bugs:

    • Avatar size differences for image URL / no image URL set #3180
    • SVG avatars not shown in top bar #3163
    • defensive javascript #3210
    • Fixed truncated comments: customer, project, activity, task #3204
    • Fixed avatar image size when using images #3204, #3163, #3180
    Source code(tar.gz)
    Source code(zip)
  • 1.18.2(Mar 11, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work (EOL & untested)
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 does not support LDAP yet, other problems might exist

    Implemented enhancements:

    • PDF invoice templates #3190
      • Improved font family (remove unused font)
      • Moved customer number and order number in default template to different location
      • Improved freelancer pdf invoice template: added customer number, moved some fields around
    • Sort users by display-name in users reports #3190
    • Improve console version output #3190
    • Translations using Weblate #3181

    Fixed bugs:

    • Fix: fix select2 and dropdown width for quick-entry form #3188
    • Fix: fix empty string issue in csv export- fixes #3189
    • Fix: deprecations with php 8 (twig with sort filter) #3190
    • Fix: missing custom translations in modal dialogs #3190
    Source code(tar.gz)
    Source code(zip)
  • 1.18.1(Feb 28, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work, but untested
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 does not support LDAP yet, other problems might exist

    Implemented enhancements:

    • Activated language Persian
    • Added and activated language Norwegian Bokmål - thanks @comradekingu
    • Added comment to customer/project/activity entity and collections API

    Fixed bugs:

    • Fix: translation file extensions / activate missing translations in de_CH, pt_BR, zh_CN
    • Fix: title pattern when description is included in customer/project/activity dropdown
    Source code(tar.gz)
    Source code(zip)
  • 1.18(Feb 27, 2022)

    Full Changelog

    PHP Version compatibility:

    • PHP 7.3 might work, but untested
    • PHP 7.4 and PHP 8 supported
    • PHP 8.1 does not support LDAP yet, other problems might exist

    Implemented enhancements:

    • Reporting: choose data-types and new user per year #3155 (kevinpapst)
    • Reporting: export user-list reports in excel #3154 (kevinpapst)
    • Configure display of customer, project and activity in dropdown lists #3151 (kevinpapst)
    • Translations update from Hosted Weblate #3105, #3174, #3171, #3160
    • allow to change password interactively on the console (prevents bash history leaks)
    • DEV: unify access to custom fields #3106 (kevinpapst)
    • DEV: added explicit classes for widgets #3170 (kevinpapst)
    • DEV: bump PHPUnit to version 9, removed PHP 7.3 from Github actions and activate PHP 8.1
    • DEV: added twig helper for markdown renderer with header support

    Fixed bugs:

    • Decimal format in print export doesn't work when language is set to German (Austria) #3172
    • xlsx export: change SUM function to SUBTOTAL function - fix #3165 #3166 (fredyb)
    • fix negative sum display in excel export
    • use proper cell format for report exports #3178 (kevinpapst)
    • Missing translation files #3173
    Source code(tar.gz)
    Source code(zip)
  • 1.17.1(Jan 25, 2022)

    Full Changelog

    Implemented enhancements:

    • Translations update from Hosted Weblate (#3093)
    • Added invoice delete event (#3096)

    Fixed bugs:

    • Fix admin access for customer in invoice module (#3095)
    • Improve team member handling (#3097)
    • Can't add user to existing team (#2921)
    • [API] PATCH team members removes existing ones (#2975)
    Source code(tar.gz)
    Source code(zip)
  • 1.17(Jan 23, 2022)

    Full Changelog

    Implemented enhancements:

    Fixed bugs:

    • Import from Kimai v1: This timesheet is already exported #3061
    Source code(tar.gz)
    Source code(zip)
  • 1.16.10(Jan 3, 2022)

    Full Changelog

    Enhancements:

    • weekly hours form: allow to configure the amount of recent activity rows in an empty week #3026
    • added comment field to invoice #3045
    • improve export permission checks #3027
    • Translations update from Hosted Weblate #3032

    Fixed bugs:

    • fix working time widget (dashboard) with "first day of week" = sunday #3047
    Source code(tar.gz)
    Source code(zip)
  • 1.16.9(Dec 15, 2021)

    Full Changelog

    Enhancements:

    • Translations update from Weblate #3013

    Fixed bugs:

    • Fix projects are not filtered after submit #3016
    • Fix invoice budget calculation #3024
    • Fix "filter user timesheet" action display #3018
    Source code(tar.gz)
    Source code(zip)
  • 1.16.8(Dec 9, 2021)

  • 1.16.7(Dec 8, 2021)

    Full Changelog

    Enhancements:

    • new invoice template variables for budgets #3005
    • new command to work with translation files #2993
    • cleanup duplicate translation ids #3001
    • improve translation test #2998
    • prevent that lock files will be committed in PRs #2983 and #2992
    • translations update from Weblate #2951

    Fixed bugs:

    • fix selection of customer/project/activity in multi-step forms #2989
    • more csrf protection for invoice and search #2984 - thanks @Haxatron
    • fix invoice create and search #2990
    Source code(tar.gz)
    Source code(zip)
  • 1.16.6(Nov 29, 2021)

Owner
Kevin Papst
PHP Freelancer. Maintainer of Kimai time-tracking.
Kevin Papst
Doctrine type mappings for brick/date-time

brick/date-time-doctrine Doctrine type mappings for brick/date-time. Introduction This library provides type mappings to use brick/date-time objects s

Brick 6 Jun 20, 2022
A One-Time Secret integration with GLPI

One-Time Secret A GLPI One-Time Secret integration The problem How are you sending your passwords or secrets? Currently, there's no easy and secure wa

TICgal 3 Jun 12, 2022
A standalone DateTime library originally based off of Carbon

CakePHP Chronos Chronos aims to be a drop-in replacement for nesbot/carbon. It focuses on providing immutable date/datetime objects. Immutable objects

CakePHP 1.3k Sep 24, 2022
Laravel Angular Time Tracker is a simple time tracking application built on Laravel 5.2, Angular 2, and Bootstrap 3.

Laravel 5.2, Angular 2, and Bootstrap 3.3.* Time Tracker Laravel Angular Time Tracker is a simple time tracking application built on Laravel 5.2, Angu

Jeremy Kenedy 26 Mar 5, 2022
A Kimai 2 plugin, which send duration of cards to GitLab spend issues of timesheet.

GitLabBundle A Kimai 2 plugin, which send duration of cards to GitLab spend issues of timesheet. Installation First clone it to your Kimai installatio

LibreCode coop 8 Aug 31, 2022
PHP project for tracking Azure AD App Reg secrets about to expire, and (manually) tracking SSL certificates

CertExpiry Katy Nicholson https://katystech.blog/ Setup instructions etc available at: https://katystech.blog/2021/11/certexpiry/ PHP project for trac

Katy Nicholson 4 Sep 1, 2022
Date/Time Picker widget for Yii2 framework Based on Eonasdan's Bootstrap 3 Date/Time Picker

Yii2 Date/Time Picker Widget Date/Time Picker widget for Yii2 framework Based on Eonasdan's Bootstrap 3 Date/Time Picker Demo Since this is a part of

Yevhen Terentiev 8 Mar 14, 2022
PHP Client and Router Library for Autobahn and WAMP (Web Application Messaging Protocol) for Real-Time Application Messaging

Thruway is an open source client and router implementation of WAMP (Web Application Messaging Protocol), for PHP. Thruway uses an event-driven, non-blocking I/O model (reactphp), perfect for modern real-time applications.

Voryx 661 Sep 8, 2022
An issue tracking tool based on hyperf+reactjs for small and medium-sized enterprises, open-source and free, similar to Jira.

介绍 本项目以 actionview 为蓝本,使用 Hyperf 框架进行重写。 本项目为 Hyperf 框架的 DEMO 项目 原 ActionView 介绍 English | 中文 一个类Jira的问题需求跟踪工具,前端基于reactjs+redux、后端基于php laravel-frame

Gemini-D 13 Aug 22, 2022
An issue tracking tool based on laravel+reactjs for small and medium-sized enterprises, open-source and free, similar to Jira.

ActionView English | 中文 An issue tracking tool based on php laravel-framework in back-end and reactjs+redux in front-end, it's similar to Jira. You co

null 1.7k Sep 28, 2022
💰 Self-hosted personal finance tracking web app

FINANCE FINANCE is a simple yet powerful, self-hosted personal finance tracking web app with the ability to parse SMS transactions and generate very u

Saleem Hadad 136 Sep 16, 2022
This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception Tracking.

Tideways Middleware for Laravel Octane This package connects a Laravel Octance application with Tideways for PHP Monitoring, Profiling and Exception T

Tideways 7 Jan 6, 2022
Issue tracking application extending GitHub's issues and pull requests for the Joomla! project.

Requirements The issue tracker application requires a server running: PHP 7.2 or 7.3 PHP's ext/curl and ext/intl should also be installed MySQL 5.5.3

Joomla! 69 Jul 20, 2022
Quickly and easily preview and test your Magento 2 order confirmation page, without hacks or spending time placing new order each time

Preview Order Confirmation Page for Magento 2 For Magento 2.0.x, 2.1.x, 2.2.x and 2.3.x Styling and testing Magento's order confirmation page can be a

MagePal :: Magento Extensions 71 Aug 12, 2022
Damn Vulnerable Web Services is an insecure web application with multiple vulnerable web service components that can be used to learn real world web service vulnerabilities.

Damn Vulnerable Web Services is an insecure web application with multiple vulnerable web service components that can be used to learn real world web service vulnerabilities.

Sam Sanoop 399 Sep 9, 2022
Online web application developed in PHP using Laravel framework for managing real-time kitchen orders in a restaurant.

Online web application developed in PHP using Laravel framework for managing real-time kitchen orders in a restaurant. It allows, through a web panel, real-time communication between chefs and waiters about the status of orders.

Fernando 1 Feb 10, 2022
Flexible and rock solid audit log tracking for CakePHP 3

AuditStash Plugin For CakePHP This plugin implements an "audit trail" for any of your Table classes in your application, that is, the ability of recor

José Lorenzo Rodríguez 69 Nov 27, 2021
Eventum Issue Tracking System

Eventum is a user friendly and very flexible issue tracking system, that can be used by a support department to track incoming technical support requests, or by a software development team to quickly organize tasks and bugs.

Eventum Issue tracking system 149 Sep 15, 2022
undefined is an issue tracking product that allows agile project management.

undefined is an issue tracking product that allows agile project management. Our goal is to make work life simpler, more efficient and stress-free. In

Osvaldas Ulevičius 3 Jun 27, 2021