Flyspray - The bug killer!

This is the Bug Tracking System for the Flyspray project. This is not a demo!

2019-04-22: Flyspray 1.0-rc9 released See

ID Category Task Type Severity Summary Status Progress Assigned To Due In Version   asc Opened Last Edited
2049Backend/CoreFeature RequestMediumDisplay login page or customizable page to anonymous us...Unconfirmed
209.09.201504.04.2016 Task Description

Currently, if there are no public project, the anonymous users gets a blank page not very useful. It will be a good idea to have a global configuration parameter to display some customizable-page or maybe the login form instead.

2047User InterfaceFeature RequestMediumInserting images/screenshots from bufferUnconfirmed
2104.09.201529.09.2015 Task Description

Good if adding functional about easy way for insert screenshots to task

2038Backend/CoreBug ReportLowJscalendar must be replaced with something elseNew
223.08.201524.08.2015 Task Description

It's old. There has been a newer version 2.0. Even that one is not supported anymore, although some documents still remain available. The calendar component relies on its language translations files to be complete, or it breaks. Unfortunately, as I found out a few weeks ago, they are not, after switching the default language from english to my native one. Without having a good replacement for it, some of the translations for flyspray itself we've been getting lately are half-way unusable. Not for an ordinary user, but for anyone actually having to edit a task and its due date.

2036Backend/CoreBug ReportVery Lowsession timeoutNew
2121.08.201512.01.2016 Task Description

Got "wrong token" on creating a task whose form were open for a while in browser tab.

That means probably the session timed out on, so the anti csrf token doesn't existed anymore on the webserver.

It would'nt be a big problem if the browser backbutton works showing the ready written form again, but it was empty.

One solution would be temporarly storing it offline in the browser storages which are available with html5. But open for other simpler solutions..

2014Database QueriesFeature RequestVery LowAdd MS SQL Server as database backendMaybe
2120.07.201530.07.2015 Task Description

My company maybe changes to a MS SQL Server backed ERP.

In this case it could be nice to have Flyspray customized as CRM working on the same database for integration with ERP.

Well, currently just an idea.

2004User InterfaceBug ReportLowphp notice on unset params on reports pageNew
1.1 devel218.07.201519.09.2015 Task Description

If on the reports page some get params aren't set, there are notice warnings on the report result page



without start date,end date,result size

But it can be useful to have a bit shorter urls for sharing between authorized users instead the full params url.

Result page should use user default and project default settings fallbacks for the unset get params.

1990User InterfaceFeature RequestLowRoadmap view should also show due dates and sort each v...Confirmed
1.1 devel217.04.201524.04.2015 Task Description

Title says all. Small usability fix that will be big

1987APIFeature RequestMediumREST API to get metrics from flyspray projectsUnconfirmed
229.03.201506.10.2015 Task Description

I need metrics for flyspray projects about a rest api. For example the count of issues for status, priority. I want use this values for my code analysis system and other internal tools. It is possible to create a rest api with user authorization and only for metrics data?

1985Database QueriesFeature RequestVery LowFor developers - testing with huge flyspray data setsNew
224.03.201516.03.2016 Task Description

Here I will put some sql examples for the current developers to have a base for testings:

Starting with a default installation with its 1 example project and 1 example task:

I hope we can put all this into valuable phpunit tests for automatic testing with travis-ci.

Still TODO, do not use:
After fresh Flyspray install, add some more projects:

