[{"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Need to finalize the constitution document", "title": "Finish Auth", "created_at": "2014-02-27T16:05:32+00:00", "tags": [], "updated_at": "2025-10-17T05:58:13+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 2, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 5, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard can become a powerful tool with which user experience professionals can help provide a long-overdue level of polish to OpenStack. Features associated with this are/may/should be listed below, feel free to add any that are necessary.\n\nMuch of this overlaps with needs of those using StoryBoard for bugtracking.\n\n(Zara has changed the title of this to reflect comments of 16/02/16)", "title": "Storyboard support for UX and Bugtracking", "created_at": "2014-05-13T20:05:33+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2016-02-16T17:23:04+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 85, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 4, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Story descriptions should allow rich markup similar to Markdown or Restructured Text.", "title": "Storyboard should allow rich markup in descriptions", "created_at": "2014-05-21T21:17:01+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T17:06:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 94, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We don't actually know what this means yet. Set up a spec and update the description once we know what's what\n\nCurrent implementation: users can add and remove tags from stories. Those tags are not yet indexed in searches (at least, they don't appear in search results). There are no special or protected tags, and any tags can be removed by any logged in user.\n\nThey ought to be searchable. Beyond that, still hazy; we're probably best looking at cross project tagging specs.\n\nWe've now done some work to implement free-form tags (see: https://github.com/openstack-infra/infra-specs/blob/master/specs/storyboard_story_tags.rst). The rest still awaits...", "title": "[1.1] Stories should be taggable", "created_at": "2014-05-21T21:33:57+00:00", "tags": ["low-hanging-fruit", "storyboard-feature-request"], "updated_at": "2019-05-02T17:08:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 98, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 4, "key": "invalid"}, {"count": 15, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When changes happen to something the user is subscribed to, they should have the option to receive an email. This story is dependent on the notifications list, and may take the form of a daily summary, a large amount of instant emails, or some other sophisticated filtering rules.\n\nThe scope of this work is to build a working email engine, with a small, usable notification test case: \"Send an email whenever there is a new story in a project a user cares about\".\n\nBasic email notifications that overlap with user preferences are now working.", "title": "[1.2] Notification Emails", "created_at": "2014-05-21T21:40:30+00:00", "tags": ["low-hanging-fruit", "storyboard-emails", "storyboard-feature-request"], "updated_at": "2019-05-02T17:12:30+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 99, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Lots of things need to hook into storyboard, and we'd like them to use a common CLI library. We need to build one.", "title": "[1.1.1] Provide CLI library", "created_at": "2014-05-21T21:43:14+00:00", "tags": ["low-hanging-fruit", "storyboard-feature-request"], "updated_at": "2019-05-02T17:15:42+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 101, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Would be nice to have an REST endpoint to get storyboard configuration information.", "title": "Storyboard needs a configuration REST endpoint", "created_at": "2014-09-15T16:55:33+00:00", "tags": ["low-hanging-fruit", "storyboard-feature-request"], "updated_at": "2019-05-02T17:35:30+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 41, "story_type_id": 1, "security": null, "id": 296, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard should report its version in the UI.", "title": "Add build version SHA's to API and Client", "created_at": "2014-10-20T15:34:24+00:00", "tags": ["storyboard-feature-request", "low-hanging-fruit"], "updated_at": "2019-03-11T21:30:32+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 318, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Users should be able to visit URLs such as:\n\n  https://storyboard.openstack.org/12345678\n\nand at least be redirected to an appropriate URL.  Storyboard should also display such links for easy copy/paste.  Gerrit does something similar.\n\nNB: direct addressability of tasks may or may not have a bearing here.", "title": "Friendlier story URLs", "created_at": "2014-12-08T18:43:12+00:00", "tags": ["storyboard-feature-request"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 2000069, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In http://ci.openstack.org/storyboard/webapi/v1.html it is not included the format for the query param passed to search endpoints.", "title": "query param for search REST api is not documented", "created_at": "2014-12-31T06:09:37+00:00", "tags": ["low-hanging-fruit", "storyboard-docs", "storyboard-bug"], "updated_at": "2019-05-03T22:11:29+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 811, "story_type_id": 1, "security": null, "id": 2000093, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 3, "key": "inprogress"}], "description": "When searching for users, we show their first name and last name. Sadly, there are more than one John Smith in the world, and therefore it's almost impossible to figure out _which_ John Smith you want.", "title": "Storyboard Duplicate Users are indistinguishable", "created_at": "2015-01-26T16:33:28+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2019-10-18T12:53:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000132, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If we don't have some config vars in place, such as the cronjob directory, storyboard tries to create a cronjob dir until same working directory: ~/storyboard . And it raises an error because that directory already exists.\nReal error to show should be warn that the config is not present, or have sane defaults instead.", "title": "Storyboard should better track lack of configuration", "created_at": "2015-02-05T14:02:40+00:00", "tags": ["storyboard-bug"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000154, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If a branch or milestone is added to a project, this should appear in the notifications list if a user is subscribed to this project.", "title": "StoryBoard branch and milestone events should appear in events timeline", "created_at": "2015-02-12T18:02:10+00:00", "tags": ["storyboard-notifications", "storyboard-feature-request"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000162, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Fulltext indexes are only supported when using the InnoDB engine from MySQL version 5.6 and higher. Also, other database backends (eg MariaDB) aren't thought about by the migrations which add these indexes, so they are sometimes not created.\n\nWhen the indexes are missing, search gives a confusing error about not being able to find fulltext indexes, but it should really fall back to a different search method somehow.", "title": "Search should fall back on something other than fulltext indexes", "created_at": "2015-11-24T12:47:30+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T20:23:26+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000429, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 8, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 4, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The current boards UI is satisfactory for basic use, but requires improvements to really be useful.\n\n## Card details\n\nIn most kanban implementations, clicking on a card will display detailed information about the card. In StoryBoard, doing that will take you to the story page. That is a similar thing, but it means you need to navigate back to the board when you've looked at card details, and also isn't the greatest way to approach this with tasks.\n\nInstead, we should display a modal detailing information about the card (such as assignee(s) and due dates, when due-dates become a thing). Cards which are stories should show the tasks in that story on the modal. The modal should also allow editing of all the information displayed.\n\n## Due date\n\nThere also needs to be some way of displaying the due date of a task on the card, perhaps a colour-coded hint?\n\n## Metadata hints\n\n* Story tags should maybe cause some kind of hint on the cards in the UI?\n* Cards which are tasks in the same story should have a hint to show the connection\n    * Story name somewhere?\n* The assignee of cards should be indicated somewhere\n\n## Ease of adding cards\n\nIt is now fairly easy to add existing tasks and stories to a board, but creating an entirely new story/task to add to a board is annoyingly convoluted (create story, create tasks, go to board, find story/tasks, add them). The \"Add card\" UI should allow users to create new stories and new tasks in an existing story with minimal clicks and renavigation.\n\nWe should also make it possible to add stories/tasks to a board from the story detail page.\n\n## Bugs\n\nInteracting with lanes long enough to have a scroll bar isn't very fun, dragging cards to the top and bottom of the lane should cause it to scroll.\n\nShould it be possible to set permissions when creating the board?", "title": "Improve kanban board UI", "created_at": "2016-01-15T12:39:22+00:00", "tags": ["low-hanging-fruit", "storyboard-feature-request", "storyboard-worklists"], "updated_at": "2016-01-16T00:40:01+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000464, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 3, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "<small class=\"text-muted\">Edit this description to see the old version, which the commments up to and including the one from `2016-02-03 at 11:25:48` are referring to.</small>\n\n## Use cases\n\n* A project manager wants to assign due dates to tasks in a project kanban, according to some set of deadlines she has planned.\n* A project manager wants to assign a task to a user (eg. assign someone from Purchasing to a \"purchase hardware\" task), and set a due date for the completion of the order.\n* A manager at company A needs feature X of some open project P fixed by some date. They set a due date for it in the kanban their team is using in P's StoryBoard instance. A manager at company B needs feature X by a different date, and sets a due date on feature X which matches their expectations, and sets their own kanban to show the due date they created.\n* A developer needs to update the due date for a particular task by moving it from one named due date for the board to another.\n\n## Proposed Implementation\n\n### Database\n\nA new table, `due_dates`:\n\n* `id` <span class=\"text-muted\">(auto-generated, primary key)</span>: The ID of the due date.\n* `name` <span class=\"text-muted\">(optional)</span>: The name of the due date, for easily identifying what the due date is for.\n* `date`: The actual due date.\n* `private`: Whether or not the due date is visible **only** to those with the correct permissions.\n* `created_at`: The date the due date was created at.\n* `updated_at`: The date the due date was last updated.\n\nNew mapping tables:\n\n* `due_date_permissions`: Maps due dates to their permissions, will work similarly to the boards permissions.\n* `board_due_dates`: Maps boards to the due dates that are available for use/displayed in them.\n* `worklist_due_dates`: Maps worklists to the due dates that are available for use/displayed in them.\n* `task_due_dates`: Maps tasks to the set of due dates they have been asserted to have.\n* `story_due_dates`: As above, but with stories.\n\n### Webclient\n\nDue dates can be created either on a story detail page or on the board/worklist detail page. If created on the story detail page, the permissions default to the creator being the only owner, with no-one set to have read-only permissions. If created on the board/worklist detail page, the permissions default to match the board/worklist permissions.\n\nDue dates can be \"added\" for use/display in a board. If one card has more than one due date available to display in the board, it will display the closest date by default, with an indication that there are other due dates asserted in the board. Clicking on the card [should display a modal]( https://storyboard.openstack.org/#!/story/2000464) which contains a list of all due dates (as well as the other card data).\n\nThe view of board/worklist contents should be able to be filtered by due date, with all contents shown by default.\n\nThe board/worklist detail page should display a list of all due dates available in the board, and allow them to be edited in place by those with the right permissions. This list should also indicate how many cards are related to each due date.\n\n\n<!-- Old description is here, do not delete.\n\nThe kanban boards would be more useful for assisting with the management of projects if there was a way to display when cards in the board have a deadline date.\n\nThis deadline date could be per-board, or it could be a hard deadline by which the task must be completed (eg. a thing is happening on such-a-date, this task must be done by then at the absolute latest).\n\nThis means:\n* It should be possible to create a **deadline** for a task, which is associated with the underlying task, not a card.\n    * The **deadline** should be something caused by a real hard limit, such as \"we are delivering this task's outcome on that date\".\n* It should be possible to create a **target date** for a card, which can be different in different boards.\n    * The **target date** must not be able to be any later than the underlying task's **deadline**, if it has one.\n    * The **target date** should be caused by a human deciding they want to have the task done by the date, not a limit which affects multiple people.\n* It should be possible to associate a **target name** with a **target date**, to allow easy understanding of why **target dates** are the dates they are, and also to provide a simple way to change the date across multiple cards.\n* The board detail page needs to show a list of the targets/deadlines associated with cards in the board, and also the number of cards associated with each target/deadline.\n\n-->", "title": "Show due dates on cards in kanban boards", "created_at": "2016-01-29T17:13:23+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2021-03-26T18:57:29+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000476, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Based on some things in this etherpad: https://etherpad.openstack.org/p/nova-bugs-team\n\nEditing own comments requires a way of preserving history in order to follow old conversation.\n\nThere are mixed views about rating comments, but am including it for completeness.\n\nQuote: https://review.openstack.org/#/c/288944/\n\nPermalink: https://review.openstack.org/#/c/289078/\n\nAPI for threading: https://review.openstack.org/#/c/288997/", "title": "Improve StoryBoard Commenting", "created_at": "2016-03-07T18:02:27+00:00", "tags": ["low-hanging-fruit", "storyboard-feature-request"], "updated_at": "2021-01-17T21:59:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000504, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 8, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We've started this already, as part of the 'fix tasks' story (https://storyboard.openstack.org/#!/story/2000463), but it's fairly complex in its own right, so now it gets its own story.", "title": "Add Notes To Tasks", "created_at": "2016-03-11T11:05:30+00:00", "tags": ["low-hanging-fruit", "storyboard-feature-request"], "updated_at": "2019-05-02T20:40:45+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000511, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 4, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Turns out the user docs were wrong and we don't have any (http://docs.openstack.org/infra/storyboard/install/manual.html). We should fix it so an operator can quickly spin up a new instance.\n\nEasiest way seems to be using the ansible role at: https://galaxy.ansible.com/detail#/role/6187\n\nWe should note any problems here.\n\nDocs should mention:\n\n- ansible role\n\n  - what to run and where to run it\n- bug for admin users \n    - http://docs.openstack.org/infra/storyboard/install/development.html#make-user-an-admin-current-bug)", "title": "Operator Docs for StoryBoard", "created_at": "2016-04-01T14:31:52+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-07T10:18:06+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000535, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "While doing the infra bug day, I thought it would be good to have a way\nto query Storyboard for stories of a given group/project that are unassigned.", "title": "Allow to list stories of a group/project unassigned", "created_at": "2016-04-13T15:28:16+00:00", "tags": ["storyboard-searching-enhancements", "low-hanging-fruit"], "updated_at": "2019-06-07T17:52:34+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 153, "story_type_id": 1, "security": null, "id": 2000549, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When triaging stories I would like the ability to mark some stories as duplicates of other stories.\n\nFor an example with these two stories, one should be marked as a duplicate of the other:\n\nhttps://storyboard.openstack.org/#!/story/2000474\n\nhttps://storyboard.openstack.org/#!/story/2000521 \n\nIt would be useful to reference the other story as some sort of metadata in the status as well, so that the duplicates can be tracked. For bonus points, a cross-post about it in the non-duped bug would be useful for a paper trail.", "title": "StoryBoard lacks ability to mark stories as duplicates.", "created_at": "2016-04-13T21:24:01+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T18:06:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1120, "story_type_id": 1, "security": null, "id": 2000552, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 4, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 10, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Some stories may contain information that cannot be shared publicly, for example bugs which lead to security vulnerabilities. StoryBoard needs the ability to mark a story as \"private\", such that it can only be seen by a configurable list of people. This list of people will need to be different per-story and may change over the life of the story.\n\nThe contents (and existence of) private stories and the tasks contained therein *must* be invisible to anyone not in the permission list in all the places stories/tasks can be found, including due dates, worklists, boards, API, and so on. Addition of a very visible warning banner is also preferred, to warn viewers the bug is private.\n\nIt is understood that the existence of _a_ private bug can be determined by enumerating bug ID numbers, so as long as the contents are not accessible this is acceptable (at least not a regression from Launchpad).", "title": "Stories should be able to be private", "created_at": "2016-04-29T16:20:43+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T17:53:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000568, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If our single sign on provider is not providing, StoryBoard login should timeout. Currently it does not timeout and continues to attempt to connect with the sso even with a page refresh.", "title": "If single sign on is down, StoryBoard login should timeout", "created_at": "2016-06-07T18:04:02+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T21:03:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000632, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We should allow people who are subscribed to worklists and/or boards to elect to receive notifications for changes in the boards/worklists.", "title": "Notifications from worklists and boards", "created_at": "2016-06-14T10:15:12+00:00", "tags": ["storyboard-notifications"], "updated_at": "2019-06-07T17:41:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000644, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I use them for reference and give them out, but they can be confusing once out of date. Having an automated thing to make a diagram each time the schema updates would be nice. I'm not sure how it would work. currently, this is what I do:\n\nHow to make diagram:\n\n1) install dia on vm, sudo apt-get install dia\n\n2) get random script off internet, save with whatever name: http://labpower.teipir.gr/prekageo/make_dia_database_diagram.py\n\n3) chmod +x it\n\n4) dump db contents, eg: `mysqldump storyboard -u root -p > storyboarddump.sql`\n\n5) run command given in example, eg: `./make_dia_class_diagram.py < storyboarddump.sql > storyboard_diagram_15th_march.dia`\n\n6) convert output into another format if you want, eg: ` dia -t svg storyboard_diagram_15th_march.dia`\n\n7) scp it over (see separate guide)\n\n8) separate tables out on inkscape (just click and drag, you'll see)\n\n... not very sure how the last bit would be automated. not the most secure thing in the world, but that bit's fixable.\n\ncurrent diagram (25th July) at http://i.imgur.com/arN0wK3.png :\n\n<img height=600 src=\"http://i.imgur.com/arN0wK3.png\">", "title": "Automate db-schema diagram every time StoryBoard Database Updates", "created_at": "2016-06-21T11:15:18+00:00", "tags": [], "updated_at": "2016-07-25T14:26:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000654, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Archived cards in a lane cause other cards to have non-sequential positions, which could cause trouble when deleting cards then moving others into what the web UI sees as that position.\n\nThe same is true of cards of tasks from stories that have been deleted.", "title": "Certain types of cards cause card position to be inconsistent", "created_at": "2016-06-30T15:51:07+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-06-21T18:09:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000666, "users": []}, {"status": "active", "task_statuses": [{"count": 4, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When doing bug triage, we quite often ask for log files. These log files can become quite huge. It's also often a set of log files we need for that. Sometimes it's a packed file (\\*.tar, \\*.zip, ...) which combines all these things (for example, the popular tool *sosreport* collects a lot of debug information and offers that as \\*.tar).\n\nAs bug reports can live up to 18 months (or longer if not explicitly expired), and this information needs to be accessible. Linking to and relying on 3rd party providers (dropbox, ...) can potentially mean the loss of debug information which can make a bug report not actionable anymore.\n\nLP uses the *launchpadlibrarian* for that.", "title": "Make the access to large files possible", "created_at": "2016-07-20T10:35:54+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2019-11-26T02:10:45+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 134, "story_type_id": 1, "security": null, "id": 2000679, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a project manager I may want to allow user or owner access for several lists pertaining to a dynamic set of users, such as a development team for a project. Adding every user to every list is tedious.", "title": "Need to be able to define teams for workboards/lists", "created_at": "2016-11-03T22:55:20+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-06-07T18:07:28+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 222, "story_type_id": 1, "security": null, "id": 2000795, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 21, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 29, "key": "merged"}, {"count": 23, "key": "inprogress"}], "description": "Migrate Project from Launchpad to Storyboard", "title": "Migrate Launchpad OpenStack Projects to Storyboard", "created_at": "2017-02-21T21:30:19+00:00", "tags": [], "updated_at": "2024-07-22T13:16:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2000876, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Forward:\nMy apologies in advanced if I'm creating this for the wrong project/place, but I'm a bit confused where to go with this cross-project issue that \"may\" be infra related.\n\n\nDescription:\nSome of my recent neutron gate jobs have been failing in the nova server tests. Digging into the logs [1] I find errors like::\n--------\n2017-03-01 15:58:09.754 6663 ERROR nova.virt.libvirt.host   File \"/usr/local/lib/python2.7/dist-packages/libvirt.py\", line 105, in openAuth\n2017-03-01 15:58:09.754 6663 ERROR nova.virt.libvirt.host     if ret is None:raise libvirtError('virConnectOpenAuth() failed')\n2017-03-01 15:58:09.754 6663 ERROR nova.virt.libvirt.host libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Connection refused\n2017-03-01 15:58:09.754 6663 ERROR nova.virt.libvirt.host \n2017-03-01 15:58:09.759 6663 ERROR nova.compute.manager [req-d8743b0b-5b27-4234-94ae-a871f883d729 tempest-FloatingIPsTestJSON-1789471147 tempest-FloatingIPsTestJSON-1789471147] [instance: 25eedb62-7e2e-432c-8a15-b88b2d39d3f3] Instance failed to spawn\n--------\n\nWhen searching logstash for this error [2], it appears to be widespread. I search around in some various project bugs and couldn't find anything that's tracking these types of issues.\n\n\nPlease help me understand how to proceed with an error like this that appears to be cross-project.\n\nThanks\n\n[1] http://logs.openstack.org/62/421562/6/check/gate-tempest-dsvm-neutron-full-ubuntu-xenial/2888b3b/logs/screen-n-cpu.txt.gz?level=ERROR\n[2] http://logstash.openstack.org/#dashboard/file/logstash.json?query=message%3A%5C%22libvirtError%3A%20Failed%20to%20connect%20socket%20to%20'%2Fvar%2Frun%2Flibvirt%2Flibvirt-sock'%3A%20Connection%20refused%5C%22", "title": "\"libvirtError: Failed to connect socket to '/var/run/libvirt/libvirt-sock': Connection refused\" (322)", "created_at": "2017-03-02T17:12:36+00:00", "tags": [], "updated_at": "2019-05-02T21:41:30+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1398, "story_type_id": 1, "security": null, "id": 2000890, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a user I want to have more finegrained options for searches and filtering when creating board lanes.\n\nSome examples:\n- Filter stories/tasks by event date: find tasks that were merged in the last two weeks\n- Filter stories by assigned user or lack thereof: find open tasks that have nobody assigned to them\n\nWhen displaying tasks in a search result or a board lane, it would be nice to be able to specify ordering rules:\n- per date\n- grouped per Story (color coding could be enough)\n- per arbitrary attribute (see https://storyboard.openstack.org/#!/story/2000912 )", "title": "Add more searching, filtering and ordering options", "created_at": "2017-03-13T21:05:41+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2018-12-20T20:20:29+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 635, "story_type_id": 1, "security": null, "id": 2000913, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "I have added a version constraint for haproxy in neutron project bindep.txt and it's failing in gate [0]. Maybe it's not a bug and it's just that I didn't do it properly. However I miss some examples about this in the documentation.\nThanks!\n\n[0] https://review.openstack.org/#/c/451225/1", "title": "bindep failing with version constraints", "created_at": "2017-03-29T10:28:11+00:00", "tags": [], "updated_at": "2019-07-02T18:51:06+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1585, "story_type_id": 1, "security": null, "id": 2000955, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 3, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It would be useful to be able to filter tasks based on tags that their stories have, particularly when using automatic worklists.\n\nSpecifically, an automatic worklist containing `Tasks matching status:todo and not matching tag:triaged ...` will be useful for folk who wish to triage incoming/outstanding tasks in their project. Tasks are used rather than stories because status (and project) are related to tasks, rather than stories.", "title": "Allow tasks to be filtered based on their story's tags", "created_at": "2017-04-12T14:36:29+00:00", "tags": ["storyboard-worklists", "storyboard-searching-enhancements"], "updated_at": "2019-06-21T18:11:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000982, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When creating a story:\n\n    500: POST /api/v1/tasks: (InternalError) (1213, u'Deadlock found when trying to get lock; try restarting transaction') u'UPDATE stories SET updated_at=%(updated_at)s WHERE stories.id = %(stories_id)s' {'updated_at': datetime.datetime(2017, 4, 12, 14, 36, 29, 506355), 'stories_id': 2000982}\n\nThis resulted in one of the tasks not being created.", "title": "Investigate mitigating deadlock issues", "created_at": "2017-04-12T14:39:12+00:00", "tags": [], "updated_at": "2019-06-24T23:39:44+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000983, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Some of the OpenStack cookie cutter repos have references to launchpad.\nSome examples:\nhttps://github.com/openstack-dev/cookiecutter/blob/master/cookiecutter.json\nhttps://github.com/openstack-dev/specs-cookiecutter/blob/master/%7B%7Bcookiecutter.repo_name%7D%7D/template.rst\n\nThese should be updated to reference Storyboard instead of launchpad to setup new projects right!", "title": "Cookie cutter files need to be updated for Storyboard", "created_at": "2017-09-15T20:23:58+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T22:02:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001200, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 3, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I update a story I don't need an email confirming what I have just done. This should be independent of being notified about other's actions", "title": "Need an option to disable notifications for my own actions", "created_at": "2017-12-18T14:16:10+00:00", "tags": ["storyboard-notifications", "blocking-storyboard-migration"], "updated_at": "2019-06-28T16:47:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001412, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "## Use cases\n\n1.  As the chair of a SIG (self-healing) who uses Storyboard to track activities which do not directly relate to code reviews or other development activities, such as \n\n    - \"gather information from a bunch of PTLs\",\n    - \"document foo\",\n    - \"plan the PTG\" etc.\n\n    I want to track these activities with statuses such as `Done` (rather than `Merged`) when they are completed, and `Blocked` when there is nothing .  I also want to be able to mark tasks as `Abandoned` when plans change (which presumably makes additional sense in a pure dev context, given that Gerrit code reviews can be abandoned).\n\n2.  As someone who has just started dogfooding Storyboard, I want to be able to file bugs or enhancement requests for Storyboard itself (and for other projects), and have them marked as `Duplicate` or `Won't fix` if either of those resolutions are appropriate.\n\n## Suggested states to add\n\n- `Done`\n- `Abandoned`\n- `Duplicate`\n- `Won't fix` (which should be noted is fundamentally different from `Invalid`; only the latter is the result of a misunderstanding, whereas the former implies that the report was valid but still won't be fixed)\n- `Blocked` (although I'm not so sure about this one, since if it's blocked from the PoV of person A as waiting for person B, then from the PoV of person B, it's not blocked, and one of the nice things about StoryBoard is that it supports different perspectives on the same tasks)", "title": "Provide more states for Storyboard tasks", "created_at": "2018-01-04T00:55:39+00:00", "tags": [], "updated_at": "2018-08-06T13:12:25+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001432, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "There should be a bot that expands links to story URLs/IDs posted in an IRC channel, responding with the title of the story and possible other information, similar to what the openstack bot currently does for launchpad bugs.", "title": "IRC bot for expanding referenced stories", "created_at": "2018-01-16T12:51:01+00:00", "tags": ["blocking-storyboard-migration", "irc bot"], "updated_at": "2019-05-03T21:28:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001476, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I used the storyboard client to create a new worklist. I received a 500 error from the client so assumed the list was not created, but it was (https://storyboard.openstack.org/#!/worklist/246). I cannot edit it in the UI. I don't see anything obvious about the properties of that worklist to explain that.\n\nclient-side traceback: https://pastebin.com/4tMZxawf\n\nclient code: https://review.openstack.org/537701", "title": "It is possible to create a worklist without all of the arguments and then not be able to edit it", "created_at": "2018-01-25T18:22:57+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-06-07T18:05:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001498, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently each email notification has a rather unique subject, like \"Jens Harbott commented on $story\". This makes the MUA assume that each mail is a new thread. It would make consumption of notifications about a story much easier if they could be sent in a way that allows the receiver to place all mails that concern a common story into a single thread.\n\nOne option, similar to what launchpad does, would be having the subject just contain the title of the story and its ID. That would still create a new thread when someone changes the title, but that should be o.k.", "title": "Send emails with threadable subject", "created_at": "2018-03-06T09:50:04+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T22:40:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001634, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I want to search for all stories created by myself, this isn't possible (or if it is, there's no clues in the GUI for how one might do this). On the advaced search page, I would expect to be able to type owner:self or creator=bswartz to search on metadata. Also I would expect there to be some examples displayed to get me started on doing advanced searches, or a link to the documentation that clearly explains the metadata search syntax and a list of the keys and value formats.", "title": "No obvious way to do searches on story metadata", "created_at": "2018-03-15T15:26:22+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-05-02T22:52:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 825, "story_type_id": 1, "security": null, "id": 2001677, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently, there is no way for users to update their email address in the database once they start using StoryBoard. In preferences, in the email notification section, it would be nice to have a way to update email.", "title": "Ability to change notification email in webclient", "created_at": "2018-03-27T17:59:43+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-28T16:50:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2001746, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I submitted a patch (https://review.openstack.org/#/c/559339/) that was linked to a Story/Task. I got email about it, but the URL is incorrect. Here's the email:\n\nFrom: <storyboard@storyboard.openstack.org>\nDate: Fri, Apr 6, 2018 at 10:05 AM\nSubject: Task \"do not use 'async' keyword in code\" was updated.\nTo: <opensrloo@gmail.com>\n\n\nTask \"do not use 'async' keyword in code\" was updated by Openstack Gerrit:\n\nURL: None#!/story/1751306\n\nFull Task Details:\n\nTask: do not use 'async' keyword in code\nStory: do not use 'async' keyword in code\nProject: openstack/ironic\nAssignee: Oleksiy Petrenko\nStatus: review\nPriority: high\nNotes: None\n\nType of Change: {u'status': u'review'}\n(prior to change, {u'status': u'merged'} )", "title": "incorrect storyboard URL in notification email", "created_at": "2018-04-06T14:22:38+00:00", "tags": ["low-hanging-fruit", "storyboard-emails"], "updated_at": "2019-06-07T17:58:45+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 2339, "story_type_id": 1, "security": null, "id": 2001792, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We wanted to add story 2001831 to a manually-managed lane of board 64. It appeared in the query results for an automatic lane that was archived, though, and so the UI thought it was already in the board. Clearing the query terms for the automatic wordlists 288 and 287 allowed us to add the story to a lane.", "title": "Cannot add stories to board if they are in an archived lane", "created_at": "2018-04-16T14:03:00+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-06-07T18:00:04+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001859, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "[This bug](https://bugs.launchpad.net/tripleo/+bug/1699463) was reported by Ji\u0159\u00ed Str\u00e1nsk\u00fd, but the [migrated story](https://storyboard.openstack.org/#!/story/1699463) says it was reported by \"Ji\u00c5\u2122\u00c3\u00ad Str\u00c3\u00a1nsk\u00c3\u00bd\".", "title": "Unicode issue with (at least) reporter names in migration from Launchpad", "created_at": "2018-08-24T18:45:15+00:00", "tags": [], "updated_at": "2018-08-24T18:45:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 667, "story_type_id": 1, "security": null, "id": 2003554, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 151, "key": "invalid"}, {"count": 6, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Providing assurances and useful feedback to deployers preparing to upgrade\nservices vastly improves the upgrade experience. One basic step that we can\nmake consistent across OpenStack projects is to provide \u00e2\u0080\u009cupgrade checks\u00e2\u0080\u009d that\ncan be run prior to upgrade that will help identify any known issues that would\nresult in that upgrade failing.\n\nhttps://governance.openstack.org/tc/goals/stein/upgrade-checkers.html", "title": "Infrastructure: Support Pre Upgrade Checks", "created_at": "2018-09-04T13:31:23+00:00", "tags": ["goal-upgrade-checkers"], "updated_at": "2024-09-18T18:54:15+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 363, "story_type_id": 1, "security": null, "id": 2003642, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When browsing tasks by (for example) story ID and task status, a 400 error is produced rather than useful results.\n\n    400: GET /api/v1/tasks: Unknown argument: \"offset\"\n\nNote that browsing just by story ID works as expected. An example: https://storyboard.openstack.org/#!/search?story_id=2001546&status=inprogress", "title": "Browsing tasks on the search view sometimes gives an error", "created_at": "2018-09-05T08:39:14+00:00", "tags": ["bug", "low-hanging-fruit"], "updated_at": "2019-03-12T15:44:17+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2003663, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "500: PUT /api/v1/worklists/226: Could not find a FROM clause to join from. Tried joining to story_permissions, but got: Can't find any foreign key relationships between '%(140266908559504 anon)s' and 'story_permissions'.", "title": "Mixed Story & Task Automatic Worklist Error", "created_at": "2018-09-09T16:59:09+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-06-28T16:25:15+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2003701, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 3, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It was requested that there be project group descriptions similar to project descriptions.", "title": "Project Group Descriptions", "created_at": "2018-09-27T00:14:03+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-12T04:50:57+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2003886, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As of right now, someone can push a patch with story and task listed in the commit and things will auto update to make the task state 'Reviewing' but it should also set the assignee to the person that pushed the patch.", "title": "Auto populate assignee to task when review is pushed", "created_at": "2018-10-02T19:27:46+00:00", "tags": ["its-storyboard"], "updated_at": "2019-06-07T18:08:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2003944, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently, the migration script only handles the migration/conversion of bugs to stories. It has been requested that we also migrate blueprints as well. It would be nice to be able to optionally run the script to migrate just bugs, just blueprints or both types of items. \n\nThe code here is what will need to be added to/modified: https://github.com/openstack-infra/storyboard/tree/master/storyboard/migrate \n\n------------------------------------------------------------------------------------\nThis is discussed during QA PTG sessions in Denver 2018.\n\nBP script from storyboard team and then finish the Patrole projects migration\n\n- https://etherpad.openstack.org/p/migration-from-lp-to-sb", "title": "Blueprint migration script", "created_at": "2018-11-29T11:37:36+00:00", "tags": ["blocking-storyboard-migration", "storyboard-feature-request"], "updated_at": "2019-06-21T17:31:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 691, "story_type_id": 1, "security": null, "id": 2004465, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "During QA PTG Denver, we discussed to add more  field in story for user interest like heat / vote / points etc. Those field can be useful to catagorized the story based on user points.\n\nhttps://etherpad.openstack.org/p/migration-from-lp-to-sb", "title": "Adding more field in story to indicate user interest", "created_at": "2018-11-29T11:46:33+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T17:59:45+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 691, "story_type_id": 1, "security": null, "id": 2004466, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "It will be good to have a way to not diverge too much the set of used tags. One possible solution can be sort proposed tags by popularity. or any other best way to do so.\n\nThis is was something we discussed during QA PTG denver about requirement of QA to migrate on storyboard. \n- https://etherpad.openstack.org/p/migration-from-lp-to-sb", "title": "Implement way to not diverge too much the set of used tags", "created_at": "2018-11-29T11:54:20+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-15T10:19:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 691, "story_type_id": 1, "security": null, "id": 2004467, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Improve all aspects of documentation", "title": "documentation improvement", "created_at": "2019-01-08T11:54:21+00:00", "tags": ["storyboard-emails"], "updated_at": "2019-06-21T23:23:44+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1957, "story_type_id": 1, "security": null, "id": 2004723, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "With the oauthlib 3.0.0 release on January 8, Storyboard OpenID logins in new deployments began to fail with a 500 internal server error on returning from the identity provider. The same exception is raised in `storyboard.tests.api.auth.test_oauth.TestOAuthAuthorizeReturn.test_valid_response_request` and the accompanying traceback points to changes in oauthlib as a likely culprit:\n\n```python\nTraceback (most recent call last):\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/mock/mock.py\", line 1305, in patched\n    return func(*args, **keywargs)\n  File \"storyboard/tests/api/auth/test_oauth.py\", line 384, in test_valid_response_request\n    **self.valid_params)\n  File \"storyboard/tests/base.py\", line 389, in get_json\n    expect_errors=expect_errors)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/webtest/app.py\", line 335, in get\n    expect_errors=expect_errors)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/webtest/app.py\", line 628, in do_request\n    res = req.get_response(app, catch_exc_info=True)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/webob/request.py\", line 1323, in send\n    application, catch_exc_info=True)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/webob/request.py\", line 1291, in call_application\n    app_iter = application(self.environ, start_response)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/webtest/lint.py\", line 200, in lint_app\n    iterator = application(environ, start_response_wrapper)\n  File \"storyboard/api/middleware/token_middleware.py\", line 49, in __call__\n    return self.app(env, start_response)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/pecan/middleware/recursive.py\", line 56, in __call__\n    return self.application(environ, start_response)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/pecan/core.py\", line 840, in __call__\n    return super(Pecan, self).__call__(environ, start_response)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/pecan/core.py\", line 683, in __call__\n    self.invoke_controller(controller, args, kwargs, state)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/pecan/core.py\", line 574, in invoke_controller\n    result = controller(*args, **kwargs)\n  File \"storyboard/common/decorators.py\", line 43, in decorate\n    return func(self, *args, **kwargs)\n  File \"storyboard/api/v1/auth.py\", line 71, in authorize_return\n    headers=request.headers)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/endpoints/base.py\", line 87, in wrapper\n    return f(endpoint, uri, *args, **kwargs)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/endpoints/authorization.py\", line 104, in create_authorization_response\n    request, self.default_token_type)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py\", line 247, in create_authorization_response\n    self.validate_authorization_request(request)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/grant_types/authorization_code.py\", line 365, in validate_authorization_request\n    self._handle_redirects(request)\n  File \"/home/zuul/src/git.openstack.org/openstack-infra/storyboard/.tox/py27/local/lib/python2.7/site-packages/oauthlib/oauth2/rfc6749/grant_types/base.py\", line 253, in _handle_redirects\n    raise errors.InvalidRedirectURIError(request=request)\noauthlib.oauth2.rfc6749.errors.InvalidRedirectURIError: (invalid_request) Invalid redirect URI.\n```\n\nDowngrading to the most recent 2.x.x release of oauthlib (2.1.0 from May 2018) results in expected/working OpenID behavior.", "title": "InvalidRedirectURIError with oauthlib 3.0.0", "created_at": "2019-01-16T15:19:06+00:00", "tags": ["dependency-upgrades"], "updated_at": "2019-06-21T17:39:53+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": null, "id": 2004789, "users": []}, {"status": "active", "task_statuses": [{"count": 2, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "As of right now, a user does not have the ability to search for storyboard components using tags like (assignee_id, creator_id). This story is to bring over this functionality into the web-client by typing commands like project:openstack-infra/storyboard to narrow their search. This also allows users to search for tags that aren't included for that component.", "title": "Implementing manual browsing", "created_at": "2019-02-21T21:58:47+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T18:02:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5604, "story_type_id": 1, "security": null, "id": 2005067, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When adding a new tag to multiple stories, the convenience StoryTag object creation performed by the PUT method can race if one hasn't finished before another is started. All but the first one called (up until the first completes) will ultimately return an error like `400: PUT /api/v1/stories/12345/tags: Database object 'StoryTag' with field value 'mytag' already exists.` This can be observed easily on systems which are slow to complete writes to their backend database by initiating addition of a new tag on two stories at roughly the same time, either via the Web client or directly through the API.", "title": "PUT tags races on StoryTag creation and returns 400 error", "created_at": "2019-02-25T16:47:17+00:00", "tags": [], "updated_at": "2019-03-11T12:52:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": null, "id": 2005086, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "In Project Groups, after choosing a project group, there is 3 check boxes on the left for selecting a filter for the tasks shown in the list. The 3 check boxes are Active, Merged and Invalid.\nThey don't look exactly right, and they don't filter the tasks as they should. They need to be fixed.", "title": "Fixing status-search in Project Groups", "created_at": "2019-03-22T22:24:57+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-06-21T17:27:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5746, "story_type_id": 1, "security": null, "id": 2005287, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 4, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently email preferences have one option: on or off. This is sufficient for basic functionality, but we should make this configuration richer to allow users to express which types of changes to enable email for, and to choose between an email per change and a daily digest email of all relevant changes.", "title": "Make email preferences more configurable", "created_at": "2019-05-03T21:24:42+00:00", "tags": ["storyboard-emails"], "updated_at": "2019-05-03T21:29:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2005560, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The current implementation of searching is confusing for users, and not expressive enough to create complex searches. Additionally, the code itself is confusing thanks to there being two possible paths which are exercised depending on which types of search filters are selected.\n\nAfter lots of discussion in various places, we have decided that search should be implemented using a single API endpoint for each object type, and supporting a detailed syntax which allows logical expressions on object metadata (ie AND, OR, NOT for all attributes). Ideally this syntax should look and work similar to that provided by Gerrit, to help provide a familiar experience since most users of StoryBoard are also users of Gerrit.\n\nThis should supersede the following stories, but they are tracked separately thanks to being smaller and potentially done first:\n\n- https://storyboard.openstack.org/#!/story/2001677\n- https://storyboard.openstack.org/#!/story/2001642\n- https://storyboard.openstack.org/#!/story/2000913", "title": "Replace search/browse implementation with a Gerrit-like query syntax", "created_at": "2019-05-03T22:26:29+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-05-03T22:43:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2005564, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "In StoryBoard at present, there is a way to delete stories, but its only available to super users. Regular users would like a way to delete stories, but we probably don't want to actually delete them. It would be better to archive them.", "title": "Archive Mechanism", "created_at": "2019-06-07T17:21:43+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2022-02-07T10:36:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": false, "id": 2005843, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 3, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently, the StoryBoard webclient and API are tested independently of each other, with nothing to verify that they can actually work together other than manual testing of changes. There was some work done in the past to support integration testing, but it isn't fully functional and there are no tests implemented that make use of it. The spec for that existing work is [here](https://specs.openstack.org/openstack-infra/infra-specs/specs/storyboard_integration_tests.html), but it is pretty old and may be outdated.\n\nThis probably needs some thought into what the best way to do this testing is, along with work to recreate the jobs to run the integration tests and some useful tests actually being written.", "title": "Implement integration tests for StoryBoard", "created_at": "2019-06-07T17:25:40+00:00", "tags": ["storyboard-testing"], "updated_at": "2019-06-21T17:19:25+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2005844, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I have a board: https://storyboard.openstack.org/#!/board/188\n\nWhen trying to add a story to one of the lanes, one of two things happens: either the \"Save Changes\" button is unclickable with no explanation of what field is missing (and all fields including the project field for the new task are filled), or somehow it becomes clickable, but the story never appears in the lane and seems to be gone forever.\n\nAs a side complaint, if I create a story with a short title (e.g. \"Test\") and save changes, I get an HTTP 400 error popup. I think 1) seems arbitrary to limit the story title like that, 2) that should be a browser-side validation, 3) server-side input validation shouldn't emit HTTP error numbers.", "title": "Can't create stories for a board", "created_at": "2019-10-03T15:19:44+00:00", "tags": [], "updated_at": "2019-10-03T20:45:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 520, "story_type_id": 1, "security": false, "id": 2006658, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "At the moment, if a user has no name set as part of their OpenID, storyboard will give an error when they try to login, displaying this message:\n\n`Please+permit+access+to+your+name`\n\nThis is a bit confusing, because it looks as though a name has failed to be passed through properly, rather than there being no name set. The user is unable to login without a name set, but other opendev services don't require one, so it can be hard to identify the source of the problem.\n\nWe should have a clearer message that indicates how the user can fix the problem.", "title": "Make error message more informative when user has no name set in OpenID", "created_at": "2020-01-29T15:58:51+00:00", "tags": [], "updated_at": "2020-01-29T15:58:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": false, "id": 2007234, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The story author email is publicly available. I didn't find an option to hide it.\n\nlogin.ubuntu.com doesn't allow to login if you uncheck the email tick.", "title": "Hide author emails", "created_at": "2020-05-06T15:25:42+00:00", "tags": [], "updated_at": "2021-04-20T17:02:35+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1753, "story_type_id": 1, "security": true, "id": 2007630, "users": [{"openid": "https://login.ubuntu.com/+id/XQWYJ7x", "enable_login": true, "created_at": null, "updated_at": null, "id": 1753, "is_superuser": false, "last_login": "2022-09-14T11:32:12+00:00", "full_name": "kay", "email": "kay.diam@gmail.com"}, {"openid": "https://login.ubuntu.com/+id/43rCcdx", "enable_login": true, "created_at": null, "updated_at": null, "id": 10, "is_superuser": true, "last_login": "2026-04-17T16:26:30+00:00", "full_name": "Jeremy Stanley", "email": "fungi@yuggoth.org"}, {"openid": "https://login.ubuntu.com/+id/dQxpCYE", "enable_login": true, "created_at": null, "updated_at": null, "id": 935, "is_superuser": false, "last_login": "2023-01-31T11:18:06+00:00", "full_name": "Adam Coldrick", "email": "adam.coldrick@codethink.co.uk"}, {"openid": "https://login.ubuntu.com/+id/MYkdxb7", "enable_login": true, "created_at": null, "updated_at": null, "id": 1126, "is_superuser": false, "last_login": "2021-07-15T20:33:48+00:00", "full_name": "Kendall Nelson", "email": "kennelson11@gmail.com"}]}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The StoryBoard API allows events to be filtered by type, and by the story/worklist/board the event is for, but not by the user who created the event. This is a pretty annoying limitation which makes it hard to find the events recently caused by a given user.\n\nWe should add an `author_id` parameter to the events browse endpoint which filters the events by the event author.", "title": "Add a way to filter timeline events by author", "created_at": "2020-05-07T23:24:08+00:00", "tags": [], "updated_at": "2020-05-08T14:36:13+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2007641, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The project is not listed anywhere in notification emails, which can make it difficult to know the context of a story without following the link to Storyboard.\n\nIdeally the project should be displayed in the email subject or body, and in headers for filtering easily.", "title": "Include project in notification emails", "created_at": "2020-08-31T14:46:57+00:00", "tags": ["low-hanging-fruit", "storyboard-emails"], "updated_at": "2020-10-01T22:35:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 3022, "story_type_id": 1, "security": false, "id": 2008095, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I am logged out and follow a link to a private story, I get a 404 popup and a blank page.\n\nThinking it was because I wasn't logged in, I then followed the login link, which takes me to Launchpad and the authentication process continues.  However, upon returning to storyboard I get an error page with\n\n```\nError Code:\n    invalid_grant\nError Description:\n    No description received from server. \n```", "title": "Unable to log in after following link to private story: invalid_grant", "created_at": "2020-09-22T22:12:31+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2021-04-20T16:53:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 94, "story_type_id": 1, "security": false, "id": 2008184, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 4, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Now that we're publishing images on Dockerhub and tagging them \"latest\" on each update, it would be nice to be able to point someone at a simple command to deploy them at least for testing or demonstration purposes. Right now we have a minimal docker-compose file for our basic service dependencies:\n\nhttps://opendev.org/opendev/storyboard/src/commit/37a5ff711bd29a9aecae33b07c090f92e825aaf3/docker/docker-compose.yml\n\nBy incorporating our storyboard* images from https://hub.docker.com/u/opendevorg and adding some sample configuration, we could end up with something more like what the Zuul project has:\n\nhttps://opendev.org/zuul/zuul/src/commit/4ba8374c2c71a711bb586ff37899ab7d33b382a0/doc/source/examples/docker-compose.yaml\n\nAt the time of writing, this should probably include the following images: storyboard, storyboard-api, storyboard-db-manage, storyboard-cron, storyboard-migrate, storyboard-subscriber, storyboard-webclient, storyboard-worker-daemon", "title": "StoryBoard should have a containerized quickstart", "created_at": "2020-09-24T18:45:53+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2021-04-04T09:31:36+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": false, "id": 2008195, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It's becoming increasingly common for Git repositories to use a variety of default branch names other than master. We shouldn't assume all projects in a deployment use the same default branch name. As a result, default branch names need to be tracked in the project record, settable via project create and update calls in the API. Currently, default branch name lookups happen through the storyboard.common.master_branch_helper.MasterBranchHelper class, so most of the work will be confined to interacting with that. The global fallback default, in cases where no default branch name is specified during project creation, should be made configurable at the site deployment level, though a hard-coded value (ideally matching whatever name the upstream Git community uses) can still be included to cover cases where this is not configured.\n\nWe may also want to consider renaming it to storyboard.common.default_branch_helper.DefaultBranchHelper for clarity.", "title": "Per-project default branches", "created_at": "2021-03-26T18:38:51+00:00", "tags": [], "updated_at": "2021-03-26T18:42:02+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": false, "id": 2008779, "users": []}, {"status": "active", "task_statuses": [{"count": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "C\u00f3 c\u00e1i l\u1ed3n\nB\u1ea3n Quy\u1ec1n \u2713\u00a9 AIphanbade \u2122", "title": "hello world", "created_at": "2021-09-13T09:13:39+00:00", "tags": [], "updated_at": "2022-09-08T16:14:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 7769, "story_type_id": 1, "security": false, "id": 2009220, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The following Intel driver lineups must be able to packaged and coexist on the same system.  It must also be possible to configure what driver version is loaded via standard Linux mechanisms (e.g. modules-load.d).\n\nLatest Drivers (default): [Need to modify for CVL4.0 release version]\n\nice-1.9.11\n\niavf-4.5.3\n\ni40e-2.20.12\n\nLegacy Drivers: \nice: 1.8.3.1.2\n\ni40e:2.18.9\n\niavf:4.4.2\n\nAdditional Requirements:\n\nIntel NIC family only: ice, i40e and iavf drivers\nDriver versions must respect the compatibility matrix between drivers\nMultiple driver versions cannot be loaded simultaneously and applies to the entire host\nLatest driver version will be loaded by default, unless specifically configured to use a legacy driver version\nDrivers used by the Anaconda installer will always use the latest version, therefore firmware compatibility must support basic NIC operations for each version to facilitate installation\nHost reboot is required to activate the configured driver versions", "title": "Debian:Multiple Driver Versions for Intel NIC Family", "created_at": "2022-09-28T03:44:32+00:00", "tags": [], "updated_at": "2022-09-28T03:53:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 7362, "story_type_id": 1, "security": false, "id": 2010325, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "ubuntu create", "title": "test-job", "created_at": "2023-04-03T17:11:37+00:00", "tags": [], "updated_at": "2024-02-29T06:21:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 8607, "story_type_id": 1, "security": false, "id": 2010685, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 5, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Automatic emails sent out by Storyboard tend to look a little spammy.\nYes, I know, false positives in spam filtering are usually considered something the client is to blame for by choosing to use filtering tool X or trusts RBL Y.\n\nBut hear me out:\n\nUsing rspamd, used by man installations showed a few \"indication\" which could and should be fixed on the Storyboard side to make emails look less spamy. Even if it's not rspamd used by receivers similar verdicts and rules likely apply. Looking at an email I just received a have the following things, easy to fix, which contribute most to a SPAM verdict. The number in () is the contribution to the \"spamness\"\n\n\n1) RBL_SPAMHAUS_CSS(2.00)[2001:4800:7818:103:be76:4eff:fe04:976a:from]\n\nOutbound email server are on RBLs (https://check.spamhaus.org/listed/?searchterm=2001:4800:7818:103:be76:4eff:fe04:976a).\nMonitoring for RBL listings is totally  part of running any email infrastructure.\n\n2) AUTH_NA(1.00)\n\"Authenticating message via SPF/DKIM/DMARC/ARC not available\";\n\nThis is really not on par with current standards anymore. \nGMail and other big providers kind of force you to have those.\n\n\n3) URI_COUNT_ODD(1.00)[5]\nhttps://github.com/rspamd/rspamd/blob/e9fec3409a40bc89000d97130239a5867a1d6eb7/rules/misc.lua#L337\n\n\n4) MIME_BASE64_TEXT_BOGUS(1.00)\nhttps://github.com/rspamd/rspamd/blob/e9fec3409a40bc89000d97130239a5867a1d6eb7/rules/headers_checks.lua#L1060\n\n\n5) MIME_MA_MISSING_HTML(1.00)\nhttps://github.com/rspamd/rspamd/blob/e9fec3409a40bc89000d97130239a5867a1d6eb7/rules/headers_checks.lua#L380\n\n\n6) MIME_BASE64_TEXT(0.10)\nhttps://github.com/rspamd/rspamd/blob/e9fec3409a40bc89000d97130239a5867a1d6eb7/rules/headers_checks.lua#L1038\n\n\n\n\nFor more details see: https://github.com/rspamd/rspamd/tree/e9fec3409a40bc89000d97130239a5867a1d6eb7/rules\n\n\nAgain, I am not asking to make (my) rspamd happy, but to look into the reasons Storyboards emails might be treated as spam.", "title": "Improve email deliverabilty for storyboard@storyboard.openstack.org, some emails are considered SPAM", "created_at": "2023-04-04T13:55:51+00:00", "tags": [], "updated_at": "2023-05-24T10:59:42+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 7387, "story_type_id": 1, "security": false, "id": 2010689, "users": []}]