Version 1.2.52 (April 4, 2026)
------------------------------

* fix: revoke public tokens for inactive users
* fix: use timing-safe comparison for token validation
* fix: validate task ownership before applying property changes
* fix: enforce visibility controls for public and unprivileged access
* fix: use parameterized queries in task finder and iCal

Version 1.2.51 (March 7, 2026)
------------------------------

* test: upgrade to phpunit 12
* fix(css): Fix accessibility issue of insufficient text to background contrast
* fix: validate user external ID column
* fix: restrict invite signup input to expected fields only
* fix: prevent unsafe deserialization in database session handler (CWE-502)
* fix: check file attachment ownership before deletion
* fix: add permission checks in API procedures
* fix: add followRedirects parameter to HTTP client methods to prevent SSRF bypasses
* feat: add SSRF protection for webhook notifications
* build(deps): bump pimple/pimple from 3.6.1 to 3.6.2
* build(deps): bump docker/setup-qemu-action from 3 to 4
* build(deps): bump docker/setup-buildx-action from 3 to 4
* build(deps): bump docker/metadata-action from 5 to 6
* build(deps): bump docker/login-action from 3 to 4
* build(deps): bump docker/build-push-action from 6 to 7
* build(deps): bump actions/upload-artifact from 6 to 7

Version 1.2.50 (February 7, 2026)
---------------------------------

* test: bump phpunit version
* fix: add missing authorization checks
* fix: enforce plugin installer check in PluginController actions
* fix: enable Parsedown safe mode for Markdown rendering
* fix: add missing project authorization checks in controllers
* fix: add CSRF protection for project role changes and enforce JSON content type
* chore: use php-cs-fixer docker image in GitHub workflow instead of Composer
* build(deps): bump pimple/pimple from 3.5.0 to 3.6.1

Version 1.2.49 (January 6, 2026)
--------------------------------

* fix(ldap): ensure LDAP placeholders are escaped
* fix: restore Ctrl+Enter submission on the task creation form
* feat(locale): update translations
* feat: prevent protocol-relative URL redirects after login
* feat: block private network access for external web link (configurable)
* feat: add `TRUSTED_PROXY_NETWORKS` config option
* ci: add workflow to mirror GitHub repo to Codeberg
* chore: remove outdated `tests/Dockerfile`
* chore: regenerate autoload Composer files
* build(deps): bump alpine from 3.22 to 3.23
* build(deps): bump actions/upload-artifact from 4 to 6
* build(deps): bump actions/checkout from 5 to 6

Version 1.2.48 (October 18, 2025)
--------------------------------

* fix: handle Windows-style paths in `sanitize_path` function
* feat(locale): added missing German translation phrases
* feat(locale): added Arabic translation
* feat(api): add board, rss and ical public links to the API response
* feat: display sub-tasks completion in numbers (x/y) alongside percentage
* feat: add basic support for right-to-left (RTL) languages
* chore: update .gitattributes to ignore additional configuration files
* build(deps): bump actions/setup-python from 5 to 6
* build(deps): bump actions/checkout from 4 to 5

Version 1.2.47 (August 11, 2025)
--------------------------------

* refactor: add namespace to test files
* fix: the `$escape` parameter must be provided in PHP 8.4 for CSV functions
* fix: sanitize and validate uploaded files path
* fix: do not load `RememberMeAuth` provider when `REMEMBER_ME_AUTH` is `false`
* fix: avoid PHP warning when external user creation is disabled
* feat!: remove file cache driver to avoid using `unserialize()`
* feat!: ignore legacy events serialized with PHP due to potential security issues
* feat: add new actions: `TaskAssignCurrentUserColumnIfNoUserAlreadySet` and `TaskAssignToUserOnCreationInColumn`
* feat: Add new `pdf()` method in `Core\Http\Response`
* ci: run `php-cs-fixer` on GitHub Actions
* ci: remove unnecessary labels from issue templates
* chore: replace deprecated `gh-cli` feature source in devcontainer configuration

Version 1.2.46 (June 22, 2025)
------------------------------

* refactor: update return type in filter apply methods
* fix(security): prevent potential `Host` header injection via `SERVER_NAME`
   -  You must specify the Kanboard application URL explicitly to generate correct URLs from email notifications. The default is `http://localhost/`.
* fix: make various PHP 8.x compatibility changes
* fix: avoid `Implicitly nullable parameter declarations` errors in PHP 8.4
* feat: validate plugin archive URL before downloading
* feat: use PHP 8.4 in the official Docker image
* feat: show CAPTCHA on login form regardless of user existence
* feat: add new option to enable notifications by default for new users
* feat: add healthcheck endpoint `healthcheck.php`, and new Docker Compose files for MariaDB, Postgres, and SQLite
* feat: add `TRUSTED_PROXY_HEADERS` config option
    - If you use a reverse proxy, you can now specify which headers to trust for the client IP address. Nothing is trusted by default.
* docs: add `CONTRIBUTING.md` file
* ci(docker): avoid using `set-output` deprecated command
* chore!: PHP 8.1 is now the minimum version supported
    - **!! PHP 7.4 is no longer supported !!**
* chore: update `docker-compose.yml` sample file to the latest specs
* chore: remove obsolete `Vagrantfile`
* build(deps): bump Alpine Docker image from 3.21 to 3.22

Version 1.2.45 (May 12, 2025)
-----------------------------

* refactor: reuse existing helpers in tasks import form
* fix(filter): handle `null` input in the `Lexer` class
* fix(docker): legacy key/value format with whitespace separator should not be used
* fix(api): allow and validate creator ID assignment in task creation
* feat(routes): add `view` routes for project and task file browsing
* feat(locale): update all language files using machine translation
* feat(api): add priority fields to `createProject` and `updateProject` procedures
* feat: allow attaching screenshots and files when creating a task
* feat: add task title to overdue notification title
* ci: replace GitHub Issue Markdown templates with YAML forms
* ci: remove broken SQL Server unit tests pipeline
* ci: improve pull request template
* ci: add commit linter to validate conventional commit messages in pull requests

Version 1.2.44 (March 21, 2025)
-------------------------------

* fix: prevent internal task titles from wrapping under the dropdown menu icon
* feat(locale): update Greek and French translations
* feat: display tag color squares next to their names in project and global settings
* feat: enable bulk addition/removal of internal links
* feat: provide an option to add tags without replacing existing ones during bulk operations

Version 1.2.43 (December 18, 2024)
----------------------------------

* fix: verify the session hasn't expired before returning data
* fix: avoid PHP 8.4 deprecation notices in third-party libraries
* fix: avoid Composer warnings regarding PSR compatibility
* feat(locale): add missing Brazilian Portuguese translations
* ci: run GitHub Actions tests with `ubuntu-24.04`
* chore: don't `export-ignore` the ChangeLog
* build(deps): bump `symfony/service-contracts` from `2.5.3` to `2.5.4`
* build(deps): bump `symfony/event-dispatcher-contracts` from `2.5.3` to `2.5.4`
* build(deps): bump `symfony/deprecation-contracts` from `2.5.3` to `2.5.4`
* build(deps): bump `alpine` from `3.20` to `3.21`

Version 1.2.42 (November 10, 2024)
----------------------------------

* fix: validate translation filename before loading locales
* fix: avoid path traversal in `FileStorage`
* feat: add Peruvian Sol to the list of currencies
* build(deps): bump `symfony/finder` from `5.4.43` to `5.4.45`
* build(deps-dev): bump `symfony/stopwatch` from `5.4.40` to `5.4.45`

Version 1.2.41 (October 25, 2024)
---------------------------------

* feat: add new plugin hooks in project forms
* feat: add option to add BOM at the beginning of CSV files (required for Microsoft Excel)
* feat: validate app config form values
* feat: add cancel button on 2FA code validation screen
* fix: add CSRF check to the logout endpoint
* fix: add HTML escaping when displaying exception message
* fix: add URL validation for external task links
* fix: correct broken migration logic for Sqlite

Version 1.2.40 (September 25, 2024)
-----------------------------------

* build(deps): bump symfony/finder from 5.4.42 to 5.4.43
* chore: add php83-xmlwriter package to the Docker image
* ci: update GitHub pull-request template
* fix: avoid PHP error if no subtask in progress is found
* fix: avoid potential XSS and HTML injection in comment replies
* fix: prevent duplicated columns when enabling per-swimlane column task limits
* fix(api): check comment visibility in API procedures
* fix(api): verify comment ownership in API procedures
* fix(mssql): escape identifiers in timesheet queries
* fix(mssql): use ANSI OFFSET/FETCH syntax for pagination queries
* fix(test): use explicit ORDER BY for queries returning multiple rows
* test: add unit tests for Subtask Time Tracking query methods
* test: ensure pagination produces correct chunks

Version 1.2.39 (August 18, 2024)
--------------------------------

* fix: remove CSS which caused responsive issues on mobile
* fix: incorrect template condition that set the username field to read only for remote users
* fix: tasks count across swimlanes was incorrect
* fix: avoid warning from libpng when loading PNG image with incorrect iCCP profiles
* feat: improve column header task counts
* feat: add `apple-mobile-web-app-capable` meta tag
* build(deps): bump `symfony/finder` from `5.4.40` to `5.4.42`

Version 1.2.38 (July 20, 2024)
------------------------------