INSERT INTO flyspray_projects (project_title,project_is_active,others_view,anon_open) VALUES('Inactive Project', 0, 1, 1);
INSERT INTO flyspray_projects (project_title,project_is_active,others_view,anon_open) VALUES('Active Project Anonymous Reporting', 1, 1, 1);
INSERT INTO flyspray_projects (project_title,project_is_active,others_view,anon_open) VALUES('Deleted Project', 1, 1, 1);
DELETE FROM flyspray_projects WHERE project_title LIKE 'Deleted Project'; -- delete to have an id gap
INSERT INTO flyspray_projects (project_title,project_is_active,others_view,anon_open) VALUES('Active Project NO Others View', 1, 0, 0);
-- There should now be 4 projects with ids (1,2,3,5).
-- Now lets add some extra roles for a few projects
INSERT INTO flyspray_groups (group_name,project_id,manage_project,view_tasks,open_new_tasks,modify_own_tasks,view_own_tasks,view_groups_tasks) VALUES('Project3 Manager', 3, 1, 1, 1, 1, 1, 1 );
INSERT INTO flyspray_groups (group_name,project_id,manage_project,view_tasks,open_new_tasks,modify_own_tasks,view_own_tasks,view_groups_tasks) VALUES('Project3 Reporter', 3, 0, 1, 0, 1, 1, 1 );
INSERT INTO flyspray_groups (group_name,project_id,manage_project,view_tasks,open_new_tasks,modify_own_tasks,view_own_tasks,view_groups_tasks) VALUES('Project5 Developer', 5, 0, 1, 1, 1, 1, 1 );
-- Then create some more users:
INSERT INTO flyspray_users(user_name,real_name,email_address,account_enabled,tasks_perpage,lang_code) VALUES('tester1','T1Developer','',1,100,'en');
INSERT INTO flyspray_users(user_name,real_name,email_address,account_enabled,tasks_perpage,lang_code) VALUES('tester2','T2Reporter_P3Manager','',1,100,'de');
INSERT INTO flyspray_users(user_name,real_name,email_address,account_enabled,tasks_perpage,lang_code) VALUES('tester3','T3Basic_P3Reporter_P5Developer','',1,100,'fr');
-- And put them into a global group and a few into project roles too:
INSERT INTO flyspray_users_in_groups(user_id,group_id) VALUES(2,2);
INSERT INTO flyspray_users_in_groups(user_id,group_id) VALUES(3,3);
INSERT INTO flyspray_users_in_groups(user_id,group_id) VALUES(3,8);
INSERT INTO flyspray_users_in_groups(user_id,group_id) VALUES(4,4);
INSERT INTO flyspray_users_in_groups(user_id,group_id) VALUES(4,9);
INSERT INTO flyspray_users_in_groups(user_id,group_id) VALUES(4,10);
-- And lets fill the Database with 10 different configured task to simulate different cases:
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(1,1,1,0); -- id2 in first project
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(2,1,1,0); -- id3 in inactive project
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(2,1,1,3); -- id4 in inactive project
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(3,1,0,6); -- id5 status 0,supertask_id6
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(3,1,0,0); -- id6
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(3,1,1,6); -- id7
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(5,1,1,0); -- id8
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(5,1,1,8); -- id9
INSERT INTO flyspray_tasks(project_id,task_type,item_status,supertask_id) VALUES(5,1,1,9); -- id10
-- And now lets fill the database with many task referencing the 10 base tasks (10k or more rows) by repeating the following until enough (grows exponential x**2 !
INSERT INTO flyspray_tasks (project_id,task_type,item_status, supertask_id, item_summary) SELECT 3,1,1,FLOOR(RAND()*11),RAND() FROM flyspray_tasks;

These Examples can be used for finding bottle necks or problems on huge installations.

1981Backend/CoreTODOLowUnify event logging and notificationsConfirmed
1.1 devel220.03.201522.03.2015 Task Description

They are currently two separate mechanisms. Shouldn't be so. Events happen always, notifications when someone should be or have chosen to be notified about those events.

Besides, the current code is just a total mess that should be fixed/rewritten anyway, and we unfortunately also overlooked during the development phase 2 things: one new table, users_emails, and the fact that the user is now allowed to give several email addresses separated by a semicolon.

1973Backend/CoreTODOLowurl rewritePlanned
1.1 devel214.03.201511.02.2016 Task Description

Well, it needs a cleanup, per example:

fixed now

That should be something like:

The actual one is actually half a rewrite and half a GET version

1962Backend/CoreFeature RequestLowSMS notification - sending notifications via sms same a...New
211.03.201502.12.2015 Task Description

moved from FS#1697 into a separate task.

1960Backend/CoreBug ReportMediumforeign key relations between versions and tasksNew
209.03.201513.08.2015 Task Description

It seem that when deleting a version entry in a project, that tasks that have this version assigned are still connected to this deleted version. For example FS#1222 (on 2015-03-09).

There are several options to solve such things:

  • Deny deletion of version as long as tasks assigned to this project version.
    • Either by doing a testing SQL query to check this case coded in PHP. Take care to keep this centralized, must also be respected by an eventually later added Flyspray API (XMLRPC or whatever).
    • add SQL foreign key constraints with ON DELETE RESTRICT
      • Pro: some business logic can be directly enforced by SQL.
      • Cons: higher requirements for hosting, if using mysql innodb tables must be available on the hosting
  • Move the tasks of this version to a default fallback version before deleting the version tag.
    • Either doing one transaction doing : 1. move the tasks to its fallback version, 2. delete the version
    • add SQL foreing key constraint with ON DELETE SET $fallbackversionid. Some pros & cons like on the the denying option.

The same for other assignments for tasks.

This issue is similiar to the massop issue: (

1957User InterfaceFeature RequestLowautomatic temporary storing while writing/editing taskResearching
209.03.201512.03.2015 Task Description

If I write a task and press the back button in the brower and go forward again, my expection is that the
text I wrote is still existing, even if I didn't save it.

It is frustrating losing a well thought issue editing and having it to rewrite.

1868Backend/CoreFeature RequestLowOne issue for multiple componentsMaybe
2.0222.06.201312.11.2015 Task Description

Hi,I would like to see a enhancement, where you can submit/edit and assign it to multiple components, as it needs work from multiple sides.

For example: A user asks for a new object to be visualized. This includes work of the GUI designers and altering internal core structures. For internal management, I would like to label this for both teams.

1844TranslationsFeature RequestLowCzech translateWaiting on Customer
208.03.201312.12.2019 Task Description

Hello, sorry my english - i’m translated Flyspray ver to czech language - its attached


1823Backend/CoreFeature RequestLowComments with edit changesPlanned
2.0230.01.201306.03.2015 Task Description

When editing a ticket to change things like User, Percent done, etc should be able to add a comment. When changing 100% → 70% for example, there is usually a comment that goes along with that (e.g., you didn't yet finish changing the background color)

1809User InterfaceFeature RequestLow Searching closed tasks by Reason for closingMaybe
2.0217.01.201306.11.2015 Task Description

how can I search tasks by "Reason for closing"? There is an option for searching for status but I do not want search by tasks' status but by reason for closing it. Is it possible to do it?

1612Backend/CoreFeature RequestLowAllow Comments by anonymous UsersUnconfirmed
2.02120.10.200917.01.2013 Task Description

I would love a option to allow anom users to write comments! Maybe with CAPCHA...
I allow anom users to report bugs, but when I have a question to this bug, or the reporter wants to make a additions, he has to register...

I tried hacking it in the core: In the class.user.php at the end of the get_perms method I added:
$this→perms[$proj_id]['add_comments'] = 1;

But I has nothing changed. The I removed the check if the user had the right to make a comment in the template file, now I have a comment field for everyone, but anom user get a error message saying, that they should enter a comment... I searched a lot in the core files, but I don´t find the point where the comment a written in the database... I would a great help if you could give at least a hint :)

Another thing i tried was changing the user contructor, that every user with a negative ID get the ID 2, witch is a special "anom" user. But then you could not log out, a the admin not in...

Here the link to my site:

1539Backend/CoreFeature RequestLowSitemap.xml GenerationUnconfirmed
2.12112.01.200911.03.2015 Task Description

I would like the feature to have a sitemap.xml file be generated, say every xx days, set in the configuration.

1529Backend/CoreBug ReportLowInactivity-close doesn't work, bug is left openMaybe
2.0207.01.200924.09.2015 Task Description

If you define an inactivity-close value in hours/days (haven't tried weeks) the bug is still open when the time expires.

2609User InterfaceFeature RequestLowAdd an Effort Description fieldMaybe
307.05.202025.08.2020 Task Description

It would be nice to have a description field to put a brief note about the work done for a given effort item. This would help when using effort tracking for the purpose of making invoices to a client.

2601Public RelationsFeature RequestMediumhttp -> https missing redirection (19-04-09)Assigned
Florian SchmitzCristian Rodríguez R.321.04.202025.09.2020 Task Description


19-04-09 // More one year ago.

There are not http → https redirections.

Only one example:
- is not redirected to

Note: It is better to have the main website in + + must be redirected to

2598User InterfaceBug ReportLowuser registration in admin area: "username taken" but t...Assigned
peterdd1.0-rc10320.03.202027.03.2020 Task Description

Trying to add a new user having the same email address as an another user in the do=admin&area=newuser section results in

“That username is already taken. You will need to choose another one.”

instead of

“Email address has already been taken”

(I’ve stumbled on this issue because I have an older disabled user with the same email address)

peterdd1.0-rc10312.12.201918.02.2020 Task Description

PHP 7.4 is out now and a few things should be done to make Flyspray work well with it.
Nothing really breaks, but a view deprecation warnings should be fixed.

Flyspray source itself: Just a few new notices, most are yet fixed in the master branch.

Watching the PHP7.4 compatibility of dependencies defined by composer.json:

  • ADOdb/ADODb: 5.20.15 should be OK for Flyspray
  • swiftmailer/swiftmailer: We still use 5.* branch, so either do quickfix for a notice in a fork or upgrade/rewrite our integration to the 6.* branch.
  • ezyang/htmlpurifier: 4.12 OK
  • thephpleague/oauth2-client: unknown, we still use 0.13, last real source change was Nov 2018, to upgrade requires rewrite of integration into Flyspray and there is low demand for OAuth2.
  • dapphp/securimage: seems to be OK
  • jamiebicknell/sparkline: OK, but probably obsolete for us in future due
    • still annoying problems with our github/travis tests (problem of travis, not sparkline itself)
    • better solution (interactive hover infos, scales, screen size adaptive) by Flyspray source planned
2582Backend/CoreInformationLowHow to reach internal windows share (was: Internal URL)Unconfirmed
2552EmailBug ReportHighEmail TLS error (was 'Mail Adress encryption')Unconfirmed
2551AuthenticationInformationLowLDAP/AD integrationUnconfirmed
2545User InterfaceInformationLowCan't delete system wide 'Task Statuses'Unconfirmed
2333Backend/CoreInformationLowSet Default View on Login?Unconfirmed
2327Backend/CoreFeature RequestLowvisibility-option for private tasksUnconfirmed
2325User InterfaceFeature RequestLowbig image attachments: fit to browser window width in L...New
2318Installer and UpgraderBug ReportLowsyntax_plugin required when selected ckeditor in SetupRequires testing
2309User InterfaceBug ReportLowPHP noticed displayed on default "All Projects" page.Unconfirmed
2225GreekBug ReportVery LowGreek uses slash for datesConfirmed
2222GreekInformationVery LowGreek translation issuesUnconfirmed
2202Installer and UpgraderBug ReportHighUnable to upgradeUnconfirmed
2136User InterfaceBug ReportMediumAfter updating user properties as admin - return to wro...Confirmed
2134Backend/CoreBug ReportHighCannot assign a task to other projectPlanned
2121Backend/CoreBug ReportMedium'my assigned tasks' uses like %?% search instead of use...Confirmed
2108User InterfaceFeature RequestMediumSupport local language when install FlysprayConfirmed
2096Backend/CoreFeature RequestVery LowAdd an option to force httpsMaybe
2074User InterfaceBug ReportMediumOpening tasks from tasklistNew
2062User InterfaceTODOLowreview do=admin&area=editallusersNew
2042Backend/CoreBug ReportMediumfunction absoluteURI not using basedir and force_basedi...Unconfirmed
1988Installer and UpgraderBug ReportMediumPassword Field for AdminUnconfirmed
1982Backend/CoreBug ReportLowdouble entries in assignees listNew
1.1 devel320.03.201511.02.2016
1975Backend/CoreFeature RequestLowBatch processing of tasks in tasklistPlanned
1.1 devel3115.03.201513.12.2016
1969User InterfaceFeature RequestLowsearch form with Advanced search toggle layoutNew
1.1 devel312.03.201519.09.2015
1.1 devel307.03.201509.03.2015
Showing tasks 201 - 250 of 323 Page 5 of 7

Available keyboard shortcuts


Task Details

Task Editing