* fix: avoid browser caching issue when showing file attachments
* fix: comments visibility was not taken into consideration on event activities page
* fix: send comment via email was broken due to missing comment visibility logic implemented in v1.2.36
* feat(locale): update Greek translations
* feat(locale): update Italian translations
* build(deps): bump `symfony/console` from `5.4.40` to `5.4.41`
* build(deps): bump `docker/build-push-action` from `5` to `6`

Version 1.2.37 (June 5, 2024)
-----------------------------

* Add CSRF check and remove `project_id` form value for `addUser` and `addGroup` actions ([CVE-2024-36399](https://github.com/kanboard/kanboard/security/advisories/GHSA-x8v7-3ghx-65cv))
* Update `symfony/*` dependencies
* Update Docker image to Alpine 3.20
* Update Russian and Hungarian translation
* Add `color_id` argument to `createCategory` and `updateCategory` API procedures
* Add link to create a comment before the list
* Fix: unable to create comments with "c" shortcut or "Add a comment" menu

Version 1.2.36 (May 2, 2024)
----------------------------

* Add comments visibility
* Add explicit int casting to avoid PHP 8 TypeError when having empty automatic action parameters
* Add new config option `DASHBOARD_MAX_PROJECTS`
* Add reply feature to comments
* Fix search bar layout when adding more buttons via third-party plugins
* Introduce a Git hook to automatically update `version.txt` during Git checkout
* Performance improvements:
    * Don't count closed tasks when rendering the board
    * Force the use of the cache when there is no custom roles
* Use unique plugin name instead of plugin title for plugin registry logic
* Update dependencies

Version 1.2.35 (February 2, 2024)
---------------------------------

* Add missing HTML escaping when showing group membership in user profile ([CVE-2024-22720](https://github.com/kanboard/kanboard/security/advisories/GHSA-8p3h-v7fc-xppj))
* Update Dutch translation
* Update Bulgarian translation
* Bump `phpunit/phpunit` from `9.6.15` to `9.6.16`
* Bump `symfony/console` from `5.4.32` to `5.4.34`

Version 1.2.34 (December 13, 2023)
----------------------------------

* Upgrade Docker image to Alpine 3.19 and PHP 8.3
* API: Avoid PHP notice when searching for a project name that does not exist
* Update Bulgarian translation
* Bump `symfony/console` from `5.4.28` to `5.4.32`
* Bump `phpunit/phpunit` from `9.6.13` to `9.6.15`

Version 1.2.33 (October 15, 2023)
---------------------------------

* Do not close modals when clicking on the background
* Add Bulgarian translation
* Update Ukrainian and Russian translations
* Show the two factor form in the middle of the screen like the login form does
* Do not override the `creator_id` with the current logged user if the task is imported
* Add basic Dev Container configs
* Add adaptive SVG favicon and more SVG variants:
    * See https://web.dev/building-an-adaptive-favicon/
    * Added more variant of the original Inkscape icon:
        - Text SVG
        - Vectorized text path SVG
        - Optimized SVG icon
* Remove `project_id` from task links (A few were missed in #4892)
* Remove unused and invalid method in `ProjectModel`
* Update `phpunit/phpunit` and `symfony/*` dependencies
* Update vendor folder

Version 1.2.32 (July 11, 2023)
------------------------------

* Fix unexpected EventDispatcher exception in cronjob and during logout
* Integration Tests: Run `apt update` before installing Apache
* Automatic action `TaskMoveColumnClosed` does not log column movement
* Tweak Sqlite connection settings to reduce database locked errors
* Bump `phpunit/phpunit` from `9.6.9` to `9.6.10`

Version 1.2.31 (July 3, 2023)
-----------------------------

Security Fixes:

- [CVE-2023-36813: Avoid potential SQL injections without breaking compatibility with plugins](https://github.com/kanboard/kanboard/security/advisories/GHSA-9gvq-78jp-jxcx)

Other fixes and updates:

- Run tests with PHP 8 on GitHub Actions
- Bump Symfony dependencies
- Update Composer dependencies to be able to run tests with PHP 8.2
- Add `/usr/bin/php` symlink in the Docker image
- Replace usage of `at()` matcher with alternatives in unit tests
- Adjust plugin directory test case to work on released versions
- Fix incorrect background dynamic property in captcha library
- Update translations

Version 1.2.30 (June 2, 2023)
-----------------------------

Security Fixes:

- [CVE-2023-33956: Parameter based Indirect Object Referencing leading to private file exposure](https://github.com/kanboard/kanboard/security/advisories/GHSA-r36m-44gg-wxg2)
- [CVE-2023-33968: Missing access control allows user to move and duplicate tasks to any project in the software](https://github.com/kanboard/kanboard/security/advisories/GHSA-gf8r-4p6m-v8vr)
- [CVE-2023-33969: Stored XSS in the Task External Link Functionality](https://github.com/kanboard/kanboard/security/advisories/GHSA-8qvf-9847-gpc9)
- [CVE-2023-33970: Missing access control in internal task links feature](https://github.com/kanboard/kanboard/security/advisories/GHSA-wfch-8rhv-v286)

Other Fixes:

- Avoid PHP warning caused by `session_regenerate_id()`
- Avoid CSS issue when upgrading to v1.2.29 without flushing user sessions

Version 1.2.29 (May 23, 2023)
-----------------------------

* Avoid potential clipboard based cross-site scripting ([CVE-2023-32685](https://github.com/kanboard/kanboard/security/advisories/GHSA-hjmw-gm82-r4gv))
* Upgrade Docker image to PHP 8.2 and Alpine 3.18
* Add themes support: dark, light and automatic mode
* Fix broken "Hide this Column" feature
* Do not close modals when clicking on the background if the form has changed
* Fix incorrect route for "My Activity Stream"
* Fix incorrect parameter encoding when using URLs rewriting
* Add support for task links in Markdown headings
* Handle 413 responses from Nginx when uploading files too large
* Restore all previously loaded translations when sending user notifications
* Regenerate session ID after successful authentication
* Use `SESSION_DURATION` option to define the session lifetime stored in the database
    - The option `SESSION_DURATION` is used to define the cookie lifetime.
    - With this change, Kanboard will try to use first `SESSION_DURATION` instead of the
    default `session.gc_maxlifetime` value.
* Bump `phpunit/phpunit` from `9.6.6` to `9.6.8`

Version 1.2.28 (April 8, 2023)
------------------------------

* Trigger `EVENT_MOVE_COLUMN` event when moving task to another swimlane
* Allow moving closed tasks when using the API
* Duplicate external links when duplicating tasks
* Add support for comparison operator to priority filter
* Prevents users to convert subtaks to tasks when custom role does not allow it
* Avoid deprecation messages when sending an email with PHP 8.2
* Declare most common routes to have nice URLs
* Improve wording of bulk action modal to move tasks position
* Allow closing modals by clicking on the background
* Improve wording of the menu to close all tasks in a given column/swimlane
* Fix bug that prevent reordering subtasks after changing the status
* Bump version of `phpunit/phpunit`, `symfony/stopwatch`, and `symfony/finder`
* Use `GITHUB_TOKEN` instead of a personal token to run GitHub Actions
* Duplicate attachments & external links during task duplication & importing
* Move Docker image to run automated tests to GitHub Registry
* Push Docker images to an additional registry Quay.io (RedHat)
* Use the appropriate config for the start column in user iCal export
* Improved translations

Version 1.2.27 (March 5, 2023)
------------------------------

- Fix category filter when the category name is a number
- Better handling of max file upload size according to PHP settings
    - Allow unlimited size
    - Better parsing of PHP size
- Add dropdown menu on the board to reorder tasks by ID
- Separate `font-family` specification for input and textarea. This avoids the use of `!important` in custom CSS
- Change the total number of tasks displayed in the table header to match the description "Total number of tasks in this column across all swimlanes"
- Allow full name to be retrieved by the reverse proxy authentication
- Fix `pull-right` CSS class alignment
- Use a separate dropdown menu for column sorting
- Use `assertEqualsWithDelta()` to test `time_spent`
- Add `color_id` argument to tag API procedures
- Update task time spent/estimated when removing a subtask
- Command `db:migrate` should work even if `DB_RUN_MIGRATIONS` is false
- Always trim the username before saving changes in the database
- Avoid Postgres SQL error when using project filter with a large integer
- Enable Sqlite WAL mode by default:
    - WAL provides more concurrency as readers do not block writers and,
    a writer does not block readers. Reading and writing can proceed concurrently.
    This change might reduce the number of errors related to locked databases.
- Update translations
- Update PHP dependencies: `phpunit/phpunit`, `symfony/stopwatch` and `symfony/finder`

Version 1.2.26 (January 14, 2023)
---------------------------------

- Fire events after `TaskMoveColumnOnDueDate` action
- Update date parsing logic to be compatible with PHP 8.2
- Fix potential XSS on the Settings / API page
- Use wildcard operator for tag filter
- Fix broken user mentions in popup comment form
- Test Docker image build on pull-requests
- Bump Alpine Linux Docker image from 3.16 to 3.17
- Update translations
- Fixed a bug about unselecting in the file `list-item-selection.js`
- Add functionality to import tasks from a project
- Add missing jQuery UI CSS dependency

Version 1.2.25 (November 12, 2022)
----------------------------------

- Add experimental support for Microsoft SQL Server
- Add Open Container labels to Dockerfile
- Update links to the new documentation website
- Update German translation

Version 1.2.24 (October 9, 2022)
--------------------------------

* Fixed deprecation warnings when a project or a task description is null
* Fixed missing condition in `TaskAssignDueDateOnMoveColumn` action
* Fixed Reopening of dropdown menus
* Fixed internal link creation on subtask to task conversion if language is not English
* Use a HMAC to sign and validate CSRF tokens, instead of generating random ones and storing them in the session data
* Set explicitly the time picker control to select instead of slider
* Bump `phpunit/phpunit` from `9.5.24` to `9.5.25`
* Bump `symfony/stopwatch` from `5.4.5` to `5.4.13`
* Moved `version.txt` to `app` folder
* Updated translations

Version 1.2.23 (September 4, 2022)
----------------------------------

* Open SVG, Ogg, and some video file attachments in browser
* Added more video, music, code and spreadsheet extensions to show better file attachment icons
* Updated jQuery to latest stable version
* Updated Docker image to PHP 8.1 and Alpine Linux 3.16
* Renamed default branch from `master` to `main`
* Bumped `phpunit/phpunit` from `9.5.14` to `9.5.23`
* Bumped `symfony/finder` from `5.4.3` to `5.4.11`
* Fixed subtask translation when using different languages
* Added Project Overview document template hook
* Updated translations
* Fixed wrong foreign key constraint on table `subtask_time_tracking table`. The constraints references a no-longer-existing table `task_has_subtasks`
* Fixed regression regarding subtask reordering
* Changed minimum requirement to PHP 7.4
    - PHP versions lower than 7.4 are end-of-life: https://www.php.net/supported-versions.php
    - Libraries used by Kanboard have dropped support for older versions of PHP

Version 1.2.22 (February 12, 2022)
----------------------------------

* Add support for PHP 8.x (Minimum requirement is now PHP >= 7.4)
* Remove `project_id` from task URLs
* Update `da_DK` translations
* Add automatic action to set the due date when the task is moved away from a specific column
* Condense wording on inferred action and update translations
* Add EVENT_CREATE and EVENT_CREATE_UPDATE events to TaskMoveColumnCategoryChange action

Version 1.2.21 (December 16, 2021)
----------------------------------

* Fix and update Composer autoload
* Add plugin hook for document attachments
* Improve board column header alignment
* Ignore `project_id` for file attachments download URL (already checked elsewhere)
* Update translations
* Clarify meaning of `LDAP_USER_CREATION` in `config.default.php`
* Fix wrong internal link when converting a subtask to task (MySQL only)
* Use the overridable Markdown parser for previews
* Update `call_user_func_array()` calls to be compatible with PHP 8
* Enable external group synchronization deactivation
* Fix tooltip shifting on long descriptions
* Add `position` argument to API procedure `updateSubtask()`
* Bump Docker image to Alpine 3.15.0
* Bump `symfony/stopwatch` to 5.4.0
* Bump `pimple/pimple` to 3.5.0

Version 1.2.20 (June 8, 2021)
-----------------------------

* Duplicate tags when moving or duplicating tasks to another project
* Bump symfony/stopwatch to 5.3.0
* Avoid user enumeration by using avatar image URL
* Invalidate captcha after it is used
* Avoid user enumeration using password reset functionality
* Add missing CSRF checks
* Fix bug in search when using the plus sign
* Close dialogs using Escape key even if focus is in input field
* Add a min="0" attribute to task_list form input
* Keep swimlane headers at the top
* Catch error when trying to upload empty or invalid avatar image
* Added new template hooks
* Update translations

Version 1.2.19 (April 16, 2021)
-------------------------------

* Trim user agent for RememberMe sessions because MySQL use a varchar(255) column
* Update Docker image to Alpine 3.13.4
* Added "Deutsch (du)" language
* Fixed `createLdapUser` API procedure when LDAP groups are not configured
* Write RememberMe cookie only after the two-factor code has been validated
* Avoid warning when removing a plugin zip archive
* Update Hungarian translation
* Add new hook `model:task:duplication:aftersave`
* Bump symfony/stopwatch from 5.2.3 to 5.2.4
* Bump pimple/pimple from 3.3.1 to 3.4.0
* Bump gregwar/captcha from 1.1.8 to 1.1.9
* Added new analytic component: "Estimated vs actual time per column"
* Do not retain any changes between shared plugins variables
* Display number of tasks according to filter
* Add support for LDAP protocol/host/port configuration by URL; make `BASE_DN` optional
    - `ldap_connect($host, $port)` function signature is deprecated
    - Querying an AD Global Catalog across an entire forest requires an empty base DN
* Use an absolute file path in `AssetHelper` class for `css()` & `js()` functions
* Remove whitespace at the end of `APP_VERSION` constant
* Add IP address to authentication error logs
* Add interpolation expressions to e-mail subject in automatic action "Send a task by email to someone"
    - For example: `Email subject = {{column_title}}: {{title}} (#{{id}})`
* Add Hungarian Forint to the list of currencies

Version 1.2.18 (December 28, 2020)
----------------------------------

* Sqlite migrations should have foreign keys disabled outside the transaction
    => Existing behavior could lead to data loss if schema is changed
    => If you are using Sqlite, skip version 1.2.17, upgrade directly to v1.2.18
* Use more secure default Nginx SSL configuration in Docker image
* Update vendor folder
* Add missing pt_br translations
* Update ja_JP translations

Version 1.2.17 (December 27, 2020)
----------------------------------

* Fix grammatical errors
* Add autocomplete attribute to HTML forms
* Added "Mexican Peso" to the list of currencies
* Added an option to send a copy of all generated e-mails to a BCC address
* Don't force role of users if no LDAP groups defined
* Keep the tags when converting a subtask to task
* Bump symfony/stopwatch from 5.1.8 to 5.2.0
* Bump pimple/pimple from 3.3.0 to 3.3.1
* Bump symfony/stopwatch from 5.2.0 to 5.2.1
* Publish Docker images to GitHub container registry in addition to Docker Hub
* Use Github Actions to publish Docker images
* Check if the user is assigned to any role in the project
* Fix tasks.swimlane_id foreign key for Sqlite
* Remove unused namespaces
* Add mk_MK (Macedonian) translation
* Update translations

Version 1.2.16 (October 9, 2020)
--------------------------------

* Update Composer dependencies
* Update translations
* Add link to toggle column scrolling in board view
* Add missing environment variables in php-fpm config
* Add setting that makes possible any new LDAP user to be Manager by default
* Add ARIA label to modal link with title attribute
* Add ARIA label to user mention
* Add ARIA label to letter avatars
* Add ARIA label to project select role without label
* Add ARIA label to dropdown autocomplete without label
* Add ARIA label to form text editor without label
* Add ARIA label to icons with title attributes
* Add ARIA label for form inputs without labels
* Add ARIA label for elements with titles
* Add hidden accessible form input labels
* Add hidden accessible titles
* Hide user name from screen readers
* Correct table collapsed column titles
* Prevent the original page from being modified by the opened link
* Allow email to be retrieve by SSO ReverseProxy
* Fix grammatically incorrect error message
* Add option to configure SMTP HELO name
* Add new config parameter SESSION_HANDLER
* Fix clearing of all Javascript storage
* Added standard notification footer to comment email template

Version 1.2.15 (June 19, 2020)
------------------------------

* Update dependencies
* Added PUT method using CURLOPT_CUSTOMREQUEST
* Run integration tests on Github Actions
* Fixed capitalization of sAMAccountName for LDAP_USER_ATTRIBUTE_USERNAME example
* Added missing closing HTML tag in template
* Update Docker image to Alpine 3.12
* Removed paragonie/random_compat (not required for PHP 7)
* Setup Dependabot on GitHub
* Allow use of the user's DN as the group filter substitution
* Add subtask events to ProjectModificationDateSubscriber
* Update Vagrantfile to Ubuntu 20.04
* Open large modal when clicking on edit category link
* Set margin-bottom at 0 only for the last child of a tooltip element
* Prevent last swimlane to be hidden if there is only one
* Execute tooltip listeners only once when the DOM is ready
* Use Ajax request for Markdown preview
* Make tooltip events bubble
* Keep newlines in markdown
* Show the color dropdown when creating a new automatic action
* Update translations
* Correct duration calculation
* Copy subtask assignee when duplicating a task
* Save task list order in user session
* Add action to assign a user when the swimlane change

Version 1.2.14 (April 15, 2020)
-------------------------------

* Update translations
* Add new event subtask.create_update
* Replace Travis CI by GitHub Actions
* Add option to enable or disable global tags per projects
* Show group membership(s) in user summary and user list
* Docker: use real hostname instead of "localhost"
* Add new task/project image hooks
* Fix invalid RSS feed encoding
* Add new plugin hooks
* Rename "private" projects to "personal"
* Add per-project and per-swimlane task limits
* Use parent task color when converting a subtask to task
* Add environment variables support to configure the application
* Add the possibility to make project tags global from project settings
* Fix regex to detect external links with attachments
* Use KANBOARD_URL to build URIs if specified
* Make time_spent and time_estimated fields editable for updateTask and createTask API calls
* Kanboard now requires PHP >= 7.2 since other versions are deprecated
* Avoid page shrinking when drag and drop cards on iOS devices
* Added a hover color to i elements inside the "dropdown-submenu-open" class
* Avoid duplicating Dockerfiles for each architecture

Version 1.2.13 (December 15, 2019)
----------------------------------

* Adjust width of time tracking column
* Make subtasks not wrap under icons
* Make column scrollable in Kanban view
* Add composer dependency roave/security-advisories
* Add colors to tag and category lists
* Update Parsedown to v1.7.3 (security update)
* Make sure the elements behind the alert notification are clickable after animation
* Make sure incompatible plugins can be uninstalled from the web ui
* Move "data-js-lang" attribute to HTML "lang" attribute
* Update language codes for time picker so the calendars are translated correctly
* Dropdown in project managers view covers heading
* Fix date picker datetime parsing when using pre-defined localized versions of am/pm
* Show ISO date format in application settings
* Datepicker stores its Spanish locales as "es", not "es-ES" or "es-VE"
* Increase width of color picker to avoid text overlap in Polish
* Close open menu when clicking again on the button
* Fix width of filter bar in mobile
* In PHP-7.4, nested ternary operators are to be bracketed
* Change string indexing from {0} to [0] (deprecated in PHP 7.4)
* Update translations

Version 1.2.12 (October 26, 2019)
---------------------------------

* Update Docker image to Alpine Linux 3.10.3
* Add new template hook: "template:project-permission:after-adduser"
* Upgrade jQuery to version 3.4.1
* Add Spanish (Venezuela) translation
* Removed color_id requirement for tag API calls
* Fix subtask restriction modal when clicking on the icon instead of link
* Use PHPUnit 5 for Vagrant
* Prevent last project manager role from being removed
* Check API token before LDAP authentication
* Make sure task limit consider all open tasks (not only filtered tasks)
* Update translations
* Change user filter and category icon
* Add "anybody" filter
* Disable user scaling to avoid page shrinking when drag&drop on mobile
* Fix condition for action "Automatically update the start date when task move away from certain column"
* Add tests for task link and subtask assignee filters
* Changes filters from in array to subqueries
* Add hash to image URL to force browser to update avatar image when changed

Version 1.2.11 (August 24, 2019)
--------------------------------

Breaking Changes:

* Internet Explorer support is now deprecated
* Add project ID to ExternalTaskProviderInterface::fetch()

Fixes and Improvements:

* Fixed issue of tooltip not disapearing
* Update Docker image to Alpine Linux 3.10.2
* Hide due date time on the card if time is 00:00
* Add new plugin hooks in view switcher
* Ignore Dockerfiles from git archive
* Remove dependency on nodejs and gulp
* Remove dependency on Sass
    - Convert *.sass files to vanilla CSS
    - Start using CSS variables
    - Add PHP minifier
* Add link button to text editor
* Implements check for duplicate default categories
* Implements check for duplicate default columns
* Fix HTML parsing in Markdown editor
* Change checkboxes alignment in task creation form
* Add support for reference:none
* Fix tabindexes on task creation and modification forms
* Add option to clone filters on project duplication
    - Fixed missing metadata option from project "create from"
    - Added option to clone project custom filters
    - Added append option to custom field tests
    - Added a test that uses the "append" option
    - Fixed disabled swimlane duplication error with Postgresql
* Update translations
* Save thumbnails as PNG to have transparency
* New action to update the start date when a task move away from a column
* Add the possibility to sort columns by due date
* Add "identifier" beside "name" while creating a new project

Version 1.2.10 (June 21, 2019)
------------------------------

* Add Auto-Submitted E-mail header as per RFC 8384
* Add HTML tag in email notifications
* Add new hook template:export:header
* Do not show duplicated results when multiple comments match
* Add Docker manifest with multiple architectures (arm32v6, arm32v7, arm64v8, amd64)
* Update Docker image to Alpine 3.10.0
* Add View File on popover to tooltip
* Fix text file preview
* Set "start date" and "end date" on projects from API
* Add cURL support to HTTP Client
    - Add HTTP_PROXY_EXCLUDE option when cURL is used
    - Show HTTP client backend in about page
    - Fallback to legacy Stream Contexts if cURL extension is not available
* Add Bitcoin to the currency list
* Add automatic action to move task between columns based on due date
* Fixes icon opacity when hovered
* Hide one task count when there is only one swimlane
* Update translations

Version 1.2.9 (April 5, 2019)
-----------------------------

* Add Slovak translation
* Update translations
* Changes search by reference to case insentive
* Fix postgres explicit schema name usage
* Simplify local Docker image build
* Show a 404 when accessing data folder from URL (Docker Image)
* Clarify the comment about MAIL_SMTP_ENCRYPTION
* Remove dependency on Bower
* Replaces accordion Javascript component by <details> HTML element
* Fix MySQL migration when using increment values different from 1
* Add missing webhook event: task.move.project
* Add new actions to reorder tasks by column

Version 1.2.8 (February 2, 2019)
--------------------------------

Breaking Changes:

* Authorize only API tokens when 2FA is enabled (no user password)
* Disable by default plugin installer for security reasons:
    - There is no code review or any approval process to submit a plugin.
    - This is up to the Kanboard instance owner to validate if a plugin is legit.

Fixes and Improvements:

* Limit avatar image size
* Avoid CSRF in users CSV import
* Avoid XSS in pagination sorting
* Do not show projects dropdown when prompting the 2FA code
* Always returns a 404 instead of 403 to avoid people discovering users
* Check if user role has changed while the session is open
* Add missing CSRF check in TwoFactorController::deactivate()
* Hide edit button when user cannot edit task
* Fix permission check before "Assign to me"
* Fix permission check before showing project options
* Fix assignable users on a group with a custom role
* Fix import of automatic actions when parameters are "unassigned" or "no category"
* Update license year
* Update Docker image to Alpine 3.9
* Update translations
* Fix PHP error in task views (tag colors)
* Limit assignee drop-down selector scope

Version 1.2.7 (December 19, 2018)
---------------------------------

* Write log entry on file removal
* Auto link duplicated tasks
* Auto link tasks duplicated to another project
* Auto link tasks created from a subtask
* Redirect to board view of the current task after duplication
* Fix broken link to contributor page
* Add automatic action for moving a task to a swimlane based on category change
* Add automatic action to assign a category based on swimlane change
* Add ordering comments by id along with creation date
* Fix custom roles duplication (source and destination column_id)
* Add locale en_GB
* New automatic action: move the task to another swimlane when assigned
* Disable php_uname() warning for restrictive environments
* Add hook to board settings
* Add method remove() to settings model
* Add php7-bcmath to Docker image
* Add sorting by reference in list view
* Added priority, swimlane, and column values from parent task to task converted from subtask
* Update translations

Version 1.2.6 (October 10, 2018)
--------------------------------

* Escape table name 'groups' because groups is a reserved word as of MySql 8.0.2
* Reduce number of SQL queries when doing groups sync
* Make swimlane filter compatible with numeric title
* Duplicate reference fields when duplicating a task
* Do not try to redirect to login page when offline
* Define fixed width for auto-complete dropdown
* Fix task drag and drop slowdown when a column is hidden
* Make PLUGINS_DIR absolute in config.default.php
* Add custom roles project duplication
* Allow 'No assignee' for external task on single user public boards
* Add tag and category colors
* Exclude task links and user mentions from nesting (Markdown parser)
* When forcing HTTPS, handle subfolder URLs properly
* Add search within a range of dates for completion, modification, creation, and moved fields
* Update Docker image to Alpine Linux 3.8
* Make sure the presense of mod_env is checked in .htaccess
* Make HTTP client timeout configurable
* Use SET NAMES instead of charset for MySQL connection
* Vendoring deprecated Composer libs
* Update translations and fix typos

Version 1.2.5 (June 15, 2018)
-----------------------------

* Update jQuery to latest version
* Defer javascript files loading by default
* Add quick link "assign me" in different views
* Add bulk task operations in list view
* Add checkboxes in list view to move tasks to another column at once
* Make sure automatic actions are applied to all tasks when using bulk operations
* Add ability to run cron jobs by calling URL
* Add basic print stylesheet
* Add dashboard and search task footer hooks
* Reword project settings label
* Improve Docker image config overrides
* Fix cronjob in Docker image
* Increase Nginx fastcgi buffers for Docker image
* Increase size of the "users.language" column
* Update translations and improve English texts

Version 1.2.4 (May 16, 2018)
----------------------------

* Rewrite tooltip code without jQuery
* Update Parsedown library
* Remove all attachments when removing a project
* Improve whitespace handling in "cli locale:compare" command
* Don't markdown project owner's name in header tooltip
* Add SSL to Docker image
* Avoid people to remove themselves from project permissions
* Fix escaping issue in Markdown editor
* Add data/config.php to .gitignore
* Clarified text label for notification settings
* Add Ukrainian translation
* Do not show inactive users in group members dropdown
* Improve dashboard pagination
* Make list view more compact
* Hide private projects checkbox if the feature is disabled
* Make cli locale commands working outside of source tree
* Make subtask title text field wider when editing subtasks
* Add link to open images in a new tab
* Make hardcoded hours string translatable
* Translation updates

Version 1.2.3 (April 18, 2018)
------------------------------

New features:

* Add Project MetaData API calls
* Add default filter per user

Improvements:

* Use utf8mb4 encoding for MySQL instead of utf8 (Emoji support)
* Increase text fields length in several tables
* Move documentation to https://docs.kanboard.org/
* Make sure no empty group is submitted on project permissions page
* Translate subtasks status and internal links labels in notifications
* Add link to tasks and projects in overdue notifications
* Add missing translations
* Move custom libs to the source tree

Bug fixes:

* Fix margin for task recurrence tooltip

Version 1.2.2 (March 30, 2018)
------------------------------

Improvements:

* Add thumbnail quality parameter (default to 95)
* Always display SQL errors
* Move SimpleLogger lib into app source tree
* Add system log driver and use it by default
* Display exceptions from plugins while refreshing board
* Redirect to original URL after OAuth login
* Add author name and email arguments to mail client
* Improve HTTP client to raise exceptions
* Update translations

Bug fixes:

* Fix broken daily summary export
* Fix role precedence in LDAP integration

Version 1.2.1 (February 28, 2018)
---------------------------------

New features:

* Add automatic action to change column once a start date is reached
* Add automatic action to change color once start date is reached
* Add CSS class to categories to allow custom styling
* Add option to disable Mysql SSL server verification
* Add timeout parameter for database connection
* Add error log for authentication failure to allow fail2ban integration

Improvements:

* Set the correct swimlane/column ID when moving a task via its internal dialog
* Allow filtering for tasks without due date
* Add plugin hook 'aftersave' after creating Task
* Run SessionHandler::write() into a transaction
* Remove dependency on PicoFeed
* Add CSRF check for task and project files upload
* Add missing CSRF check on avatar upload form
* Add missing CSRF check in saveUploadDB() method
* Update Vagrantfile to use Ubuntu Xenial
* Send event author in webhook notification
* Update translations
* Update documentation

Version 1.2.0 (December 27, 2017)
---------------------------------

Breaking changes:

* Kanboard supports only PHP >= 5.6 (PHP 5.3, 5.4 and 5.5 are not supported anymore)

New features:

* PHP sessions are now stored into the database,
  In this way, it's easier to run Kanboard behind a load-balancer

Improvements:

* Copy category from parent task when creating a task from a subtask
* Translation updates and improvements

Version 1.1.1 (December 9, 2017)
--------------------------------

Breaking changes:

* The Docker tag "stable" is not used anymore, instead use a specific version tag
* Task limit apply across all swimlanes
* Kanboard is now using the domain kanboard.org

New features:

* New automatic action to create a subtask assigned to the creator and start the timer
* New automatic action to stop the timer of subtasks
* Add command line tool to remove project activities after one year
* Add command line tool to disable projects not touched during one year
* Add config option to exclude fields from auth providers sync
* Add new plugin hooks

Improvements:

* Open audio files in a new tab
* Upgrade Docker image to Alpine Linux 3.7
* Improve Docker build to use Docker Hub hooks
* The application version is now included into the Docker image
* Disable private projects when disabling a user
* Allow administrators to update username of remote users
* Improve layout on mobile/tablet devices
* Changed board column headings to show swimlane-column total in bold
* Enable dragging to collapsed columns
* Add missing checks for requirements

Bug fixes:

* Add class "js-modal-replace" to icons to make it clickable
* Improve permission checks on custom filters page to avoid forbidden access

Version 1.1.0 (November 20, 2017)
---------------------------------

Breaking changes:

* Remove feature "Allow everybody to access to this project" (You must define project members and groups)
* Composer dependencies are now included in the repository to be able to use git-archive (except development dependencies)

New features:

* Add predefined templates for task descriptions
* Add the possibility to send tasks and comments to multiple recipients
* Add users, groups and projects search
* Add command line argument to display Kanboard version
* Add user backend provider system (to be used by external plugins)
* Add Romanian and Chinese (Taiwan) translation

Improvements:

* Minor CSS improvements
* Add help message on project sharing page
* Task CSV import is now able to handle the priority, start date, tags and one external link
* Improve iCalendar feed to include tasks with start/end date and due date with a time
* Check if the start date is before due date
* You can get an archive of Kanboard by using the download button in Github or the command git archive
* Translation updates

Bug fixes:

* Fix project dropdown visibility when page is scrolled down
* Task move events must be executed synchronously
* Handle CSV files with only "\r" line endings

Version 1.0.48 (October 23, 2017)
---------------------------------

Improvements:

* Add bulk subtasks creation
* Add filter by score/complexity
* Improved display of the header bar
* Displays bullets from lists in tooltips
* Updated translations
* Add tags and priority to task export
* Make the number of events stored in project activities configurable
* Do not use jQuery tooltip for task title in collapsed mode
* Remove dependency on Yarn
* Improve external task integration
* Add support for array parameters in automatic actions
* Add tooltip to subtask icons
* Add attribute title to external links
* Render a link if the reference is a URL
* Add icon to edit a task quickly on the board
* Improve .htaccess when using HTTP Basic Authentication for Apache/FastCGI
* Add note to specify incompatibility with mod_security

Version 1.0.47 (October 3, 2017)
--------------------------------

New features:

* Vietnamese translation

Improvements:

* Updated translations

Security Issues:

* Avoid people to alter other project resources by changing form data

Version 1.0.46 (August 13, 2017)
--------------------------------

Security Issues:

* Fix two privilege escalation issues: a standard user could reset the password
of another user (including admin) by altering form data.
(CVE-2017-12850 and CVE-2017-12851, discovered by "chbi").

Improvements:

* Add "Create another link" checkbox for internal link as in sub-task creation
* Updated translations

Bug fixes:

* Fix parsing issue in phpToBytes() method

Version 1.0.45 (June 23, 2017)
------------------------------

New features:

* Automatic action to assign tasks to its creator
* Add the possibility to create a comment when a task is sent by email
* Add dropdown menu to autocomplete email field from project members
* Add configurable list of predefined subjects when sending a task or a a comment by email
* Add command line argument to filter overdue notification for a given project

Improvements:

* Improve SQL migrations when old default swimlanes have the same name as a normal swimlanes

Bug fixes:

* Add missing subtask permissions for project viewer role
* Fix Javascript language mapping

Version 1.0.44 (May 28, 2017)
-----------------------------

Improvements:

* Use datetime field for due date
* Update Docker image to Alpine Linux 3.6
* Add the possibility to pass API token as environment variable for Docker container
* Add wildcard search for task reference field
* Improve automated action TaskAssignColorOnDueDate to update task only when necessary
* Add task and project API formatters
* Update translations

Bug fixes:

* Fix broken user mentions in comment form at the bottom of the task view page
* Ensure project tags are removed when the project is removed
* Avoid PHP notice when regenerating API token for a user
* Fix wrong dropdown menu in group members list
* Show only active users in auto-complete forms (project permissions)
* Check owner existence before to create project

Version 1.0.43 (April 30, 2017)
-------------------------------

Improvements:

* Add "[DUPLICATE]" prefix to duplicated tasks title
* Add sorting by position and start date in task list view
* Update translations

Bug fixes:

* Add missing plugin parameter for search box (Gantt and calendar plugin)
* Fix broken start date button

Version 1.0.42 (April 8, 2017)
------------------------------

New features:

* New restrictions for custom project roles

Improvements:

* Improved dashboard

Breaking Changes:

* Move calendar to external plugin: https://github.com/kanboard/plugin-calendar
* Move Gantt charts to external plugin: https://github.com/kanboard/plugin-gantt
* Move Gravatar to external plugin: https://github.com/kanboard/plugin-gravatar

Bug fixes:

* Fix typo in Sqlite schema

Version 1.0.41 (March 19, 2017)
-------------------------------

New features:

* Add Croatian language translation

Improvements:

* Simplify dashboard to use new tasks list view
* Move notifications outside of dashboard
* Render QR code for TwoFactor authentication without Google Chart API
* Add toggle button to show/hide subtasks in task list view
* Use same layout as task listing for task search
* Display tags in task list view
* Make user actions available from contextual menu
* Change users and groups list layout
* Project priority is always rendered now
* Do not list private projects when adding a new user
* Restore link for task title on board

Breaking Changes:

* Remove method getQrCodeUrl() from PostAuthenticationProviderInterface

Version 1.0.40 (February 24, 2017)
----------------------------------

New features:

* Send comments by email
* Send tasks by email
* Add Reply-To header to emails sent from Kanboard
* Upload Sqlite database from user interface
* Automatic action to change task color when due date is expired

Improvements:

* Make link to calendar view bookable
* Reintroduce word search in board selector
* Properly resize task list height on column toggle
* Show total score across all swimlanes
* Redesign task list view and project list view
* Allow people to remove missing automatic actions (installed from a removed plugins)
* Improve task view tables
* Simplify automatic actions table
* Show category description in tooltip
* Show category creation form in modal dialog
* Prevent people to remove swimlanes that contains tasks
* Show task count in swimlane table
* Use contextual menu instead of action column in users management

Breaking changes:

* The concept of "default swimlane" has been removed
* Previous default swimlanes are migrated to an independent swimlanes
* Columns "default_swimlane" and "show_default_swimlane" from "projects" table are not used anymore
* Remove API method "getDefaultSwimlane()"
* Add mandatory argument "project_id" to API method "updateSwimlane()"
* Change interface for mail transports

Bug fixes:

* Upload files button stay disabled when there are other submit buttons on the same page
* Hiding subtasks from hidden tasks in dashboard

Security:

* Fix XSS in LetterAvatarProvider (render broken image)

Those issues are harmless if you use default Kanboard settings for CSP rules:

* Avoid potential XSS in project overview when listing users
* Avoid potential XSS in Gantt chart

Version 1.0.39 (February 12, 2017)
----------------------------------

Improvements:

* Add menu entry in task dropdown to add attachments
* Improve error reporting when file upload is not configured properly
* Open comments on board view with a modal dialog instead of tooltip
* Improve card icons alignment on board
* Adjust modal dialog width on mobile devices
* Add priority column in list view
* Change wording for project status (use "closed" instead of "inactive")
* Prevent people to remove columns that contains tasks
* Improve LDAP error reporting
* Add configuration parameter to disable email configuration from user interface
* Add email address field for projects
* Improve forget password behavior (notify the user that an email has been sent or not)
* Do not display current project in board selector
* Do not set default task assignee for team projects
* Comments are highlighted if hash (#comment-123) is present in URL
* Documentation translated in Turkish

Bug fixes:

* Search with multiple expressions with double quotes was not working
* Fix broken subtask restriction per user
* Fix CFD chart (stack wrongly ordered)

Version 1.0.38 (January 28, 2017)
----------------------------------

New features:

* User invitations by email

Improvements:

* Simplify user creation form
* Add modification date for comments
* Add project creation links to project management pages
* More API procedures are now available to project members and project viewers
* Simplify date and time configuration to avoid potential validation issues
* Show dashboard column visibility in columns page
* Add new template hooks
* Update translations (id_ID, de_DE, ru_RU, fr_FR, pt_PT)
* Add command to execute individual job (mostly for debugging)

Regressions:

* Stay on the same page when a task is closed
* Wrong URL in modal to move task to another project

Bug fixes:

* Fix broken link when clicking on user avatar for tasks on board
* Fix wrong datetime formatting when task form shows validation errors
* Empty arrays are serialized to a list instead of a dict (Json API)
* Always unbind internal listeners when closing a modal dialog
* Fix installation errors on MySQL 8.0.0 (unescaped reserved keyword)
* Avoid PHP notice when column form validation failed
* Fix wrong default value for add group member modal
* Add missing filter (completed) for task search

Version 1.0.37 (January 14, 2017)
---------------------------------

Improvements:

* Improve keyboard shortcuts handling
* Improve auto-complete dropdown elements sorting
* Larger task form
* Rewrite dialog and confirmation boxes (inline popups)
* Remove TaskGanttCreationController
* Add helpers to open modal boxes
* Make icons clickable in menus
* Open task imports in modal box
* Open form to create customer filters in modal box
* Open project activities in modal box
* Display project analytics in modal box
* Display project exports in modal box
* Improve accordion component
* Improve currencies page navigation
* Improve link labels page navigation
* Improve settings page layout
* Offer the possibility to define version compatibility from plugins
* Add task creation event to the automatic action to send task by email

Bug fixes:

* Closing screenshot dialog prevent input elements to get focus

Version 1.0.36 (December 30, 2016)
----------------------------------

New features:

* Add slideshow for images
* Add API calls to manage tags
* Offer the possibility to override internal formatter objects from plugins
* Open PDF attachments in browser tab (preview)

Improvements:

* Add pagination details
* Handle username with dots in user mentions
* Rewrite UI component that change user/group roles
* Replace Chosen jQuery plugin by custom UI component
* Remove dependency on Mousetrap Javascript library
* Disable PageSpeed module from .htaccess if present
* Add currency of Chinese Yuan

Bug fixes:

* Fix compatibility issue with PHP 5.3 for array_combine function
* Fix wrong controller name on project activity page when using filters
* Uploaded avatar images are now visible in public board view

Version 1.0.35 (December 4, 2016)
---------------------------------

New features:

* Add external tasks plugin interfaces
* Add personal API access token for users
* Rewrite of Markdown editor (remove CodeMirror)
* Suggest menu for task ID and user mentions in Markdown editor
* Add config parameter to disable automatic SQL migrations

Improvements:

* Add button to close inline popups
* Simplify `.htaccess` to avoid potential issues with possible specific Apache configurations
* Replace notifications Javascript code by CSS
* Refactoring of user mentions job
* Remove Nitrous installer
* Update translations
* Rewrite some components in Vanilla Javascript
* Started Javascript code refactoring to avoid to much dependencies on jQuery
* Remove dependency on VueJS and CoreMirror
* Add P3P headers to avoid potential issues with IE

Breaking changes:

* Rename command line tool `./kanboard` to `./cli`

Bug fixes:

* Change column type for application settings value (field too small)
* Fix link generation when user mention is followed by a punctuation mark
* Make user mentions works again

Version 1.0.34 (October 11, 2016)
---------------------------------

New features:

* Custom project roles with configurable restrictions
* Duplicate a task to multiple projects during creation
* New automatic action:
    - Close a task in a specific column when not moved during a given period

Improvements:

* Do not close the popover when clicking on the background
* Add visual icon to show a dropdown action on task
* Avoid 'blur' effect on popover
* Accept more file types for external links
* Restrict search to active projects
* Improve task status filter
* Add filter tag:none
* Always apply merge hooks in task creation controller
* Update task moved date only when the column or swimlane is changed
* Add new subtask hooks
* Add the actual use of TaskStartDateFilter
* Update translations and documentation

Bug fixes:

* Send absolute links in email notifications
* Restrict task complexity to a specific range to avoid integer overflow
* Do not show closed tasks in task move position form
* Avoid "Controller not found" in Settings > Links

Version 1.0.33 (September 5, 2016)
----------------------------------

New features:

* Move a task without drag and drop (smartphones and tablets)
* Add the possibility to unlock users from the user interface
* New API calls for task metadata
* New automatic actions:
    - Define color by Swimlane
    - Define priority by Swimlane

Improvements:

* Introduce Vue.js to manage user interface components
* Add column "Reference" and "Creator Name" in CSV task export
* Show both time spent and estimated on the board
* Store board collapsed mode user preference in the database
* Store comment sorting direction in the database
* Avoid tags overlapping on the board
* Show project name in notifications
* Allow priority changes for inverted priority scales
* Add the possibility to attach template hooks with local variables and callback
* Add "reference" hooks
* Show project name in task forms
* Convert vanilla CSS to SASS
* Make user interface more responsive for smartphones and tablets
* Support version operators for plugin directory: >= and >
* Update Spanish documentation

Other changes:

* Time spent (in hours) for subtasks are not rounded too the nearest quarter anymore

Bug fixes:

* Fix improper HTML escaping for textarea (potential XSS)
* Do not show closed tasks on public boards
* Fix undefined constant in config example file
* Fix PHP notice when sending overdue notifications
* Fix wrong project date format (shown as 01/01/1970)
    - If the dates still not correct, modify and save the date

Version 1.0.32 (July 31, 2016)
------------------------------

New features:

* New automated actions:
    - Close tasks without activity in a specific column
    - Set due date automatically
    - Move a task to another column when closed
    - Move a task to another column when not moved during a given period
* New filter "moved" for moved date of tasks
* Added internal task links to activity stream
* Added new event for removed comments
* Added search filter for task priority
* Added the possibility to hide tasks in dashboard for a specific column
* Documentation translated in Russian

Improvements:

* Improve background worker and job handler
* New template hooks
* Removed individual column scrolling on board, columns use the height of all tasks
* Improve project page titles
* Remove sidebar titles when not necessary
* Internal events management refactoring
* Handle header X-Real-IP to get IP address
* Display project name for task auto-complete fields
* Make search attributes not case sensitive
* Display TOTP issuer for 2FA
* Make sure that the table schema_version use InnoDB for Mysql
* Use the library PicoFeed to generate RSS/Atom feeds
* Change all links to the new repository

Bug fixes:

* Allow users to see inactive projects
* Fixed typo in template that prevent project permissions to be duplicated
* Fixed search query with multiple assignees (nested OR conditions)
* Fixed Markdown editor auto-grow on the task form (Safari)
* Fixed compatibility issue with PHP 5.3 for OAuthUserProvider class

Version 1.0.31 (July 3, 2016)
-----------------------------

New features:

* Added tags: global and specific by project
* Added application and project roles validation for API procedure calls
* Added new API call: "getProjectByIdentifier"
* Added new API calls for external task links, project attachments and subtask time tracking

Improvements:

* Use PHP 7 for the Docker image
* Preserve role for existing users when using ReverseProxy authentication
* Handle priority for task and project duplication
* Expose task reference field to the user interface
* Improve ICal export
* Added argument owner_id and identifier to project API calls
* Rewrite integration tests to run with Docker containers
* Use the same task form layout everywhere
* Removed some tasks dropdown menus that are now available with task edit form
* Make embedded documentation readable in multiple languages (if a translation is available)
* Added acceptance tests (browser tests)

Bug fixes:

* Fixed broken CSV exports
* Fixed identical background color for LetterAvatar on 32bits platforms (Hash greater than PHP_MAX_INT)
* Fixed lexer issue with non word characters
* Flush memory cache in worker to get latest config values
* Fixed empty title for web notification with only one overdue task
* Take default swimlane into consideration for SwimlaneModel::getFirstActiveSwimlane()
* Fixed "due today" highlighting

Breaking changes:

* Docker volume paths are changed to /var/www/app/{data,plugins}

Version 1.0.30 (June 8, 2016)
-----------------------------

Improvements:

* Show tasks that are due today in a different color

Bug fixes:

* Fixed wrong controller for search in dashboard
* Fixed plural form in alert message
* Fixed CSS cosmetic issue with popover and tooltips

Version 1.0.29 (June 5, 2016)
-----------------------------

New features:

* Manage plugin from the user interface and from the command line
* Added support for background workers
* Added the possibility to convert a subtask to a task
* Added menu entry to add tasks from all project views
* Add tasks in bulk from the board
* Add dropdown for projects
* Added config parameter to allow self-signed certificates for the HTTP client

Improvements:

* Display local date format in date picker
* Configure email settings with the user interface in addition to config file
* Upgrade Docker image to Alpine Linux 3.4
* Move task import to a separate section
* Mark web notification as read when clicking on it
* Support strtotime strings for date search
* Reset failed login counter and unlock user when changing password
* Task do not open anymore in a new window on the Gantt chart
* Do not display task progress for tasks with no start/end date
* Use Gulp and Bower to manage assets
* Controller and Middleware refactoring
* Replace jQuery mobile detection by the library isMobile

Bug fixes:

* Fixed user date format parsing for dates that can be valid in multiple formats
* Do not sync user role if LDAP groups are not configured
* Fixed issue with unicode handling for letter based avatars and user initials
* Do not send notifications to disabled users
* Fixed wrong redirect when removing a task from the task view page

Breaking changes:

* Webhook to create tasks have been removed, use the API instead
* All controllers have been renamed, people who are not using URL rewriting will see different URLs
* All models have been renamed, plugin maintainers will have to update their plugins

Version 1.0.28 (May 8, 2016)
----------------------------

New features:

* Added automated action to change task color based on the priority
* Added support for LDAP Posix Groups (OpenLDAP with memberUid or groupOfNames)
* Added support for LDAP user photo attribute (Avatar image)
* Added support for language LDAP attribute
* Added support for Mysql SSL connection
* Search in activity stream
* Search in comments
* Search by task creator
* Added command line utility to reset user password and to disable 2FA

Improvements:

* Improve Avatar upload form
* User roles are now synced with LDAP at each login
* Improve web page title on the task view
* Unify task drop-down menu between different views
* Improve LDAP user group membership synchronization
* Category and user filters do not append anymore in search field
* Added more template hooks
* Added tasks search with the API
* Added priority field to API procedures
* Added API procedure "getMemberGroups"
* Added parameters for overdue tasks notifications: group by projects and send only to managers
* Allow people to install Kanboard outside of the DocumentRoot
* Allow plugins to be loaded from another folder
* Filter/Lexer/QueryBuilder refactoring

Bug fixes:

* Allow a project owner to manage his own public project
* Fixed PHP warning when removing a user with no Avatar image
* Fixed improper Markdown escaping for some tooltips
* Closing all tasks by column, also update closed tasks
* Fixed wrong task link generation within Markdown text
* Fixed wrong URL on comment toggle link for sorting
* Fixed form submission with Meta+Enter keyboard shortcut
* Removed PHP notices in comment suppression view

Version 1.0.27 (March 27, 2016)
-------------------------------

New features:

* Added Markdown editor
* Added user avatars with pluggable system
    - Default is a letter based avatar
    - Gravatar
    - Avatar Image upload
* Added Korean translation

Improvements:

* Added more logging for LDAP client
* Improve schema migration process
* Improve notification configuration form
* Handle state in OAuth2 client
* Allow to use the original template in overridden templates
* Unification of the project header
* Refactoring of Javascript code
* Improve comments design
* Improve task summary sections
* Put back the action sidebar in task view
* Added support for multiple placeholders for LDAP_USER_FILTER
* Added local file link provider
* Show configuration in settings page
* Added "?" to display list of keyboard shortcuts
* Added new keyboard shortcuts for task view
* Always display project name and task title in task views
* Improve automatic action creation
* Move notifications to the bottom of the screen
* Added the possibility to import automatic actions from another project
* Added Ajax loading icon for submit buttons
* Added support for HTTP header "X-Forwarded-Proto: https"

Bug fixes:

* Fix bad unique constraints in Mysql table user_has_notifications
* Force integer type for aggregated metrics (Burndown chart concat values instead of summing)
* Fixes cycle time calculation when the start date is defined in the future
* Access allowed to any tasks from the shared public board by changing the URL parameters
* Fix invalid user filter for API procedure createLdapUser()
* Ambiguous column name with very old version of Sqlite

Version 1.0.26 (February 28, 2016)
----------------------------------

Breaking changes:

* API procedures:
    - "moveColumnUp" and "moveColumnDown" are replaced by "changeColumnPosition"
    - "moveSwimlaneUp" and "moveSwimlaneDown" are replaced by "changeSwimlanePosition"

New features:

* Add drag and drop to change subtasks, swimlanes and columns positions
* Add file drag and drop and asynchronous upload
* Enable/Disable users
* Add setting option to disable private projects
* Add new config option to disable logout

Improvements:

* Use inline popup to create new columns
* Improve filter box design
* Improve image thumbnails and files table
* Add confirmation inline popup to remove custom filter
* Increase client_max_body_size value for Nginx
* Split Board model into multiple classes
* Improve logging for the Docker image

Bug fixes:

* Fix PHP notices during creation of first project and in subtasks table
* Fix filter dropdown not accessible when there are too many items
* Fix regression: unable to change project in "task move/duplicate to another project"

Version 1.0.25 (February 7, 2016)
---------------------------------

Breaking changes:

* Core functionalities moved to external plugins:
    - Google Auth: https://github.com/kanboard/plugin-google-auth
    - Github Auth: https://github.com/kanboard/plugin-github-auth
    - Gitlab Auth: https://github.com/kanboard/plugin-gitlab-auth

New features:

* When creating a new project, have the possibility to select another project to duplicate
* Add a "Me" button to assignee form element
* Add external links for tasks with plugin api
* Add project owner (Directly Responsible Individual)
* Add configurable task priority
* Add Greek translation
* Add automatic actions to close tasks with no activity
* Add automatic actions to send an email when there is no activity on a task
* Regroup all daily background tasks in one command: "cronjob"
* Add task dropdown menu on listing pages

Improvements:

* New Dockerfile based on Alpine Linux and Nginx/PHP-FPM
* The date time format can be chosen in application settings
* Export only open tasks in iCal feed
* Remove time form on task summary page and move that to task edit form
* Replace box shadow by a larger border width when a task is recently modified
* Do not refresh the whole page when changing subtask status
* Add dropdown menu with inline popup for all task actions
* Change sidebar style
* Change task summary layout
* Use inline popup for subtasks, categories, swimlanes, actions and columns
* Move homepage menus to the user dropdown
* Have a new task assigned to the creator by default instead of "no assignee"
* Show progress for task links in board tooltips
* Simplify code to handle ajax popover and redirects
* Simplify layout and templates generation
* Move task form elements to Task helper

Bug fixes:

* Category label is broken on the board if there's a url in the description
* Fix pagination on task time tracking page

Version 1.0.24 (January 23, 2016)
---------------------------------

New features:

* Forgot Password
* Add drop-down menu on each board column title to close all tasks
* Add Malay language
* Add new API procedures for groups, roles, project permissions and to move/duplicate tasks to another project

Improvements:

* Avoid to send XHR request when a task has not moved after a drag and drop
* Set maximum dropzone height when the individual column scrolling is disabled
* Always show the search box in board selector
* Replace logout link by a drop-down menu
* Handle notification for group members attached to a project
* Return the highest role for a project when a user is member of multiple groups
* Show in user interface the saving state of the task
* Add drop-down menu for subtasks, categories, swimlanes, columns, custom filters, task links and groups
* Add new template hooks
* Application settings are not cached anymore in the session
* Do not check board status during task move
* Move validators to a separate namespace
* Improve and write unit tests for reports
* Reduce the number of SQL queries for project daily column stats
* Remove event subscriber to update date_moved field
* Make sure that some event subscribers are not executed multiple times
* Show rendering time of individual templates when debug mode is enabled
* Make sure that no events are fired if nothing has been modified in the task
* Make dashboard section title clickable
* Add unit tests for LastLogin

Bug fixes:

* Automatic action listeners were using the same instance
* Fix wrong link for category in task footer
* Unable to set currency rate with Postgres database
* Avoid automatic actions that change the color to fire subsequent events
* Unable to unassign a task from the API
* Revert back previous optimizations of TaskPosition (incompatibility with some environment)

Version 1.0.23 (January 9, 2016)
--------------------------------

Breaking changes:

* Plugin API changes for Automatic Actions
* Automatic Action to close a task doesn't have the column parameter anymore (use the action "Close a task in a specific column")
* Action name stored in the database is now the absolute class name
* Core functionalities moved to external plugins:
    - Github Webhook: https://github.com/kanboard/plugin-github-webhook
    - Gitlab Webhook: https://github.com/kanboard/plugin-gitlab-webhook
    - Bitbucket Webhook: https://github.com/kanboard/plugin-bitbucket-webhook

New features:

* Added support of user mentions (@username)
* Added report to compare working hours between open and closed tasks
* Added the possibility to define custom routes from plugins
* Added new method to remove metadata

Improvements:

* Improve Two-Factor activation and plugin API
* Improving performance during task position change (SQL queries are 3 times faster than before)
* Do not show window scrollbars when individual column scrolling is enabled
* Automatic Actions code improvements and unit tests
* Increase action name column length in actions table

Bug fixes:

* Fix compatibility issue with FreeBSD for session.hash_function parameter
* Fix wrong constant name that causes a PHP error in project management section
* Fix pagination in group members listing
* Avoid PHP error when enabling LDAP group provider with PHP < 5.5

Version 1.0.22 (December 13, 2015)
----------------------------------

Breaking changes:

* LDAP configuration parameters changes (See documentation)
* SQL table changes:
    - "users" table: added new column "role" and removed columns "is_admin" and "is_project_admin"
    - "project_has_users" table: replaced column "is_owner" with column "role"
    - Sqlite does not support alter table, old columns still there but unused
* API procedure changes:
    - createUser
    - createLdapUser
    - updateUser
    - updateTask
* Event removed: "session.bootstrap", use "app.boostrap" instead

New features:

* Add pluggable authentication and authorization system (complete rewrite)
* Add groups (teams/organization)
* Add LDAP groups synchronization
* Add project group permissions
* Add new project role Viewer
* Add generic LDAP client library
* Add search query attribute for task link
* Add the possibility to define API token in config file
* Add capability to reopen Gitlab issues
* Try to load config.php from /data if not available

Version 1.0.21 (November 22, 2015)
----------------------------------

Breaking changes:

* Projects with duplicate names are now allowed:
    - For Postgres and Mysql the unique constraint is removed by database migration
    - However Sqlite does not support alter table, only new databases will have the unique constraint removed

New features:

* New automatic action: Assign a category based on a link
* Added Bosnian translation

Improvements:

* Dropdown menu entries are now clickable outside of the html link
* Improve error handling of plugins
* Use PHP7 function random_bytes() to generate tokens if available
* CSV task export show the assignee name in addition to the assignee username
* Add new hooks for plugins
* Remove workaround for "INSERT ON DUPLICATE KEY UPDATE..."

Internal code refactoring:

* Rewrite of session management
* Move some classes to a new namespace Kanboard\Core\Http

Bug fixes:

* Loading cs_CZ locale display the wrong language in datetime picker
* Datepicker is closed unexpectedly on blur event
* Fix bug in daily project summary CSV export
* Fix PHP error when adding a new user with email notification enabled
* Add missing template for activity stream to show event "file.create"
* Fix wrong value for PLUGINS_DIR in config.default.php
* Make CSV export compatible with PHP 5.3
* Avoid Safari to append .html at the end of downloaded files

Version 1.0.20 (October 24, 2015)
---------------------------------

Breaking changes:

* Add namespace Kanboard (update your plugins)
* Move Mailgun, Sendgrid, Postmark, Slack, Hipchat and Jabber to plugins
* ReverseProxy authentication check for each request that the username match the user session

New features:

* Add CSV import for users and tasks
* Add Task, User and Project metadata for plugin creators

Improvements:

* Allow to change comments sorting
* Add the possibility to append or not custom filters
* Make mail transports pluggable
* Do not show scroll-bars when a column is collapsed on Windows systems
* Regenerate thumbnails if missing

Bug fixes:

* People should not see any tasks during a search when they are not associated to a project
* Avoid disabling the default swimlane during renaming when there is no other activated swimlane

Version 1.0.19 (October 11, 2015)
---------------------------------

New features:

* Added web notifications
* Added LDAP group sync
* Added swimlane description
* New plugin system (alpha)
* Added Bahasa Indonesia translation
* Added API procedures: getMyOverdueTasks, getOverdueTasksByProject and GetMyProjects
* Added user API access for procedure getProjectActivity()
* Added config parameter to enable/disable Syslog
* Added custom filters
* Added http client proxy support

Core functionalities moved to plugins:

* Budget planning: https://github.com/kanboard/plugin-budget
* SubtaskForecast: https://github.com/kanboard/plugin-subtask-forecast
* Timetable: https://github.com/kanboard/plugin-timetable

Improvements:

* When duplicating a task redirect to the new task
* Include more shortcut links into the view "My projects"
* Duplicate a project with tasks will copy the new tasks in the same columns
* Offer alternative method to create Mysql and Postgres databases (import sql dump)
* Make sure there is always a trailing slash for application_url
* Do not show the checkbox "Show default swimlane" when there is no active swimlanes
* Append filters instead of replacing value for users and categories drop-downs
* Do not show empty swimlanes in public view
* Change swimlane layout to save space on the screen
* Add the possibility to set/unset max column height (column scrolling)
* Show "Open this task" in drop-down menu for closed tasks
* Show assignee on card only when someone is assigned (hide nobody text)
* Highlight selected item in drop-down menus
* Gantt chart: change bar color according to task progress
* Replace color drop-down by color picker in task forms
* Creating another task stay in the popover (no full page refresh anymore)
* Avoid scrollbar in Gantt chart for row title on Windows platform
* Remove unnecessary margin for calendar header
* Show localized documentation if available
* Add event subtask.delete
* Add abstract storage layer
* Add abstract cache layer
* Add Docker tag for stable version

Others:

* Data directory permission are not checked anymore
* Data directory is not mandatory anymore for people that use a remote database and remote object storage

Bug fixes:

* Fix typo in template that prevents Gitlab OAuth link to be displayed
* Fix Markdown preview links focus
* Avoid drop-down menu to be truncated inside a column with scrolling
* Deleting subtask doesn't update task time tracking
* Fix Mysql error about gitlab_id when creating remote user
* Fix subtask timer bug (event called recursively)
* Fix Postgres issue "Cardinality violation" when there is multiple "is_milestone_of" links
* Fix issue with due date greater than year 2038

Version 1.0.18 (August 30, 2015)
--------------------------------

New features:

* Include documentation in the application
* Add Gitlab authentication
* Add users and categories filters on the board
* Add hide/show columns
* Add Gantt chart for projects and tasks
* Add new role "Project Administrator"
* Add login brute force protection with captcha and account lockdown
* Add new api procedures: getDefaultTaskColor(), getDefaultTaskColors() and getColorList()
* Add user api access
* Add config parameter to define session duration
* Add config parameter to disable/enable RememberMe authentication
* Add start/end date for projects
* Add new automated action to change task color based on the task link
* Add milestone marker in board task
* Add search for task title when using an integer only input
* Add Portuguese (European) translation
* Add Norwegian translation

Improvements:

* Add handle to move tasks on touch devices
* Improve file attachments tooltip on the board
* Adjust automatically the height of the placeholder during drag and drop
* Show all tasks when using no search criteria
* Add column vertical scrolling
* Set dynamically column height based on viewport size
* Enable support for Github Enterprise when using Github Authentication
* Update iCalendar library to display organizer name
* Improve sidebar menus
* Add no referrer policy in meta tags
* Run automated unit tests with Sqlite/Mysql/Postgres on Travis-ci
* Add Makefile and remove the "scripts" directory

Bug fixes:

* Wrong template name for subtasks tooltip due to previous refactoring
* Fix broken url for closed tasks in project view
* Fix permission issue when changing the url manually
* Fix bug task estimate is reset when using subtask timer
* Fix screenshot feature with Firefox 40
* Fix bug when uploading files with Cyrilic characters

Version 1.0.17 (July 27, 2015)
------------------------------

New features:

* Added url rewrite and new routes
* Added new search engine with advanced syntax
* Added global search section
* Added search form on the dashboard
* Added new dashboard layout
* Added new layout for board/calendar/list views
* Added filters helper for search forms
* Added setting option to disable subtask timer
* Added setting option to include or exclude closed tasks into CFD
* Added setting option to define the default task color
* Added new config option to disable automatic creation of LDAP accounts
* Added loading icon on board view
* Prompt user when moving or duplicate a task to another project
* Added current values when moving/duplicate a task to another project and add a loading icon
* Added memory consumption to debug log
* Added form to create remote user
* Added edit form for user authentication
* Added config option to hide login form
* Display OAuth2 urls on integration page
* Added keyboard shortcuts to switch between board/calendar/list view
* Added keyboard shortcut to focus on the search box
* Added Slack channel override
* Added new report: Lead and cycle time for projects
* Added new report: Average time spent into each column
* Added task analytics
* Added icon to set the start date automatically
* Added datetime picker for start date

Improvements:

* Updated documentation
* Display user initials when tasks are in collapsed mode
* Show title in tooltip for collapsed tasks
* Improve alert box fadeout to avoid an empty space
* Set focus on the drop-down for category popover
* Make escape keyboard shortcut global
* Check the box remember me by default
* Store redirect login url in session instead of using url parameter
* Update Gitlab webhook
* Do not rewrite remember me cookie for each request
* Set the assignee as organizer for ical events
* Increase date range for ics export
* Reduce spacing on cards
* Move board collapse/expand mode to server side to avoid board flickering
* Use ajax requests for board collapse/expand
* Do not set anchor for the default swimlane on the link back to board
* Replace timeserie axis to category axis for charts
* Hide task age in compact mode
* Improve quick-add subtasks form
* Reduce the size of the filter box for smaller screen
* Added icon to hide/show sidebar
* Update GitLab logo
* Improve Dockerfile

Translations:

* Added Czech translation
* Updated Spanish translation
* Updated German Translation

Bug fixes:

* Screenshot drop-down: unexpected scroll down on the board view and focus lost when clicking on the drop zone
* No creator when duplicating a task
* Avoid the creation of multiple subtask timer for the same task and user

Code refactoring:

* Split task controller into smaller classes
* Remove method Category::getBoardCategories()
* Rewrite movePosition() to improve performances
* Refactoring of Github and Google authentication

Breaking changes:

* New OAuth url for Google and Github authentication

API:

* Add urls in api response for tasks and projects

Other:

* Added automated Docker build
* Remove edit recurrence from the task menu on the board
* Switch to MIT License instead of AGPLv3

Version 1.0.0 to 1.0.16
-----------------------

* See commit history and website news
