[{"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": "Trans transition", "title": "Dapin to ch's", "created_at": "2014-02-27T13:30:20+00:00", "tags": [], "updated_at": "2026-03-24T15:46:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 1, "users": []}, {"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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Awesome Trove Story", "title": "Demo Story", "created_at": "2014-02-28T16:24:55+00:00", "tags": [], "updated_at": "2014-03-13T16:39:36+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 5, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A test story.", "title": "Test", "created_at": "2014-02-28T16:42:07+00:00", "tags": ["bug", "dummy"], "updated_at": "2018-07-11T19:57:15+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 6, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "asdfasddfas", "title": "asdfasdf", "created_at": "2014-03-03T23:47:53+00:00", "tags": [], "updated_at": "2014-03-13T16:39:17+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 7, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "4", "title": "4", "created_at": "2014-03-04T06:55:22+00:00", "tags": [], "updated_at": "2014-03-13T16:39:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 8, "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 a user pastes a URL, task #, or story #, the UI should automatically detect the pattern and inject a link around it.", "title": "WebClient should resolve story and task references", "created_at": "2014-03-04T19:27:52+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T16:59:25+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 10, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 6, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The Storyboard API should add two parameters to its search endpoints, to implement data set paging. The UI should then consume these in a sensible, happy way.", "title": "API Paging", "created_at": "2014-03-04T20:06:04+00:00", "tags": ["storyboard-feature-request"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 11, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard needs a comprehensive and consistent way of searching all resources in the system. For now this includes Projects, Stories, and Tasks but may include Users as well. At the moment, the need for a fulltext index is not yet certain, however it has not yet been ruled out.", "title": "[1.1] Searching in Storyboard", "created_at": "2014-03-04T20:07:01+00:00", "tags": [], "updated_at": "2014-07-23T19:41:03+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 12, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "lkjd slkdj sdlj", "title": "LKDLSKJD LKJ", "created_at": "2014-03-04T21:26:28+00:00", "tags": [], "updated_at": "2014-03-13T16:38:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 13, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "openid and auth are both great", "title": "storyboard should have auth (MVP)", "created_at": "2014-03-04T23:29:32+00:00", "tags": [], "updated_at": "2014-03-14T22:44:14+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 17, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "\"Where you end up\" when creating a story needs a bit of TLC.", "title": "Project story list does not get refreshed after creating a story", "created_at": "2014-03-04T23:31:24+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 18, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Both from a development and build perspective, juggling two different codebases and trying to land coordinated patches is turning out to be more of an annoyance than a benefit. Instead, let's merge the codebases.\n\nMore reading: http://12factor.net/", "title": "Merge codebases", "created_at": "2014-03-05T16:08:21+00:00", "tags": [], "updated_at": "2014-04-01T18:31:32+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 19, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "As a user of storyboard, I should only be able to see the full user record for my own user. For all other users, I should only be able to see ID, FirstName, Last Initial, and Nickname (if that exists).", "title": "User API should return reduced details.", "created_at": "2014-03-05T18:03:32+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 21, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "OpenID gives back the FullName. There's no real reason we need to write complicated split rules, because identification is arbitrary.", "title": "Replace first_name and last_name with display_name in user table", "created_at": "2014-03-06T21:25:37+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 25, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "We want a project bot that parses the following commands:\n\n#story [projectname] Some Long Story Title Here.", "title": "Create IRC Bot client.", "created_at": "2014-03-06T21:26:15+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 26, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We have to jump through ridiculous hoops to make our unit tests work with SQLite, and our workarounds often cause other databases to fail. Since there is no valid feature need for SQLite support, we are going to strip out all mention of this database and make use of the opportunistic MySQL and PostgreSQL tests instead.", "title": "Strip SQLite out of Storyboard", "created_at": "2014-03-12T18:07:36+00:00", "tags": [], "updated_at": "2018-03-15T18:46:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": null, "story_type_id": 1, "security": null, "id": 29, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Developer returns to storyboard.o.o --> logs in --> Project Tabs --> selects \"Openstack-Infra/Storyboard\"  --> sees list of stories for selected project --> selects story  --> views story detail page with listed task (task status listed next  to task)-->Developer leaves comment on story at storyboard.o.o (repeatable; can do this many times and will append at any time)", "title": "Add comments (MVP)", "created_at": "2014-03-14T22:43:34+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 30, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "The dropdown in the new story modal fails hard because of the large number of projects. It needs to be completed with a tag-based, tab-completing control.", "title": "New story modal should use tag-based project assignment", "created_at": "2014-03-28T18:23:41+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 35, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The oauth token currently times out after an hour. We'd like to fix this using refresh_tokens in the long run, however we also need a short-run MVP solution", "title": "OAuth updates to token expiry, refresh token", "created_at": "2014-03-28T18:29:10+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T17:01:45+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 36, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Only superusers should be able to update and delete projects, however the UI controls to do so are visible to everyone.", "title": "Projects edit forms are visible to non-superusers", "created_at": "2014-03-28T18:35:00+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 37, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "When adding a story, or project, or task, the UI/UX is inconsistent based on where you are, where you're redirected to, and whether your current page refreshes its loaded data.", "title": "Current page does not (always) refresh when submitting data", "created_at": "2014-03-28T18:36:11+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 38, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Right now you can't reassign tasks to different projects. You should be able to do that.", "title": "Webclient should allow a user to reassign projects on tasks.", "created_at": "2014-03-28T18:38:36+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 39, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "For some reason, the API occasionally throws a 500 error, usually during large list queries or right after submitting a new story/task.\n\n[Sat Apr 12 00:50:26 2014] [error] 2014-04-12 00:50:26.999 10586 ERROR wsme.api [-] Server-side error: \"'Story' object has no attribute 'project_id'\". Detail: \n[Sat Apr 12 00:50:26 2014] [error] Traceback (most recent call last):\n[Sat Apr 12 00:50:26 2014] [error] \n[Sat Apr 12 00:50:26 2014] [error]   File \"/usr/local/lib/python2.7/dist-packages/wsmeext/pecan.py\", line 77, in callfunction\n[Sat Apr 12 00:50:26 2014] [error]     result = f(self, *args, **kwargs)\n[Sat Apr 12 00:50:26 2014] [error] \n[Sat Apr 12 00:50:26 2014] [error]   File \"/usr/local/lib/python2.7/dist-packages/storyboard/api/v1/stories.py\", line 104, in get_all\n[Sat Apr 12 00:50:26 2014] [error]     if marker_story is None or marker_story.project_id != project_id:\n[Sat Apr 12 00:50:26 2014] [error] \n[Sat Apr 12 00:50:26 2014] [error] AttributeError: 'Story' object has no attribute 'project_id'", "title": "Storyboard API throws intermittent 500 errors", "created_at": "2014-03-28T18:39:21+00:00", "tags": [], "updated_at": "2014-04-12T00:55:04+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 40, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Even when a story's tasks are all landed, and is therefore effectively \"done\" it shows up in the primary story list filter. This isn't really useful.\n\nThe tricky bit about this is that we're effectively filtering stories based on the aggregate status of its associated tasks. I suspect the filter for the URI should look reference the child records somehow, for instance: task.status=['landed','in review']", "title": "Stories with all landed tasks should not be in primary UI filter", "created_at": "2014-03-28T18:46:18+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 41, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The author of a task or story is a useful piece of information to have. It should be displayed in the UI.", "title": "Webclient should show author of story and/or task", "created_at": "2014-03-28T18:47:34+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 42, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The storyboard API should allow white labeling, aka Skinning. This is basically a packaging problem, as the \"compiled\" assets for storyboard (notably, the CSS files) will already have all associated variables baked in. There are two possible approaches we can take: \n1- Allow the uploading of static assets to the API, to be accessible from Storyboard. \n2- Distribute storyboard as a 'precompiled' set of assets that retains the original LESS files, which would allow someone to roll their own CSS theme.", "title": "Whitelabel Storyboard", "created_at": "2014-03-31T16:43:17+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 43, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As an intermediate fix a wsgi/redirect layer could be added on top of storyboard where if a project doesn't have a 'uses-storyboard' type flag in projects.yaml then the wsgi app redirects as appropriate (to another bug tracker).", "title": "Gerrit comment links won't know to link to storyboard or launchpad", "created_at": "2014-04-01T19:39:32+00:00", "tags": [], "updated_at": "2018-08-29T20:15:13+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 27, "story_type_id": 1, "security": null, "id": 44, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Current task UI shows the task title as its main information. The task title should actually be very optional. The most important part of the task is the affected project, the affected branch (not yet supported) and its status. In most cases the \"title\" is redundant with that information, which is why by default the title should just be empty.\n\nTask list should show affected project / task status on the first line, and (if present) title in little characters in a second line. Task creation dialogs should feature the project first and not suggest a title at all. It should support empty titles.", "title": "Titles don't really matter in tasks", "created_at": "2014-04-02T15:31:26+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 45, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We need to track what happens to a story. When a story is created and by whom, when a task status changes (and who changed it), etc.\n\nI think comments and activity could be shown in the same timeline (like in Launchpad). It could make sense to even store activity in the comments table.", "title": "Story activity", "created_at": "2014-04-02T15:34:47+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 46, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "The \"opened/total\" task count in the stories list doesn't show anything yet.", "title": "Missing task count in stories list", "created_at": "2014-04-02T15:36:06+00:00", "tags": [], "updated_at": "2019-05-31T12:22:32+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 47, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It's currently difficult to look at \"StoryBoard stories\" because they are spread over two projects. That's precisely what ProjectGroup were designed to solve: provide views that are attached to sets of projects so that we can see what is files against \"storyboard\" in general.", "title": "[1.1] Support for project groups", "created_at": "2014-04-02T15:38:24+00:00", "tags": [], "updated_at": "2014-05-21T21:23:12+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 48, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Deleting a story, renaming a story or changing its description are not key activities for StoryBoard users. However the current UI glorifies these activities and wastes valuable space by always displaying Save and Delete buttons.", "title": "Save/Delete takes up valuable space", "created_at": "2014-04-02T15:42:48+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 49, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Current story list shows both titles and descriptions. The description should only be shown on the story page, and the story list should display more useful information in the second line, like the list of affected projects. This will also result in a more compact story list, which should be more efficient.", "title": "Story list should be more compact", "created_at": "2014-04-02T15:45:36+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 50, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "Anonymous users are basically presented with the same UI as logged-in users, but when they try to add a comment or change a status or do anything, the UI silently fails. It took me a while to realize that was failing because I wasn't even logged in.\n\nThe UI should for example hide the comments box and not let users think they can do actions that are actually not available to them.", "title": "Anonymous users shall not have all actions available", "created_at": "2014-04-02T15:49:13+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 51, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Current storyboard URLs show IDs rather than meaningful names (\"456\" instead of \"storyboard\"). That prevents manual URL edition to switch projects (you have to know the ID to directly type it). It's something I personally do a lot in Launchpad, as I work on so many different projects. Meaningful URLs would be a useful thing to have, at least for projects and projectgroups.\n\nI'm not exactly sure how to fix that though. Maintain some short-alias that would be displayed/queried instead ?", "title": "Meaningful project URLs", "created_at": "2014-04-02T15:53:35+00:00", "tags": [], "updated_at": "2018-06-20T20:00:12+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 52, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Apart from setting status, you can't edit any other aspect of a task (like renaming it, deleting it or changing the project affected). So there is no way to change a task that wasn't created properly (apart from marking it \"Landed\" which is a bit incorrect).", "title": "Tasks can't be edited", "created_at": "2014-04-02T15:55:49+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 53, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "While validating a token the web-clinet sends a GET request to /users endpoint. That endpoint is public, so the token is not checked.", "title": "An expired token is considered valid sometimes", "created_at": "2014-04-03T09:18:54+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 8, "story_type_id": 1, "security": null, "id": 56, "users": []}, {"status": "invalid", "task_statuses": [{"count": null, "key": "review"}, {"count": null, "key": "todo"}, {"count": null, "key": "invalid"}, {"count": null, "key": "merged"}, {"count": null, "key": "inprogress"}], "description": "When I log in and land on the overview page for storyboard I should see stories and project relevant to me. Maybe I submitted them or am watching them etc.", "title": "The overview page should show stories and projects relevant to the authenticated user.", "created_at": "2014-04-05T01:16:47+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 38, "story_type_id": 1, "security": null, "id": 58, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The new story description field is only two lines tall on my browser. This is fine for a couple short sentences but quickly becomes unwieldy as I type. The field should either grow until using all available space or just monopolize that space in the first place.", "title": "The new story description field should be bigger (or grow bigger)", "created_at": "2014-04-05T01:18:39+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 38, "story_type_id": 1, "security": null, "id": 59, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "https://etherpad.openstack.org/p/StoryboardMeetup", "title": "[MVP] Task statuses should be what we agreed on at sprint", "created_at": "2014-04-07T15:09:47+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 60, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I think there is value in showing a task is being worked on ('in progress') so two people won't work on it at the same time. However this information shall be conveyed by the \"assignee\" field in tasks (the person each task is assigned to).\n\nAdding \"assignee\" makes the 'in progress' status redundant, so it should be removed.", "title": "Remove \"in progress\" task status", "created_at": "2014-04-10T07:20:04+00:00", "tags": [], "updated_at": "2014-04-23T15:44:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 62, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The User is now redirected to an 'index' page after the authorization is finished. The web-clinet should remember the place where he left and take him back.", "title": "Return after auth is complete", "created_at": "2014-04-25T07:19:56+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 8, "story_type_id": 1, "security": null, "id": 67, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Turns out that both SQLAlchemy and Alembic support multiple version tables for multiple different schema sources. This would allow us to truly encapsulate our authentication provider into a pluggable, reusable library that is independently tested, and could support other pecan projects in openstack.\n\nhttp://git.openstack.org/cgit/openstack/ceilometer/tree/ceilometer/storage/sqlalchemy/migrate_repo/migrate.cfg#n10\n\nhttp://alembic.readthedocs.org/en/latest/api.html?highlight=version_table#alembic.environment.EnvironmentContext.configure.params.version_table\n\nhttps://groups.google.com/forum/#!msg/sqlalchemy-alembic/f7eChU1DvBs/uwHTj81urUoJ", "title": "Turn auth controllers into an independent package.", "created_at": "2014-04-25T19:18:20+00:00", "tags": [], "updated_at": "2014-04-25T19:23:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 69, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When you visit the list of stories for a project, storyboard incorrectly displays stories for all projects.", "title": "Project story list shows all projects", "created_at": "2014-05-04T00:07:24+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 75, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Nikita has requested a UX review of the new comments section, to improve how individual items are displayed.", "title": "UX for Timeline", "created_at": "2014-05-05T16:16:14+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 76, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The project detail page is due for some updates. There are many data items from Launchpad that we could mirror. Example:\n\nhttps://launchpad.net/sahara", "title": "UX for Project Detail", "created_at": "2014-05-05T16:21:07+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 77, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A first pass at the storyboard dashboard should contain two views: Logged in and Logged out. The logged out view should contain a list of active stories in storyboard right now. The logged in view should contain a list of stories and/or tasks that are relevant to the currently logged in user.\n\nSince it's not likely that we have all the features necessary to support everything that we want yet, part of this task will involve building stories to cover the missing features.", "title": "[1.1] Storyboard Dashboard", "created_at": "2014-05-05T16:24:16+00:00", "tags": [], "updated_at": "2014-05-21T21:22:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 78, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The project groups API is almost ready, we'll need some basic management and list features to start surfacing those in the UI. This story is to provide a VERY BASIC user interface to manage the data in this feature. Once it's working, we can do a UX pass.", "title": "[1.1] UI For Project Groups", "created_at": "2014-05-05T16:25:40+00:00", "tags": [], "updated_at": "2014-05-21T21:23:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 79, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This recently surfaced on Slashdot: http://it.slashdot.org/story/14/05/02/2015227/nasty-security-flaw-in-oauth-openid\n\nThis story is to research what's going on, whether we're vulnerable, and how to fix it.", "title": "Investigate OAuth security claims", "created_at": "2014-05-05T16:26:37+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 80, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A current problem with the storyboard data model is that many fields - in this case priority - are stored as a discrete value, with everyone being able to edit that status. This is going to end up creating turf wars, because anyone can come up and randomly start changing priorities on items according to their own gut reactions. Furthermore, it does not take into account an engineer's own task and priority list.\n\nA better approach to priority is needed.", "title": "Design how Priorities are handled in StoryBoard", "created_at": "2014-05-05T22:22:45+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 81, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The API, and the preferences, support paging, but the UI doesn't yet. We should fix that.", "title": "Add pager to list views", "created_at": "2014-05-05T23:34:48+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 82, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Something's up with the client API and/or the webclient. It appears that special characters aren't properly handled, as evidenced by using them in task titles.", "title": "Special characters need more tests.", "created_at": "2014-05-13T20:47:39+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 86, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This is a test story", "title": "This is a test", "created_at": "2014-05-15T14:16:26+00:00", "tags": [], "updated_at": "2014-05-28T11:26:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 63, "story_type_id": 1, "security": null, "id": 87, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 6, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "test", "title": "Gating bug! [Test]", "created_at": "2014-05-15T14:34:52+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 63, "story_type_id": 1, "security": null, "id": 88, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Tracking my horizon needs.", "title": "Horizon", "created_at": "2014-05-15T16:24:28+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 73, "story_type_id": 1, "security": null, "id": 89, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The OpenStack UX team is finally contributing to storyboard, and we would like to include their contributions as quickly as possible. At the moment, Steve Doll is iterating on the user dashboard.", "title": "UX/UI Overhaul of Storyboard-webclient Dashboard", "created_at": "2014-05-20T22:16:45+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 92, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In stories that have a timeline with really long titles, the time-stamps end up linewrapping in a weird way. See here for an example\n\nhttps://storyboard.openstack.org/#!/story/85", "title": "Events timeline dates are misaligned", "created_at": "2014-05-21T21:13:53+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 93, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 4, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Task priority is not visible in the task item row. It should be.", "title": "[1.1] Task priority should be displayed in task list item", "created_at": "2014-05-21T21:21:51+00:00", "tags": [], "updated_at": "2014-05-21T21:22:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 95, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 6, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Subscription to events, projects, stories, and tasks relevant to a user is a key feature, one which is likely to have a serious performance impact.", "title": "[1.1] Storyboard should allow subscription", "created_at": "2014-05-21T21:25:05+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 96, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Event timeline filters should be persisted by user. This will require a user preferences endpoint in our API that allows us to save and load values by user.", "title": "[1.1.1] Event timeline filters should be persisted", "created_at": "2014-05-21T21:27:39+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 97, "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": ["storyboard-feature-request", "low-hanging-fruit", "storyboard-emails"], "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We'll need to figure out how to get data from launchpad into storyboard. Apparently their API sucks, and it might make more sense to go database-to-database anyway.\n\nhttps://etherpad.openstack.org/p/lp-migration-things", "title": "[1.1] Launchpad data import to Storyboard", "created_at": "2014-05-21T21:41:55+00:00", "tags": [], "updated_at": "2019-05-02T17:12:52+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 100, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The message \"Event of unknown type has occurred\" appears in the timeline.", "title": "Timeline shows unknown events", "created_at": "2014-05-22T13:08:21+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 8, "story_type_id": 1, "security": null, "id": 102, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a reporting requirement, we'd like to be able to distinguish between bugs and features. At the moment there is an is_bug field on stories, however it has been suggested that we can use tags instead.", "title": "Storyboard should be able to distinguish between bugs and features", "created_at": "2014-05-22T14:50:20+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2018-03-23T17:10:36+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 103, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "For obvious reasons storyboard should have human readable urls.  Specifically with projects.  One should be able to say.. \"Oh just go to storyboard.o.o/stackforge/refstack and it should know to show you those stories.", "title": "Storyboard should have human readable urls", "created_at": "2014-05-23T21:36:57+00:00", "tags": [], "updated_at": "2018-06-20T20:00:11+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 33, "story_type_id": 1, "security": null, "id": 107, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "incorporate moment-js (or angular-moment) to switch our timestamps in\nthings like the events feed to '3 seconds ago'.", "title": "Event dates should be more readable", "created_at": "2014-05-29T10:22:40+00:00", "tags": [], "updated_at": "2016-08-01T10:52:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 118, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "User wants\nto click on 'unassigned', get option to assign a task", "title": "Tasks should be assignable without expanding the task row", "created_at": "2014-06-04T11:38:57+00:00", "tags": [], "updated_at": "2016-08-01T10:53:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 122, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Before we can reactivate the custom_types.Name field in storyboard, we have to first write a database migration that manually cleans up existing stories, projects & task names so that they conform. If we do not, SQLalchemy will be very confused when it tries to read nonconformant values from the database.", "title": "Regex name checking in storyboard needs a database migration", "created_at": "2014-06-09T07:06:07+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 127, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Clicking through to 'remove this story' results in nothing happening except I get logged out. I'm going to guess at non-persistent token storage on the backend and the server crashing and restarting, but really I know nothing.", "title": "deleting stories logs me out", "created_at": "2014-06-09T07:23:26+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 110, "story_type_id": 1, "security": null, "id": 128, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "My RTT to storyboard is ~240ms, but projects?limit=500 takes 678ms to return - so thats about 400ms of server time, which for a new system with approximately empty database is just a little concerning :)", "title": "projects list is very slow to get", "created_at": "2014-06-09T07:26:00+00:00", "tags": ["storyboard-bug"], "updated_at": "2019-05-02T17:16:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 110, "story_type_id": 1, "security": null, "id": 129, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Looking at the network trace when using storyboard I see:\ntasks?limit=500&story_id=129\n.../stories/id/events?limit=500 \n../users/110 (me I presume)\n../users/110\n.../users/110\nprojects?limit=500\n\nimmediately following filing a bug. Since the rtt to storyboard is ~240ms, and they appear to be sequential this adds at minimum 500ms before the UI is usable again.\n\nIf I may suggest, perhaps the user API response should set cache-control headers indicating the client is allowed to cache it for 1minute, or something (and then a cache-bust can be used when we have reason to believe that it was changed).", "title": "user API is called multiple times in a row", "created_at": "2014-06-09T07:30:51+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 110, "story_type_id": 1, "security": null, "id": 130, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Looking at the network graph more, when filing a bug the select a project search widget appears to have queried all projects (limit=500) then in short order done a limit=10,name=s, limit=10,name=st etc.\n\nThe limit=500 search returned in 344ms, the partial lookups had a 1.5 second delay before the first returned, and then they all returned pretty much instantly on top of each other.\n\nI'm going to guess at head-of-line blocking - they may have been pipelined onto the same connection for instance.\n\nWhatever the cause, the UI was very sluggish - only offering me the choice of storyboard after ~2 seconds post typing storyboard in. The 500 item response could have answered that immediately however, so - somethings up.", "title": "typeahead feels slow", "created_at": "2014-06-09T07:37:15+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 110, "story_type_id": 1, "security": null, "id": 131, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard needs Teams API", "title": "Support for User teams", "created_at": "2014-06-27T11:15:15+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 8, "story_type_id": 1, "security": null, "id": 143, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When a user clicks on \"New story\", the popped up modal should have the title field automatically selected.", "title": "New Story Modal needs autofocus", "created_at": "2014-07-02T19:56:31+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 144, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When adding a new task to an existing story, the \"new task\" form retains its values, however if you submit the new task no data appears to be saved. I suspect this is because the value of the DOM element is out of sync with the scope's values.", "title": "Add Task fields do not autofill properly", "created_at": "2014-07-02T19:59:51+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 145, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Whenever a new task is added to a story, the entire page refreshes. It really shouldn't do that.", "title": "Adding a task refreshes story page", "created_at": "2014-07-02T20:00:54+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 146, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When a story link is pasted in IRC, clicking on it occasionally leads to a blank page that needs to be refreshed before data will show.", "title": "Storyboard occasionally does not resolve data when deep linking", "created_at": "2014-07-03T17:19:18+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 148, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The project and story lists should be sortable.", "title": "List views should be sortable", "created_at": "2014-07-03T17:20:24+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 149, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I write \"stor\" in quicknav box and hit Enter, I expect it to lead me to some page with a list of all appropriate places I should go to, not to the first project that matches this search.", "title": "Quicknav shouldn't select first match by default", "created_at": "2014-07-04T07:13:59+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 55, "story_type_id": 1, "security": null, "id": 150, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When \"expanding\" a story in the list view, one would expect to see list of bugs related to it.", "title": "Bugs should be listed in detailed story view in stories list", "created_at": "2014-07-04T07:27:28+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 55, "story_type_id": 1, "security": null, "id": 151, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When hitting \"+ Add story\" on top of the list of stories in project, one would expect this project to be selected in the \"New Story\" dialog box.", "title": "Default project for \"Add story\" in the per-project stories list view", "created_at": "2014-07-04T07:32:00+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 55, "story_type_id": 1, "security": null, "id": 152, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard's not just a tool for humans, it also provides an integration layer through which other tools can interface with it. At the moment, the storyboard API is entirely restful, however in some cases it is a better idea to provide a streaming interface that a third-party tool can trigger events off of.", "title": "StoryBoard needs a subscription API", "created_at": "2014-07-07T17:07:54+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T17:17:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 153, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The acceptable length of the task title field in storyboard is too small. It should either be constrained in the UI, expanded in the database, or an additional description field should be added to provide more information on a tasks' acceptance criteria.\n\nOriginally reported by david lenwell", "title": "Task Field too small", "created_at": "2014-07-08T20:51:50+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 154, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A few updates are needed to the project groups API.\n\n1- Response on CREATE should be the project, not the list of projects.\n2- Response when passing an invalid/duplicate URL should be 400, not 500, and should be human readable.", "title": "StoryBoard project group API signature updates", "created_at": "2014-07-09T19:12:01+00:00", "tags": ["storyboard-bug"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 155, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When filing a bug in launchpad, folks commonly don't include enough details to make the bug report useful. Having a default template is a nice way to remind folks of what should be included.\n\n* How to reproduce the bug\n* Versions of software used\n* related logs/stacktraces\n* etc.", "title": "It would be nice to have a default bug (story ?) template", "created_at": "2014-07-14T12:13:49+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T17:19:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 142, "story_type_id": 1, "security": null, "id": 157, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When using the \"+ Add story\" button in the context of a project, the project field should be pre-populated with the current project.", "title": "Project field should default to current project context", "created_at": "2014-07-16T09:30:53+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 159, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Where we have:\n\nOwner: Joe Random\n\nI think it would be more useful to display:\n\nOwner: Joe Random <joe@randomcorp.com>", "title": "Show change owner email in change view", "created_at": "2014-07-22T19:12:51+00:00", "tags": [], "updated_at": "2019-05-02T17:20:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 158, "story_type_id": 1, "security": null, "id": 163, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When issuing a POST /v1/user to create a user with a username that validates the uniqueness constraint in the database, the returned error is 500 (server error) rather than (400) client error. Since bad data is coming from the client, it should be the latter.", "title": "Storyboard user endpoint should return 400 on duplicate username", "created_at": "2014-07-24T19:45:49+00:00", "tags": [], "updated_at": "2019-07-19T16:38:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 165, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "One of the navigation features I use very frequently in launchpad is to click the project link on a bug to return to the bug list.\n\nI'm very fresh to storyboard, but I can't find an easy way to get back from a story to the list of stories for that project. Clicking the project just opens the dropdown to change details.\n\nAm I just missing something? If not, it'd be great if some kind of navigation from a story back to the project's story list could be added :)", "title": "Navigation from a story back to its project story list", "created_at": "2014-07-30T23:35:27+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 67, "story_type_id": 1, "security": null, "id": 179, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Every project has an irc channel associated with it.  I think storyboard should send a message to that channel when a new story posts or changes.", "title": "When a new story is added to a project It should notify irc", "created_at": "2014-08-01T20:51:18+00:00", "tags": ["irc bot"], "updated_at": "2019-05-02T17:24:20+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 33, "story_type_id": 1, "security": null, "id": 182, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In the web-client, stories with no tasks associated to it, are not being shown up.  If in future, a new task has to be added to those existing stories, it might not be possible.", "title": "Stories with zero tasks are not shown up", "created_at": "2014-08-11T20:16:00+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 164, "story_type_id": 1, "security": null, "id": 185, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "http://paste.openstack.org/show/96507/", "title": "Internal server error from pika", "created_at": "2014-08-18T15:36:50+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 202, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The Storyboard REST API documentation does not autogenerate properly. The following issues have been found:\n\nMethod parameters that refer to the body content are treated as URL parameters. (Example: PUT /v1/projects refers to 'project')\nThe Object Model shows nothing.\nParameter links in http endpoints are inconsistent. Some use <>, some use ().\n\nFor more information, see: http://ci.openstack.org/storyboard/webapi/v1.html", "title": "Autogenerated Documentation is Broken", "created_at": "2014-09-15T20:15:22+00:00", "tags": ["low-hanging-fruit", "storyboard-bug"], "updated_at": "2019-05-02T17:27:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 41, "story_type_id": 1, "security": null, "id": 298, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When dealing with launchpad one of the problems is figuring out if an in progress patch still is in progress. Because there is very loose coupling with gerrit, you only get last update time in gerrit when new comments are made, but patches only make comments on the first patch. Which means a bug could have a last update time of 6 months ago with an active patch that was uploaded yesterday (this happens all the time in Nova).\n\nThe query by activity should take patch activity into account so that it's easy to figure out the difference between dead bugs and actively worked ones.", "title": "Stories should keep track of when patches against them are updated", "created_at": "2014-09-17T17:55:52+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2018-09-06T12:54:45+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 28, "story_type_id": 1, "security": null, "id": 299, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I am on the storyboard project and hit +add story it should fill in the project automatically", "title": "If I am on the storyboard project and hit +add story it should fill in the project automatically", "created_at": "2014-09-17T17:56:37+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 28, "story_type_id": 1, "security": null, "id": 300, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The command spawns webserver and opens up localhost:9000 on a web page alright. However when we click \"Login\" we get a 500 Error page.\n\nSteps to reproduce:\n* Git clone storyboard-webclient\n* tox -egrunt_no_api server:prod\n* Click \"Login\"", "title": "tox -egrunt_no_api server:prod no longer supported", "created_at": "2014-09-22T13:02:46+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 301, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I got a report from someone that could not sign into storyboard when their username on gerrit is 'c-launchpader'.  That username was assigned by ubuntu one from their email address.  He was only able to sign into storyboard after changing it to 'qchris'.  \n\nI believe these are the repo steps:\n1. create a new account from storyboard.  provide ubunto one with an email address (not username).  \n2. after ubuntu one account has been created attempt to sign into storyboard.  \n\nYou can find qchris on #mediawiki channel to get more info.", "title": "Cannot sign into storyboard", "created_at": "2014-09-23T21:19:14+00:00", "tags": ["storyboard-bug"], "updated_at": "2018-09-06T12:53:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 41, "story_type_id": 1, "security": null, "id": 304, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The documentation for the comments rest api says the parameter to post a comment is 'comment' however it is 'content'.\n\nhttp://ci.openstack.org/storyboard/webapi/v1.html", "title": "Comments REST api parameter is incorrectly documented", "created_at": "2014-09-23T21:25:57+00:00", "tags": ["storyboard-bug"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 41, "story_type_id": 1, "security": null, "id": 305, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "testing a new story", "title": "test story", "created_at": "2014-10-02T10:22:31+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 310, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A test issue for gerrit and storyboard integration", "title": "its-storyboard issue 1", "created_at": "2014-10-03T03:49:55+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 41, "story_type_id": 1, "security": null, "id": 311, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "test desc", "title": "test story", "created_at": "2014-10-03T12:44:57+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 312, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Errors received from the API are not being delegated and displayed by the error UI. Investigate and fix.", "title": "Investigate failures in error messaging", "created_at": "2014-10-03T18:38:44+00:00", "tags": [], "updated_at": "2018-09-06T12:49:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 314, "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": "Figure out to how to publish javascript libraries to NPM, and publish storyboard-webclient there.", "title": "Publish storyboard-webclient on NPM", "created_at": "2014-10-09T18:07:42+00:00", "tags": ["storyboard-releases"], "updated_at": "2019-06-07T18:04:35+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 315, "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": "Shift-enter did something unexpected for a user in this story:\n\nhttps://storyboard.openstack.org/#!/story/294\n\nWe should consider what the correct behavior should be.\n\n**Resolution**: Make enter add a new line, and shift-enter do nothing (or perhaps add a new line, but definitely not post the comment).", "title": "Shift-enter usage", "created_at": "2014-10-10T00:15:27+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-06-07T17:40:53+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 316, "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": ["low-hanging-fruit", "storyboard-feature-request"], "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If a test run is interrupted, a zombie database remains in MySQL. These should be cleaned up.", "title": "StoryBoard should clean up test databases.", "created_at": "2014-10-21T16:33:14+00:00", "tags": ["storyboard-bug"], "updated_at": "2019-05-02T17:37:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 319, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This is a really, really neat story!", "title": "I'm creating a new story!", "created_at": "2014-10-24T21:09:43+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 320, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard should help people indicate that a bug affects them and provide that feedback to developers to help them prioritize bugs.  Something like \"this affects me\" and \"heat\" from launchpad.  That information should be available to help sort/prioritize stories.", "title": "Help track bug \"pain\"", "created_at": "2014-11-03T11:08:04+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-03T22:03:52+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 323, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "this is a short test description", "title": "test test test", "created_at": "2014-11-06T14:41:09+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 212, "story_type_id": 1, "security": null, "id": 325, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "For the sake of simplicity of API usage, it makes sense to create a human usable, canonical identifier for all tasks within storyboard. These identifiers can then be used to directly reference the task in question by copy/paste into various different human tools. \n\nExample:\nST222T222 -> story/222/task/222", "title": "Canonical task identifiers", "created_at": "2014-11-07T09:57:54+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T17:44:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 326, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Whenever the token expires, for some reason storyboard results in a permanently pending state that requires refresh", "title": "OAuth Token refresh is broken", "created_at": "2014-11-07T09:59:59+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 327, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Move from Transifex to Zanata for translations, including deploying Zanata server, rewriting automatic scripts and migrate translations over.", "title": "Migrate to Zanata for translations", "created_at": "2014-11-07T10:16:35+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 162, "story_type_id": 1, "security": null, "id": 328, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "At the moment we're supporting only high, medium, and low. We need a better, server-configurable way of indicating task and story priority.", "title": "StoryBoard should support complex priorities", "created_at": "2014-11-07T10:26:58+00:00", "tags": ["storyboard-feature-request", "low-hanging-fruit"], "updated_at": "2019-05-02T18:26:12+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 329, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Search for item, see dropdown, try to click, see it fail.", "title": "Typeahead in search does not respond to mouse clicks.", "created_at": "2014-11-07T10:27:36+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 330, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Task status is hardcoded both on the server and the client, it should be configurable.", "title": "Task status should be server configurable", "created_at": "2014-11-07T10:28:38+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 331, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I am filing a story on a specific project it should be preselected", "title": "When I click add story in a specific project", "created_at": "2014-11-07T15:48:06+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 142, "story_type_id": 1, "security": null, "id": 2000003, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 6, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "An update in gerrit should update the associated task in storyboard.\n\nSee also: https://storyboard.openstack.org/#!/story/2000584", "title": "[1.2] Gerrit should integrate with StoryBoard", "created_at": "2014-11-17T19:35:30+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T17:49:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000012, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It would be nice if the UI could Syntax highlight the python traceback when reporting a new bug. There is probably others but as a start that would be make things nifty!", "title": "Syntax highlight for python (or others) traceback", "created_at": "2014-11-18T13:28:36+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 79, "story_type_id": 1, "security": null, "id": 2000014, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When clicking on a story or task there is no indicator that the action has been received and is being processed. This means if a connectivity issue is experienced its very unclear what is going on.", "title": "Cannot distinguish between connectivity problem and storyboard error", "created_at": "2014-11-19T23:43:28+00:00", "tags": [], "updated_at": "2019-05-02T17:51:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 511, "story_type_id": 1, "security": null, "id": 2000016, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As discussed on IRC", "title": "We need a way to subscribe to a story from the story detail screen", "created_at": "2014-11-20T18:25:17+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 738, "story_type_id": 1, "security": null, "id": 2000018, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In order to support API clients, an authenticated user should be able to issue their own OAuth authentication tokens without having to go through the OpenID workflow.", "title": "[1.2] Users can issue their own auth tokens", "created_at": "2014-11-21T21:12:31+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000021, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently all tasks are associated to a specific code repository. However some tasks are not related to landing a commit in a code repository. For example, the initial task on a story might be for some drivers to analyze the problem and decide which other tasks are needed.\n\nWe need to add the ability to add non-code \"projects\" to the mix.", "title": "Ability to track non-code tasks", "created_at": "2014-11-25T08:14:03+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 2000025, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In order to help debuggin, Firebug console raises:\n\"Error: [$resource:badcfg] Error in resource configuration. Expected response to contain an object but got an array", "title": "When initially opening storyboard, the login box shows Loading... forever", "created_at": "2014-11-25T11:59:52+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000026, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We should spin up storyboard-dev.openstack.org with a sane amount of seed data, and point our js-draft builds to that API instead of to production.\n\n<hr />\n\nThis is an old story; some of the tasks may be outdated, but I've kept them in case they're useful to us (haven't read closely yet).\n\n Current motivations for a dev server:\n\n* we want to update the user docs, so want to deploy a version with Ansible as non-Ansible-experts\n\n    * the above should probably be moved to a separate story, since it's not necessarily anything to do with a dev server effort. That one was a case of 'hm, we have no operator docs; it seems easiest to deploy with ansible; we need docs for deploying storyboard with ansible; only pedro knows how and he's very familiar with Ansible; let's give it a go as non-experts in order to learn how so we can write the docs; might as well use the results as our dev server.'\n\n\n* we want to give users a playground to try out features\n\n* we want to share our in-progress work with each other publicly; \n  sometimes we might have different, conflicting databases, so we can't always pull changes\n\nCurrently, storyboard.sotk.co.uk is the closest thing we have to this. It's not very official and it's pretty slow, but it does work as a playground, and SotK alone can use it to show development in progress.\n\nAlso some logs here: http://eavesdrop.openstack.org/irclogs/%23storyboard/%23storyboard.2015-10-29.log.html", "title": "Storyboard needs a dev server", "created_at": "2014-11-25T20:52:50+00:00", "tags": [], "updated_at": "2018-08-08T07:55:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000028, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I can't open links in new tabs or do anything else with the context menu since every right click directly clicks a link.", "title": "right click is interpreted as left click", "created_at": "2014-11-27T12:50:07+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 779, "story_type_id": 1, "security": null, "id": 2000031, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I click Add story while on a projects task list, I want to add a story for this project and don't expect the project field to be blank.", "title": "Add story button on task list should prefill project field", "created_at": "2014-11-27T12:52:13+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 779, "story_type_id": 1, "security": null, "id": 2000032, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Well, it can be resized only horizontally, not vertically...", "title": "Description field in New Story dialog can't be resized", "created_at": "2014-11-27T12:53:12+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 779, "story_type_id": 1, "security": null, "id": 2000033, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This issue on the grunt repo highlights the reasoning behind changing default hostname behaviour from localhost to 0.0.0.0\nhttps://github.com/gruntjs/grunt-contrib-connect/issues/60\n\nWhen developing storyboard on a VM, it is highly beneficial to be able to access the webclient from the host with portforwarding, and changing the connect plugin within Gruntfile.js to have this default hostname (0.0.0.0) would solve this", "title": "Gruntfile Connect default hostname value", "created_at": "2014-11-28T16:08:00+00:00", "tags": ["low-hanging fruit"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 781, "story_type_id": 1, "security": null, "id": 2000037, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently a clickable engine button appears next to the timeline filter when not logged, but it does nothing. Should be better to just hide it", "title": "Event timeline settings should only appear for logged users", "created_at": "2014-11-28T16:29:27+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000038, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "mbitard has reported on the storyboard channel that every time he tries to log into storyboard, the API throws a 500 error of some kind. Unfortunately we were unable to capture a log event, so further investigation is needed.", "title": "500 error on login", "created_at": "2014-12-01T21:56:06+00:00", "tags": ["storyboard-bug"], "updated_at": "2018-09-06T12:19:35+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000042, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Passing project_group_id to any of the story endpoints does not actually filter by project group id.", "title": "Stories by Project Group do not filter properly", "created_at": "2014-12-01T22:42:38+00:00", "tags": ["storyboard-bug"], "updated_at": "2018-09-06T12:25:18+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000043, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Over the past 24 hours I've tried multiple times to submit a certain story, after viewing the network traffic with inspector on chrome POST errors can be seen\n\nhttp://i.imgur.com/SZ3sZuH.png?1\n\nCould this be due to the array of symbols used, tested with a 'dumber' story and submitted fine", "title": "Need better handling of max lengths when submitting story, tasks", "created_at": "2014-12-03T11:33:19+00:00", "tags": [], "updated_at": "2014-12-03T14:08:32+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 781, "story_type_id": 1, "security": null, "id": 2000059, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently if you hover over a title / header that is bound by classless `<a>` tags the cursor changes to a 'text' type cursor. As clicking on  titles with actions allows you to rearrange ordering etc, this type of cursor seems redundant. It should be changed to a generic or pointer cursor as used in the navbar", "title": "Change hover cursor for interactable titles", "created_at": "2014-12-04T10:53:06+00:00", "tags": [], "updated_at": "2015-11-12T14:01:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 781, "story_type_id": 1, "security": null, "id": 2000061, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When you add a task and want to assign it, the only way to do it properly is with keyboard. Using the mouse loses the focus and no action is taken.", "title": "Select an assignee with the mouse on task inline edit is not working", "created_at": "2014-12-05T11:10:19+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000065, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "After some time you have a very long list of events showing up in the StoryBoard Dashboard. Having a button to clear them all would be a nice touch.", "title": "Dashboard: Add ability to clear all events", "created_at": "2014-12-08T16:40:19+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 6, "story_type_id": 1, "security": null, "id": 2000066, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I type something into the search box at the top of the screen, it might complete and highlight a typeahead suggestion before I am done, though I continue typing and hit <enter> expecting the whole string to be the input to the search query.  For example, I type \"jeepyb<enter>\" (in about 1.5 seconds +/- 0.2) and get \"jee\" as the actual search performed.", "title": "Search box queries affected by typing speed", "created_at": "2014-12-08T19:07:08+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 2000070, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "After creating a new story on the project page, storyboard returns to the project page, leaving the user to attempt to find the new story by scanning the list or searching.  The user may want to perform further updates (assignment, etc), or they may need the story number/URL to link to another system.  In either case, it would be more useful to navigate to the story page after it is created.", "title": "Navigate to story on new story creation", "created_at": "2014-12-10T18:37:32+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 2000075, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "What we must do if in teams or projects groups we want to delete there are users or projects. There are two options: we can remove user from team or we can not allow to delete it.", "title": "Delete Teams and Project groups", "created_at": "2014-12-22T15:55:19+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T17:55:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 804, "story_type_id": 1, "security": null, "id": 2000088, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We are having problems in some files, that don't have cr at the end of the file. Some other editors are automatically adding it, so it's highlighting non-existent differences on gerrit when editing. Force all the files to end with a CR to prevent these errors.", "title": "JSLint should force cr-at-end rule", "created_at": "2014-12-22T18:33:08+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000089, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "After adding a comment and the popup disappears, sometimes the comment does not appear on the story page, and the page must be manually reloaded in order to see it.", "title": "Comment does not always appear when posted", "created_at": "2014-12-23T16:39:34+00:00", "tags": ["storyboard-bug"], "updated_at": "2014-12-23T16:39:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 2000092, "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": ["storyboard-bug", "low-hanging-fruit", "storyboard-docs"], "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When logged out, clicking on the project name in a task navigates to the project story listing.  When logged in, clicking in the same place allows you to edit the task.\n\nI think the link portion of the field should consistently be a navigation link, and only the edit icon should begin editing the field.", "title": "Links to projects are not consistent", "created_at": "2015-01-05T16:03:54+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 2000095, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When editing the project field of a task, and then hitting 'tab' to leave the field after making no changes, an entry is still left saying '<user> updated \"<Task>\"' is added to the story timeline.", "title": "When leaving project edit with tab after no changes, story is updated", "created_at": "2015-01-05T16:23:24+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 2000097, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I tried searching for the bug 2000107 via the search box in the top right corner and it didn't work.", "title": "Searching for a bug number doesn't work", "created_at": "2015-01-13T00:25:56+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 142, "story_type_id": 1, "security": null, "id": 2000108, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Test story to play with the UI", "title": "Test Story (Invalid)", "created_at": "2015-01-16T06:14:51+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 811, "story_type_id": 1, "security": null, "id": 2000120, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I've seen sometimes the case when a story is created, a task is added, and there is intention to work on it. But sometimes there are some other urgent issues, and should be better to leave the task as unassigned so other people can grab them.\nCurrently there is no ability in the task edition to unassign a task, just assigning to someone else. If would be great to show an \"Unassigned\" entry on task assignee selection, and this will clear the assignee.", "title": "Storyboard needs the ability to unassign a task", "created_at": "2015-01-16T08:58:32+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000121, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "New validation rules are causing 500 errors on data submission.For example i tried to update the status of a task, and got a 500 error:\n\n{\"field\":\"title\",\"message\":\"u'UI' is too short\"}\n\nThis cannot be seen on the UI but you need to dig with firebug and inspect the network request, so it's very confusing for the end user. The errors need to be shown clearly to the end user for he/she to correct it.", "title": "Validation alerts don't show in the frontend", "created_at": "2015-01-23T11:46:28+00:00", "tags": ["low-hanging-fruit", "storyboard-bug"], "updated_at": "2018-09-06T12:23:13+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000129, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Recent releases have caused problems where the storyboard API's behavior change would not allow the client to function anymore. This can be mitigated by gating the client and the API.", "title": "StoryBoard needs to gate properly", "created_at": "2015-01-26T16:30:52+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T18:01:04+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000131, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A change done in the backend needs to be tested against storyboard frontend, and in reverse. This will allow to properly ensure that changes done in one project are not affecting to the other", "title": "Storyboard needs better integration tests", "created_at": "2015-01-26T19:04:40+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T18:04:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000134, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When running following error is shown:\nTraceback (most recent call last):\n  File \"/usr/lib/python2.7/multiprocessing/process.py\", line 258, in _bootstrap\n    self.run()\n  File \"/usr/lib/python2.7/multiprocessing/process.py\", line 114, in run\n    self._target(*self._args, **self._kwargs)\n  File \"/home/yolanda/development/storyboard/storyboard/notifications/subscriber.py\", line 34, in subscribe\n    log.register_options(CONF)\n  File \"/home/yolanda/development/storyboard/.tox/venv/local/lib/python2.7/site-packages/oslo_log/log.py\", line 185, in register_options\n    conf.register_cli_opts(_options.common_cli_opts)\n  File \"/home/yolanda/development/storyboard/.tox/venv/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 1679, in __inner\n    result = f(self, *args, **kwargs)\n  File \"/home/yolanda/development/storyboard/.tox/venv/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 1860, in register_cli_opts\n    self.register_cli_opt(opt, group, clear_cache=False)\n  File \"/home/yolanda/development/storyboard/.tox/venv/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 1683, in __inner\n    return f(self, *args, **kwargs)\n  File \"/home/yolanda/development/storyboard/.tox/venv/local/lib/python2.7/site-packages/oslo_config/cfg.py\", line 1852, in register_cli_opt\n    raise ArgsAlreadyParsedError(\"cannot register CLI option\")\nArgsAlreadyParsedError: arguments already parsed: cannot register CLI option", "title": "Storyboard worker daemon fails", "created_at": "2015-01-30T13:04:58+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 93, "story_type_id": 1, "security": null, "id": 2000140, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Once a task is assigned, it can not be unassigned. From discussion it came out that it is by design, to discourage people abandoning tasks without finding a person to complete it. While this is a good intention, it forces a certain workflow. \n\nIf task assignment was a mistake, the only way to fix it is to recreate the task.", "title": "Can not unassign tasks", "created_at": "2015-01-30T19:06:45+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 205, "story_type_id": 1, "security": null, "id": 2000142, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "To reproduce: When creating a task, fill in the name, and press \"Save\". After that, fill out fields for another task, but clear the name field, and press \"Save\".\n\nExpected: New unassigned task\nResult: New task assigned to previously used name\n\nWorkaround: Reload the page, and do not fill out the name before pressing \"Save\"", "title": "Can not create unassigned tasks after creating one task with name filled out", "created_at": "2015-01-30T19:12:37+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 205, "story_type_id": 1, "security": null, "id": 2000143, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The dox README has a some small problems.\n\nFirst, the example dox.yml snippet does not appear to be valid:\n\nhttps://github.com/stackforge/dox/blob/a02c3f77420b9834dc71d8326fe283fd788dadef/README.rst#dox\n\nSecond, there is a typo in the second code snippet in this section:\n\nhttps://github.com/stackforge/dox/blob/a02c3f77420b9834dc71d8326fe283fd788dadef/README.rst#boot2docker-support\n\nIt should read dox instead of dos.\n\n---\n\nFirst time reporting an issue. Forgive me for posting in the wrong place; there doesn't appear to be a dedicated project on StoryBoard for dox, even though the contributing guide points here.\n\nhttps://github.com/stackforge/dox/blob/a02c3f77420b9834dc71d8326fe283fd788dadef/CONTRIBUTING.rst\n\nI just chose a random project under stackforge. :/\n\nAs an aside, it feels like overkill to have all this process for a relatively simple and self-contained tool like dox. Is there any chance people will be able in the future to contribute to dox directly via GitHub?", "title": "dox README has some typos", "created_at": "2015-02-03T23:10:35+00:00", "tags": ["dox"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 834, "story_type_id": 1, "security": null, "id": 2000147, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In your dox.yml under \"add:\" try adding a file from a path, like /path/to/file.sh\n\ndox fails to add this file with an error along the lines of \"Error: `/path/to/file.sh` and `/path/to/file.sh` are the same file\".\n\nThe root of the issue is here:\n\nhttps://github.com/stackforge/dox/blob/2997c592e78bad92bd46075f9348b9537c95235b/dox/runner.py#L157\n\nadd_file needs to be stripped of the path, leaving just the file name, before it can be correctly joined to the temp path.\n\n---\n\nAs noted here: https://storyboard.openstack.org/#!/story/2000147\n\nForgive me for posting in the wrong place; there doesn't appear to be a dedicated project on StoryBoard for dox, even though the contributing guide points here.\n\nhttps://github.com/stackforge/dox/blob/a02c3f77420b9834dc71d8326fe283fd788dadef/CONTRIBUTING.rst\n\nI just chose a random project under stackforge. :/\n\nI would gladly submit a fix for this issue if it were possible via GitHub. The current process for contributing seems like overkill for a small project like dox.", "title": "dox can't add files from a path", "created_at": "2015-02-03T23:22:14+00:00", "tags": ["dox"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 834, "story_type_id": 1, "security": null, "id": 2000148, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Ubuntu one does not explicitly support the 'username' field for new users, and does not allow anyone to create it via their login interface. As a result, logging into storyboard fails for users who have never logged into launchpad, since only launchpad allows you to add a username.\n\nSince storyboard does not actually require the username, we should remove it.", "title": "Remove username from storyboard users", "created_at": "2015-02-04T19:08:43+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000152, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The search bar at the top of inner frame of the web client needs to handle entries as if they have a * at the end; i.e., \"story\" should match to \"storyboard\" and \"story board\".\n\nThis works on https://storyboard.openstack.org/#!/story/list but not on https://storyboard.openstack.org/#!/project/list.", "title": "Storyboard search bar enhancements", "created_at": "2015-02-04T21:34:44+00:00", "tags": [], "updated_at": "2019-04-09T21:40:56+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 89, "story_type_id": 1, "security": null, "id": 2000153, "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-feature-request", "storyboard-notifications"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000162, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Search autocomplete is rather slow, some love for that part of the API would be nice.", "title": "Optimize Search Autocomplete", "created_at": "2015-02-13T23:40:28+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T18:09:15+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000163, "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": "Right now the UI does not actually permit removing the last project group, therefore it's impossible to remove a project group at all.", "title": "Project Group UI should permit removing project group even if it is not empty.", "created_at": "2015-02-13T23:43:20+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-06-05T18:25:35+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000164, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "To speed up token fetching there should be an index in a token table", "title": "Tokens need an index", "created_at": "2015-02-16T16:12:16+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 8, "story_type_id": 1, "security": null, "id": 2000165, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I would expect that when I log into storyboard to see any stories that I've created. Instead I currently must search for them.", "title": "Story board front page doesn't show my filed stories", "created_at": "2015-02-18T20:09:38+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 28, "story_type_id": 1, "security": null, "id": 2000170, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I run a query for stories then view the stories I have no way to get back to my search results.  The web browser BACK  button brings me back an empty search page.", "title": "Need a way to return to search results.", "created_at": "2015-02-20T18:40:40+00:00", "tags": ["duplicate"], "updated_at": "2018-01-13T12:28:39+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 41, "story_type_id": 1, "security": null, "id": 2000174, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When viewing a story or project, it would be good to have the title of the story or projectin the web page title. This makes it easier to see in a browser with many tabs.", "title": "Title of artifacts should be in web page title", "created_at": "2015-02-26T06:14:16+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 222, "story_type_id": 1, "security": null, "id": 2000178, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 4, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If a user has a slow connection the page fields populate with a noticeable lag. It would be better to show a \"[skeleton screen][0]\" while loading to provide some user feedback.\n\n[0]: https://uxdesign.cc/what-you-should-know-about-skeleton-screens-a820c45a571a", "title": "Web UI should grey out a page when loading", "created_at": "2015-03-02T16:26:01+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T19:38:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 8, "story_type_id": 1, "security": null, "id": 2000183, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As of https://review.openstack.org/161374 , storyboard's scheduled plugins no longer run in a separate process. They actually SHOULD run in a separate process.", "title": "StoryBoard Scheduled processes should run in separate processes.", "created_at": "2015-03-04T19:41:34+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T19:40:15+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000188, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 24, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It would be good to be able to create ordered lists of tasks and stories. These lists could be used to represent priorities from different perspectives for example. A worklist should also be able to be created such that its contents are automatically updated based on some criteria.\n\nIt would also be useful to arrange multiple lists in a \"board\" to provide a kanban workflow if desired.\n\n### Links\n\n* [\"Task lists\" plan](https://wiki.openstack.org/wiki/StoryBoard/Task_Lists)\n* [Proposed spec](https://review.openstack.org/#/c/202989/)", "title": "Worklists and Boards in StoryBoard", "created_at": "2015-07-17T11:21:21+00:00", "tags": ["storyboard-feature-request", "storyboard-worklists"], "updated_at": "2019-05-02T21:09:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000322, "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": "I searched for 'Openstack Storyboard' using http://duckduckgo.com/ and clicked the first link. It took me to <https://storyboard.openstack.org/#!/dashboard>. When I click 'Back' in my browser (Firefox 40.0.3), it stays on that page, instead of going back to the search results.\n\nIf logged out, I get taken to <https://storyboard.openstack.org/#!/project/list> and the same problem occurs -- I can't use the back button to get back to the search results.\n\nThis is presumably due to there being a redirect page.", "title": "Back button does not work when arriving to https://storyboard.openstack.org/ from another site.", "created_at": "2015-09-18T14:02:14+00:00", "tags": [], "updated_at": "2019-04-18T04:58:13+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 878, "story_type_id": 1, "security": null, "id": 2000358, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We need to apply the patch that the oslo rename made necessary, followed by Monty's 'ignore_errors' patch. But first, someone out there in the wilderness will need merge powers!", "title": "Update repo", "created_at": "2015-09-21T14:57:35+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000360, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "On a project group detail page, you can pick which stories to view via an active/merged/invalid checkbox. Unfortunately, this doesn't display properly in all common browsers, and it's not obvious at a glance what it's used for. Furthermore, the stories and projects pages use tabs to display this information, so it's inconsistent. Needs some tinkering!", "title": "Neaten project group story status", "created_at": "2015-09-21T15:08:54+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-03T20:44:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000361, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When filing a bug, usually it's unclear what needs to be done to solve the bug, as it's still just an 'issue'.\n\nShould not require the creation of a task just to enter an issue.", "title": "Filing a bug should not require adding any task", "created_at": "2015-10-09T08:48:41+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-05-02T19:52:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 995, "story_type_id": 1, "security": null, "id": 2000375, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Pages listing resources do one GET per resource, to display subscriptions. If you have a list with 100 resources... you have 100 GET requests. Let's fix that! :)", "title": "Pages load slowly-- too many GETs", "created_at": "2015-10-09T10:41:01+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000376, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "# Webclient changes aren't showing up! \n\n## What's going on?\n\n(the above was testing that changes from the previously merged markdown patch *were* showing up, in case anyone was curious.)", "title": "Changes aren't showing up", "created_at": "2015-10-14T14:58:25+00:00", "tags": [], "updated_at": "2015-10-15T12:01:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000378, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Users who aren't logged in can see the 'add tag' box! They can try to add a tag! They can type in its name and click 'add'! Luckily, they'll get a 401. But let's hide the button, too.", "title": "Hide 'add tag' until login", "created_at": "2015-10-15T11:57:42+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000379, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Would be nice to filter stories within a specific project by 'created', 'updated', and so on.", "title": "Filters for stories in projects", "created_at": "2015-10-15T12:49:37+00:00", "tags": [], "updated_at": "2019-05-03T20:52:08+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000380, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I go to https://storyboard.openstack.org/ and enter 'infra-manual' in the search dialog just below 'Projects' (not the one at the top right), then I get a tooltip saying '400: GET /api/v1/projects/search: Unknown argument: \"offset\"' and the list of projects shown as results is the same 10 projects which were shown when I first visited the page.\n\nThis happens both when logged out and logged in.", "title": "400: GET /api/v1/projects/search: Unknown argument: \"offset\"", "created_at": "2015-10-18T12:57:15+00:00", "tags": [], "updated_at": "2015-10-18T12:58:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2000381, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "There's no UX/UI notification to show that the story was actually created. \n\nHence things like this happen: \n\nhttps://storyboard.openstack.org/#!/story/2000392", "title": "Storyboard should redirect to story after creation", "created_at": "2015-11-02T16:14:53+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 87, "story_type_id": 1, "security": null, "id": 2000393, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When creating a story the following error occured, but the story appears to have been created\n\n400: POST /api/v1/stories/2000392:\n          Invalid input for field/attribute story. Value: '2000392'. unable to convert to Story", "title": "Storyboard API error", "created_at": "2015-11-02T16:18:25+00:00", "tags": ["duplicate", "low-hanging-fruit", "storyboard-bug"], "updated_at": "2019-05-02T23:35:57+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 87, "story_type_id": 1, "security": null, "id": 2000394, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Trying to search for devstack-gate on the project page gives \"400: GET /api/v1/projects/search: Unknown argument: \"offset\" \" as an error. It is fortunate storyboard is on the first page or I couldn't file this bug.", "title": "project  listing is broken", "created_at": "2015-11-03T19:32:18+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 110, "story_type_id": 1, "security": null, "id": 2000395, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 6, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "on arriving at storyboard.openstack.org from cold, no login:\n\nthe home page\n- doesn't mean very much: could do with something saying what it is, or what it's for\n- it's not clear why the specific listed items are there\n- or how they are sorted. i suggest put most recent updates at the top\n- lots of 'not updated'\n- timestamps in 2014-03-12 17:52:19 +0000 format are ugly/hard-to-grok,long *and they wrap* for users. just rationalise to one timezone and be done, maybe even just show dates on the normal lists\n- still two search bars. confusion. why?\n- if i enter zuul in bottom search bar, then zuul in top search bar, i see two 500 popups\n- dashboard and project icons seem to go to the same place", "title": "Various UI issues", "created_at": "2015-11-10T15:37:59+00:00", "tags": [], "updated_at": "2019-05-02T19:56:03+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 738, "story_type_id": 1, "security": null, "id": 2000397, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Some buttons are missing until you turn the tablet sideways. Funnily enough, Tripadvisor has the same issue; they work around it with a notification that tells you to turn your tablet sideways.... may be the same on a mobile phone.", "title": "Buttons missing on tablet", "created_at": "2015-11-10T16:04:45+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000398, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "At the moment, users who aren't logged in first see the projects list. This is more informative than an empty dashboard (the old destination), but still doesn't explain what storyboard is. Not great for new users.", "title": "For new users, it's not obvious what storyboard is", "created_at": "2015-11-11T09:43:02+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000399, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "On the projects list, etc. I'd hazard a guess that it may refer to the projects themselves (eg: project title, description, etc), rather than the stories in the projects-- this isn't very interesting for a user, so if that's what's going on, it should probably check for updates on the stories in the projects instead.", "title": "Lots of 'not updated'", "created_at": "2015-11-11T09:51:10+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000400, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Quoted from Paul Sherwood's original story: \"timestamps in 2014-03-12 17:52:19 +0000 format are ugly/hard-to-grok,long and they wrap for users. just rationalise to one timezone and be done, maybe even just show dates on the normal lists\"", "title": "'Last Updated' timestamps are ugly", "created_at": "2015-11-11T09:54:55+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000401, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 9, "key": "invalid"}, {"count": 4, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Fix storyboard search\n\nre: can't select project groups with top right searchbar, this is the error: \"Error: Could not resolve 'sb.project_group.detail' from state 'sb.project_group.list'\n^ old, no longer an error; keeping for history.\n\ntags in review here: https://review.openstack.org/#/c/150052\n\n(re) move search icon in review here: https://review.openstack.org/#/c/279204/", "title": "Various search fixes", "created_at": "2015-11-11T09:59:43+00:00", "tags": [], "updated_at": "2019-05-02T20:03:25+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000402, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard currently redirects non-logged-in users from the dashboard to the projects list, including when they click on the dashboard. This is because the dashboard has no relevant information for them, but it's confusing and makes it look like the link just doesn't work. We may want to hide the dashboard for users who aren't logged in, or show a notification explaining what's going on. Hiding the icon would probably be less intrusive; the notification may be the quicker fix.", "title": "Dashboard redirects for non-logged-in users", "created_at": "2015-11-11T10:03:10+00:00", "tags": [], "updated_at": "2018-09-06T18:31:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000403, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently they're organised according to when they were created; it's a bit odd. We probably want them organised with the most recently updated at the top by default. The 'updated' filter seems to behave a little strangely; see story: https://storyboard.openstack.org/#!/story/2000400 . Originally raised in Paul Sherwood's story here: https://storyboard.openstack.org/#!/story/2000397", "title": "Most recently updated projects should be at top of projects list", "created_at": "2015-11-11T10:09:11+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-21T01:49:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000404, "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": "Sometimes I open a story that's not on the first page of results. Unless I remember to open it in a new tab, I then have to go all the way back through the stories if I want to see the next one. The filters are not preserved, either. Grr.", "title": "Back Button should go to the correct page of results", "created_at": "2015-11-11T10:11:57+00:00", "tags": ["duplicate"], "updated_at": "2018-01-13T12:29:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000405, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It's not obvious that storyboard-webclient is the project in which to file UX bugs, and storyboard is the project in which to file bugs in the API, since in most conversation we refer to everything as just 'storyboard'. That's probably not going to change. Might be worth mentioning this on the 'about' page with the right links.", "title": "About page should contain 'file a bug in storyboard itself'", "created_at": "2015-11-11T10:20:18+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000406, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "*** MICHAEL KROTSCHECK HAS BEEN CROWNED KING IN THE NORTH* ***\n\nEvery hour, the user is logged out and then logged back in again. In those few seconds, two 401s spatter the screen, like bloodstains on fresh snow. Worse, if a user has been logged out while they have been away, and then that user comes back to storyboard via a link elsewhere, they shall see those same 401s. They may then even be redirected to the dashboard.\n\nThis is the most irritating bug in the whole of storyboard, and the person to fix it will be crowned King in the North*.\n\n(Probably related to: https://storyboard.openstack.org/#!/story/36 )\n\n<font size=1>*one of the very successful Kings in the North of old, that is.</font>\n\n<hr>\n\nKrotscheck has given us more background on this!\n\npt 1 - the saga begins, pieced together from entries in Krotscheck's grimoire.\n\nSo, accessing a resource when you have a stale OAUTH token should trigger a 401, and the OAUTH token should then be reloaded with a refresh token. The first bit works, ie: storyboard knows the token is stale, and triggers the 401. But! There are too many requests, triggering multiple 401s (5 at the last count), which then confuse storyboard into thinking there's something wrong with the token. So, instead of just reloading it, storyboard flushes it, and the user is logged out.\n\nKrotscheck suggests creating a promise that is resolved when the token's status is discovered, and creating one source of authority for those promises. This will mean that, when a user asks for a resource, it will wait to hear back from that source of authority. When the token needs refreshing, the HTTP request wait until the token is refreshed. There would be a timeout for cases when the promise didn't resolve. (also he notes that this doesn't solve problems caused by the client and server being out of sync)\n\npt 2 - the saga continues. tl;dr: A lone traveller explores, gets lost, cries.\n\nThe 401 is happening because storyboard is trying to reload an abstract state-- actually, Zara's not sure about this. She tried hackily removing every 'abstract:true' and the errors were the same as before.\n\nDifferent errors happen depending on whether the user refreshes a page after the access token has expired, or browses to a different page after the access token has expired.\n\nSome of the errors are caused by the way things are resolving in the story and project group modules, for their detail pages. (removing the relevant code from the module stops these 401s, but obviously we wan them to resolve! But that may help narrow it down a bit.)\n\npt 3 - the epilogue, after Krotscheck came back and fixed a bunch of stuff.\n\nAccess tokens and login now behave sensibly (or should once patches are merged). An expiring access token still causes problems (a user is logged out, but the web UI doesn't make this apparent until the user manually refreshes the page). They can try to edit things, and will get confusing errors. The refresh token does not POST as expected. The user is no longer logged-out hourly, so this is less annoying, but still annoying. It'd be nice to get it working!\n\nThe current error message is:\n\n    400: GET /api/v1/users/preferences: Invalid input for field/attribute user_id. Value: 'preferences'. unable to convert to int \n\nI've been able to reproduce this by modifying the steps suggested in that review,that is:\n\nin storyboard/etc/storyboard.conf:\n\n  1) set access token to a low value (eg: 20)\n\nin storyboard-webclient/src/app/auth/service/pre_expire_delta.js:\n\n  2) set pre_expire_delta.js to a lower value (eg: 10)\n\nit looks like POSTing the new refresh token fails as the user is logged out before it can send, and so doesn't have auth to POST it. (there is a 401 error when trying to post the refresh token, before the visible 400; we currently hide it so the screen isn't full of error messages, but anyone debugging this should be aware of it. The details of the error will still display in the browser console.)", "title": "The dreaded 401", "created_at": "2015-11-11T10:48:56+00:00", "tags": [], "updated_at": "2016-12-20T15:39:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000407, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Some project groups contain a lot of projects! We should have a 'hide projects' button for when users just wish to see what groups there are without seeing what they contain. Saves some scrolling.\n\nAlso, currently does one GET per project in project groups. Probably want to fix that...", "title": "Fix project groups list", "created_at": "2015-11-11T12:25:05+00:00", "tags": [], "updated_at": "2015-12-04T16:50:55+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000408, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The most recent comment is posted at the end of the list of comments. Comments are paged, so only the first ten show at a time. This means that when a user posts, say, the 11th comment, nothing seems to happen. Let's fix this!", "title": "Not obvious when comment has been posted", "created_at": "2015-11-11T12:41:32+00:00", "tags": [], "updated_at": "2018-08-07T21:32:44+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000409, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Both descriptions and comments use markdown. So let's have the preview feature for both! That way, we can check that everything is formatted as expected...", "title": "Toggle preview for descriptions as well", "created_at": "2015-11-12T14:07:00+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000410, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "For non-logged in users, certain buttons are interactive but can't actually be used to manipulate anything. For example, the 'priority' button-- it seems to the user that it's possible to change the priority of a story without being logged in, but after clicking the button and selecting a different priority, a 500 error is raised.", "title": "Sometimes buttons are misleadingly interactive", "created_at": "2015-11-12T16:20:23+00:00", "tags": [], "updated_at": "2018-09-05T22:21:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000411, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "After deploying StoryBoard and testing it a bit, I noticed that I couldn't comment on stories. The error : `400: POST /api/v1/stories/3/comments: Unknown attribute for argument comment: story_id`\n\nTook me a while but I discovered the root cause, and why this is not failing in <http://storyboard.openstack.org>.\n\nLooks like the version `0.8` of WSME is more strict than previous versions. Since this [commit], WSME checks unexpected attributes, and looks like `storyboard-webclient` is sending `story_id`, which `storyboard` API didn't expect. \n\nLooking at the [API spec], it seems to me that `storyboard-webclient` is doing it right, and the bug should be fixed in `storyboard`. We could do various things to fix this problem:\n1. Set `WSME>=0.6,<0.8` in the [requirements.txt] file. This is more like a temporary fix until we do the real fix\n2. Change the model of the Comments. I've tested the following patch and it works too. I'm not sure if it needs more work though, or this is enough:\n\n        --- a/storyboard/api/v1/wmodels.py\n        +++ b/storyboard/api/v1/wmodels.py\n        @@ -35,6 +35,9 @@ class Comment(base.APIBase):\n             is_active = bool\n             \"\"\"Is this an active comment, or has it been deleted?\"\"\"\n         \n        +    story_id = int\n        +    \"\"\"The ID of the corresponding Story.\"\"\"\n        +\n         \n         class SystemInfo(base.APIBase):\n             \"\"\"Represents the system information for Storyboard\n\n3. Change `storyboard-webclient` to not send `story_id`. This will involve a change in the [API spec], which I think we should avoid for now.\n\nI guess that this still working on <http://storyboard.openstack.org> because an older version of WSME was installed and puppet scripts don't upgrade it.\n\nUpdate:\n---------\n\nI no longer think **2** is a solution. That introduces `story_id` in the `Comment` object. The option **3** sounds more reasonable to me, the problem is that the `storyboard-webclient` is sending `story_id` as part of the `Comment` object, and then the server complains because that object doesn't have a `story_id` attribute, and of course this wouldn't involve a change in the [API spec]\n\n\n[API spec]: http://docs.openstack.org/infra/storyboard/webapi/v1.html#post--v1-stories--story_id--comments\n[requirements.txt]: http://git.openstack.org/cgit/openstack-infra/storyboard/tree/requirements.txt\n[commit]: http://git.openstack.org/cgit/openstack/wsme/commit/?id=52f756a9deb925744e6c3ec293ac6d3e94600eb1", "title": "Fix API for commenting on stories", "created_at": "2015-11-15T14:21:00+00:00", "tags": [], "updated_at": "2015-11-16T10:12:56+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1010, "story_type_id": 1, "security": null, "id": 2000414, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When a task changes status to 'review', there's often no link to the work that's waiting in gerrit, and the person reading the story must search for it. This is a pain when gardening. I'm currently working around this by linking to things in the comments, but it's not the best solution.\n\nDB columns: https://review.openstack.org/#/c/277481/\n\nAPI endpoints: https://review.openstack.org/#/c/277831/\n\nUI: https://review.openstack.org/#/c/277882/", "title": "'Tasks' should have option to include links", "created_at": "2015-11-16T11:43:12+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2016-02-09T17:34:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000415, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I order projects by 'updated', I expect this to refer to updates to both the project itself (eg: project title, description), and *also* the stories within it. Currently, 'updated' only refers to the project. This isn't very useful, and also confuses users (they think that no work has been done in a project that apparently hasn't been updated, when this just means that the title and description have stayed constant). We should fix this.", "title": "'Updated' doesn't behave as expected", "created_at": "2015-11-16T12:41:46+00:00", "tags": [], "updated_at": "2019-05-02T20:11:07+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000416, "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 you click 'new story' at the top, no project is selected by default. 'Save changes' is then greyed out in the dialogue to create a new story, and remains so until a project is selected for at least one task. It's not obvious that the missing project is the problem. \n\nA project *is* selected for the task by default when the user views a project, then clicks the 'add story' button on the top right. Since stories can span several projects, we probably don't want the main story creation button to be within a project detail page, so we'll want to have a note on the dialogue that informs the user that they must select a project for any task.", "title": "Not obvious that task must be linked to project", "created_at": "2015-11-16T12:52:34+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T20:20:50+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000417, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "All empty stars, even when subscribed. :(", "title": "Subscriptions don't display properly in 'stories created by me'", "created_at": "2015-11-16T14:51:54+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000419, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 4, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A few things...\n\n1) Should show where to file bugs in storyboard itself. It's not obvious that storyboard-webclient is the project in which to file UX bugs, and that storyboard is the project in which to file bugs in the API, since in most conversation we refer to everything as just 'storyboard'. That's probably not going to change. Should mention this on the 'about' page with the right links.\n\n2) May not be obvious that 'task tracking' includes bugs and features\n\n3) Misc. grammar\n\n4) Make it clear that users need to login to edit", "title": "'About' page tweaks", "created_at": "2015-11-16T15:36:27+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2015-11-16T15:40:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000420, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When you try to change the titles/descriptions of some stories, this happens: \n\n> 500: PUT /api/v1/stories/2000175: 'unicode' object has \n>  no attribute '_sa_instance_state'\n\nUPDATE:\n\nThis happens to stories that have tags.\n\nAs a quick workaround, removing tags from affected stories fixes this. Tags don't do anything useful anyway, yet, so it's no great loss. But we'd like them to work properly with time...\n\nPatch now in review https://review.openstack.org/#/c/249208/", "title": "Some stories aren't editable", "created_at": "2015-11-16T16:54:18+00:00", "tags": [], "updated_at": "2015-11-24T14:52:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000422, "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": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Pick a story from the first page of stories. Edit its description, save it, click 'stories' and select it again. Edited description won't show up until that story's page is refreshed. Looks like a cache issue. A problem because it can trick users into thinking their edits aren't working.\n\nThe converse seems to work if you toggle the preview button and then cancel. That is, your cancelled edit appears as though it had been saved in the final story, but only *dis*appears on refresh!", "title": "Restore original story state when cancelling editing", "created_at": "2015-11-25T12:19:16+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-06-07T17:42:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000430, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Sometimes it's a dropdown (eg: list of stories in a project) that says how many tasks are merged, in review, etc. Sometimes it isn't (eg: list of stories per se). I think it should always be a dropdown.", "title": "Story status button dropdown should be consistent", "created_at": "2015-11-30T16:06:11+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-03T20:43:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000434, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The list should be collapsible Otherwise the user has to scroll down for ages to see stories they've created and stories assigned to them.\n\nAlso it has some bugs like:\n- Tag events show up as empty, looks like the templates for them don't exist.\n- Changing the assignation of a task is producing a \"task_details_changed\" event and it should be \"task_assignee_changed\"\n  - part of this story: https://storyboard.openstack.org/#!/story/2000478, patch here: https://review.openstack.org/#/c/277386/\n- Some timestamps are next to the event text, and others are on the right and is not consistent.", "title": "Recent Events list needs some improvements", "created_at": "2015-11-30T17:49:40+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2016-10-22T09:46:34+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000435, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Paging through storys in the zuul project storyboard frequently breaks on all browsers and will lock them up in a way that requires a force quit.", "title": "Paging breaks consistently", "created_at": "2015-12-07T11:37:20+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 283, "story_type_id": 1, "security": null, "id": 2000440, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "At the moment, ANSI escape codes can confuse storyboard and make everything crash. Users will paste error logs, including these codes, from a terminal into a story. Storyboard needs to handle these in a sensible way.", "title": "Storyboard needs to handle unusual characters properly", "created_at": "2015-12-08T10:53:58+00:00", "tags": ["storyboard-bug"], "updated_at": "2018-06-11T19:11:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000441, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Users who have selected to only view a subset of events in the event timeline for a story have no simple means to check the hidden events.  They can change their event viewing preferences, but this makes it complicated to then reduce them again to some desired subset, except by careful memorization of preferences.\n\nAdding some UI element to temporarily show all events, regardless of preferences, allows users to safely select a subset of interesting events, while still having easy access to all events.", "title": "Events timeline should support Show All", "created_at": "2015-12-10T13:25:28+00:00", "tags": ["storyboard-feature-request"], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 170, "story_type_id": 1, "security": null, "id": 2000442, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 11, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "To start with, just to overlap with all fields currently in user preferences. There are a lot, so I'm giving them their own story to keep track of things.", "title": "Create Templates for Email Notifications", "created_at": "2016-01-12T13:51:14+00:00", "tags": [], "updated_at": "2016-01-12T14:09:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000456, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 6, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Here are some things we need to be able to do when viewing a task in a story (or in the kanban view)\n\nWe may need a 'more...' option in the tasks view to include everything, or things will get crowded and ugly. That will require knowing which features are most needed.\n\nTask resources UI patch here: https://review.openstack.org/#/c/277882/ (backend patches here: https://review.openstack.org/#/c/277481/ and https://review.openstack.org/#/c/277831/ )", "title": "Fix tasks", "created_at": "2016-01-14T13:46:51+00:00", "tags": ["low-hanging-fruit", "storyboard-feature-request"], "updated_at": "2019-03-23T20:38:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000463, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When a number is searched for via the header search (top right), if there's no project/story/project group matching that number, storyboard will give a 404 error! The search results will still be returned. It just looks weird. The sidebar search works fine in this respect.", "title": "404s in header search", "created_at": "2016-01-18T15:59:02+00:00", "tags": ["storyboard-bug"], "updated_at": "2018-08-15T19:45:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000466, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This one's really weird. So, story descriptions are in markdown, which means you can have a code block, like:\n\n    for (x in y)\n    do x;\n    print \"y\";\n\netc. You do this by indenting 4 spaces, then typing. But! The longer the very first thing you type after those four spaces, the slower the page loads. Eventually the browser begs you to stop a script. Try it for yourself; indent 4 spaces and type the alphabet! (but please don't save it as a story ;) ) What's going on?", "title": "Page slows and freezes when first thing in code block is too long", "created_at": "2016-01-20T13:31:26+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000469, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Something was wrong, there were way too many storyboard worker processes running, and the host for storyboard.openstack.org didn't have enough RAM to handle the weirdness. This meant puppet kept crashing while trying to build. In one case, the newest webclient built, but the API was behind, so boards and worklists didn't work properly. We need to find out what's going on, patch it, and kill all the extra storyboard processes.", "title": "StoryBoard worker processes keep running... sometimes", "created_at": "2016-02-01T12:37:06+00:00", "tags": ["storyboard-bug"], "updated_at": "2016-02-02T17:45:50+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000477, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 5, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "'Task status changed' and 'task assignee changed' events used to display correctly. These have stopped working, and now just give a generic 'was updated' message. We should find out what's up.\n\nIt looks like original_task and updated_task in tasks.py are both the updated task. This patch seems to have caused it: https://review.openstack.org/#/c/155751/\n\nPedro and Zara narrowed it down, SotK worked out the fix! Yay, teamwork! Patch in review here: https://review.openstack.org/#/c/277386/", "title": "Bugs in Timeline Events", "created_at": "2016-02-01T17:22:38+00:00", "tags": [], "updated_at": "2016-02-08T16:49:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000478, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Need to determine whether storyboard can meet one or more of these requirements:\nA) Provide an easy way to input topics for future user stories\nB) Input user stories\nC) Track user stories", "title": "Find out if storyboard could be suitable for PWG", "created_at": "2016-02-04T16:30:34+00:00", "tags": ["PWG"], "updated_at": "2018-09-05T22:20:57+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000479, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I couldn't find a good existing story for this issue, so here's a place for misc dashboard fixes.", "title": "Improve Dashboard", "created_at": "2016-02-22T14:27:18+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2016-02-22T15:03:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000489, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "eg: `openstack-infra/puppet-translation_checksite` takes 5 whole seconds to load! Most of these seem to be automatically generated, and have no content, which suggests to me that the title is the relevant factor.\n\nStoryBoard does not allow project titles containing slashes and underscores by default, so that may also be a hint.\n\nI now think it's the title length that's causing the problem. Things seem to get weird around the 40 character mark.\n\nHaving an underscore in the title also slows things down. So this may be a case where longer titles are likely to contain more underscores, rather than being a problem in themselves.", "title": "Some projects load slowly and it's not clear why", "created_at": "2016-02-26T14:03:25+00:00", "tags": ["storyboard-bug"], "updated_at": "2019-05-02T20:34:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000496, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I restart my instance after a while (eg: overnight), and try to login, an error message in the webclient says something about preferences and hangs. Once I refresh the page, it works as normal. Seems to have started happening since the fixes for the dreaded 401, so may be related, or may be coincidence.\n\nSome more details.\n\n<h2> Error Message </h2>\n 400: GET /api/v1/users/preferences: Invalid input for field/attribute user_id. Value: 'preferences'. unable to convert to int \n\n<h2> Response Body </h2>\n{\"debuginfo\": null, \"faultcode\": \"Client\", \"faultstring\": \"Invalid input for field/attribute user_id. Value: 'preferences'. unable to convert to int\"}\n\n<h2> Console </h2>\n\"Error: [$resource:badcfg] Error in resource configuration for action `get`. Expected response to contain an object but got an array\n\nhttp://errors.angularjs.org/1.3.13/$resource/badcfg?p0=get&p1=object&p2=array", "title": "StoryBoard gives 400 error when restarting instance after a while", "created_at": "2016-03-09T11:56:00+00:00", "tags": ["storyboard-bug"], "updated_at": "2019-05-02T20:38:18+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000506, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Occasionally, the StoryBoard webclient will display a load of error messages, while working normally. And the error messages are green. And the error code is '200', meaning that it's not an error; it's a success message. Seems to have been introduced somewhere with the boards and worklists work; we saw it on SotK's test instance some time before it appeared in master.\n\nMore context: \n\nsomething isn't being handled by the global interceptors, which filter successful http requests and gives them the lowest priority.", "title": "StoryBoard occasionally gives a bunch of green 'errors'", "created_at": "2016-03-09T11:58:47+00:00", "tags": ["storyboard-bug"], "updated_at": "2019-05-02T20:39:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000507, "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": 5, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Add an interactive tutorial diagram to the dashboard to allow users to see how Storyboard elements relate to each other.", "title": "Add Storyboard tutorial to dashboard", "created_at": "2016-03-17T14:32:40+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T17:56:34+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1093, "story_type_id": 1, "security": null, "id": 2000514, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "UI issues to look at with regard stories", "title": "Make it easier to create a new story", "created_at": "2016-03-17T14:40:14+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1093, "story_type_id": 1, "security": null, "id": 2000515, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "# The problem\n\nSo, when developing, we keep hitting this annoying situation where we work on things in parallel which include database migrations, and then our databases conflict. So we need a solution which is less headachey than the current situation.\n\n# Suggested approach: \n\nWe just list planned migrations and then do them ahead of developing on the UI side. There might be times where we have to go back and refine, but that'd make life easier. It also means we can batch related changes.\n\n## List of planned migrations:\n\n  * Automatic worklists and boards stuff [fill out details in a story, then link]\n  * Task notes-- changing 'link' to 'notes'\n  * Subscriptions-- to boards, worklists, and tags [fill out details of specific work in story, then link]\n\n# Totally unsuitable solutions which will prompt Zara to kick people from the channel:\n\nAnything that takes longer and/or is more confusing than waiting a week or two before working on the db.", "title": "Planned StoryBoard database migrations", "created_at": "2016-03-18T11:58:47+00:00", "tags": [], "updated_at": "2019-05-02T20:46:52+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000516, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The more events, the more slowly the dashboard loads. It seems to wait for all recent events to load before displaying. This is annoying when a user visits the dashboard for something other than recent events. It should probably only load the first few until the user clicks to expand the list.\n\nAlso, when I tried deleting all on my test instance, the first time I clicked it, it only deleted some. (I had about 530; after I clicked to delete (with the list collapsed), I had 366. I expanded the list, clicked to delete all, and that time it deleted them all). I don't  yet know whether those details are relevant and I've only seen the bug once, so I'll make a story once I have a firmer idea.", "title": "Dashboard loads slowly when there are lots of Recent Events", "created_at": "2016-03-21T14:50:35+00:00", "tags": [], "updated_at": "2016-03-21T14:51:14+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000518, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I just had to explain to someone how to search for active low-hanging-fruit stories in openstack-ci projects in StoryBoard:\n\n\"go to https://storyboard.openstack.org/#!/search and type in low-hanging-fruit and select the tag looking one, then add openstack-ci and look for the 3 boxes, then type active to find Story Status: Active\"\n\nI would love to be able to just give them a link instead.", "title": "Make a link to a search query available", "created_at": "2016-04-01T17:20:12+00:00", "tags": [], "updated_at": "2018-09-05T22:18:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 162, "story_type_id": 1, "security": null, "id": 2000536, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This hasn't been updated in a year. It still works amazingly well, but there are some things missing, like boards and worklists. We need this in better shape to use it for CI, etc.\n\nProgress of python client (green = there, yellow = in review, white = unknown or not present):\n\n(zoom in at http://imgur.com/NrJBIsg.png)\n<img height= 600 src=\"http://imgur.com/NrJBIsg.png\">", "title": "Update python-storyboardclient", "created_at": "2016-04-08T10:03:31+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T20:51:34+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000542, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I think this would make more clear to know what the actual status of the story is", "title": "Show the current status of the story in the story page", "created_at": "2016-04-08T14:23:53+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1115, "story_type_id": 1, "security": null, "id": 2000543, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Some things are a bit counter-intuitive; let's fix that.", "title": "Improve StoryBoard subscriptions", "created_at": "2016-04-11T14:50:34+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-16T02:24:18+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000545, "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": ["low-hanging-fruit", "storyboard-searching-enhancements"], "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": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "https://storyboard.openstack.org/#!/project_group/55 if a repo has active stories associated with it, it would be nice to see the number of them beside the repo. I am going through this list and clicking on each repo to discover that a repo has no stories, then going back to https://storyboard.openstack.org/#!/project_group/55 to click on another repo and again no stories. It would save me time if I could see if a repo has stories or not from this view: https://storyboard.openstack.org/#!/project_group/55", "title": "project_group view: add number of active stories beside repo list", "created_at": "2016-04-13T16:00:21+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-28T20:06:52+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000550, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The 'task' section of the 'New Story' modal lacks a heading. The default behavior is to simply copy the title, which makes it non-obvious as to what the field is for.\n\nAs a proposed fix, please add a heading of the word 'Tasks' to the section so that users will know what the field does.", "title": "'New Story' modal 'task' section lacks a heading", "created_at": "2016-04-13T21:26:49+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-02T11:33:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1120, "story_type_id": 1, "security": null, "id": 2000553, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I am adding tasks to a story I often add many tasks. To each task I must manually select an associated project. Since most tasks will be against the same project as the previous task, it would be beneficial to pre-populate the field.", "title": "\"Add task\" button does not autofill associated project", "created_at": "2016-04-13T22:10:42+00:00", "tags": [], "updated_at": "2019-05-02T20:59:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1120, "story_type_id": 1, "security": null, "id": 2000555, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The filtering is currently kind of weird, and uses an sql query before further manipulating the result. This should be changed to only use an sql query, which should speed things up a small amount, and also make extending the code much less annoying.\n\nWhilst this is done, the remaining post-sql processing behaviour should change, in order to allow one request to get the list of boards/worklists containing any task in a story, given the story ID.", "title": "Improve filtering of boards and worklists", "created_at": "2016-04-27T11:59:00+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000565, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Logging in produces an error when running StoryBoard with Python 3.5:\n\n    Traceback (most recent call last):\n      File \"/usr/lib/python3.5/wsgiref/handlers.py\", line 137, in run\n        self.result = application(self.environ, self.start_response)\n      File \"/home/codethink/storyboard/storyboard/api/middleware/token_middleware.py\", line 49, in __call__\n        return self.app(env, start_response)\n      File \"/home/codethink/storyboard/.tox/venv/lib/python3.5/site-packages/pecan/middleware/recursive.py\", line 56, in __call__\n        return self.application(environ, start_response)\n      File \"/home/codethink/storyboard/.tox/venv/lib/python3.5/site-packages/pecan/core.py\", line 829, in __call__\n        return super(Pecan, self).__call__(environ, start_response)\n      File \"/home/codethink/storyboard/.tox/venv/lib/python3.5/site-packages/pecan/core.py\", line 678, in __call__\n        self.invoke_controller(controller, args, kwargs, state)\n      File \"/home/codethink/storyboard/.tox/venv/lib/python3.5/site-packages/pecan/core.py\", line 572, in invoke_controller\n        result = controller(*args, **kwargs)\n      File \"/home/codethink/storyboard/storyboard/common/decorators.py\", line 43, in decorate\n        return func(self, *args, **kwargs)\n      File \"/home/codethink/storyboard/storyboard/api/v1/auth.py\", line 64, in authorize_return\n        openid_client.verify_openid(request)\n      File \"/home/codethink/storyboard/storyboard/api/auth/openid_client.py\", line 138, in verify_openid\n        for token in verify_data_tokens)\n      File \"/home/codethink/storyboard/storyboard/api/auth/openid_client.py\", line 138, in <genexpr>\n        for token in verify_data_tokens)\n    TypeError: a bytes-like object is required, not 'str'", "title": "Logging in to StoryBoard doesn't work in python 3.5", "created_at": "2016-05-09T14:50:16+00:00", "tags": [], "updated_at": "2018-03-05T17:22:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000576, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Still works, but gives this error message:\n\nhttp://paste.openstack.org/show/496679/\n\nProbably a bug introduced with private stories patches, see: https://storyboard.openstack.org/#!/story/2000568 for links\n\nThis isn't an issue on Zara's test instance, which is up to date with master.", "title": "Search is giving an error", "created_at": "2016-05-11T10:39:14+00:00", "tags": [], "updated_at": "2016-05-11T11:56:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000579, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "At the moment, adding `Story: $id` in the commit message of a gerrit change creates a link back to the story. We should be using the task id instead, since tasks map directly to commits (and stories do not). This will allow us to parse the commit message and update the status/assignee/notes of the referenced task.\n\n<img src=\"http://i.imgur.com/4F74ro9.jpg\" width=\"100%\" />\n\nWIP Proof of Concept for how things should work: https://review.openstack.org/#/c/302912/1\n\nSee also: \n\nhttps://storyboard.openstack.org/#!/story/2000012", "title": "Gerrit should use task ids instead of story ids in its commit syntax", "created_at": "2016-05-16T11:42:57+00:00", "tags": [], "updated_at": "2016-05-16T16:18:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000584, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In the search view, attempt to search for \"js-\". See errors.", "title": "Searching for dashes causes errors", "created_at": "2016-05-23T15:47:49+00:00", "tags": [], "updated_at": "2018-02-27T17:20:49+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000595, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "User searches for project using quicksearch. Opens new project, but cannot subscribe.", "title": "Cannot subscribe to project from detail view.", "created_at": "2016-05-23T15:48:56+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 1, "story_type_id": 1, "security": null, "id": 2000596, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This story will track progress of the process for StoryBoard to be the task tracker of choice for the OpenStack community.\n\nThis story directly relates to the infra spec found here: https://review.openstack.org/#/c/314185/ and will be heavily curated to stay in line with this spec. If you would like to submit feature requests for StoryBoard it is best to create your own story for your feature request. Thank you.", "title": "Facilitate StoryBoard migration process for OpenStack", "created_at": "2016-05-25T15:33:05+00:00", "tags": [], "updated_at": "2019-05-02T21:02:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000610, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Comments should be persistent. They should not paginate. All should be visible in the story view. They should not display uninteresting timeline entries by default. Moderately interesting entries should be visually very tiny.\n\nLaunchpad functionality on comments is the standard Jim Blair would like to see implemented.", "title": "Comments should not paginate", "created_at": "2016-06-02T17:58:20+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000620, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Morgan Fainberg would like to be redirected to the original page he was looking at after he has logged in.", "title": "Redirect to original page on login", "created_at": "2016-06-02T18:00:10+00:00", "tags": [], "updated_at": "2019-05-02T21:03:14+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000621, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently when one opens a note it is in edit mode by default. Morgain Fainberg has shared that he would prefer to see a note in read only mode when he first opens the note, with edit mode being an option he can select once the note is opened.", "title": "Opening a note should be read only by default", "created_at": "2016-06-02T18:06:46+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000622, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently if I try to find a Story by searching in the top right hand \"Jump to...\" box, into which I type the characters for the Story ID, I get many errors as the search seems to start searching on every character I input, obviously not finding what I am looking for. Once I input a complete Story ID, I do get a drop down menu with the story co-responding to the story ID I input (yay success) but it would be nice if I could get to that point without all the errors getting in the way and causing confusion.", "title": "I would like to search based on Story ID", "created_at": "2016-06-02T21:59:24+00:00", "tags": ["duplicate"], "updated_at": "2018-09-05T22:17:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000623, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If two people open a given story view, and both edit different fields of a task, the change by the person who finishes later will be the only change reflected in the database. The earlier change is fully overwritten because updating one task field in the UI updates them all to match the UI state in the database.", "title": "Concurrent editing of tasks isn't possible", "created_at": "2016-06-03T13:40:14+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000625, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It should be possible to subscribe to a worklist. It may one day be useful to receive notifications about items being moved in worklists, but this should be configurable as soon as it is implemented, since we want to use subscription to worklists as a generic expression of interest in the worklist.", "title": "Allow subscription to worklists", "created_at": "2016-06-03T14:01:35+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2000626, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I would like to be able to reference and edit a StoryBoard gui guide to help users learn how to interact with the StoryBoard gui successfully. Currently no such guide exists. I will start by creating an initial gui guide.", "title": "I want to be able to reference a StoryBoard gui guide", "created_at": "2016-06-03T14:48:23+00:00", "tags": [], "updated_at": "2018-02-22T07:32:09+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000627, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If I open the Add Tag option by clicking on the button, I can't close it again. I can add a tag and then delete the tag but that creates events in the events timeline. I can refresh the page to get rid of the tag text box but I don't think users should have to do that. I would like the option to be able to cancel the Add Tag text box within the gui.", "title": "Cancel the Add Tag text box", "created_at": "2016-06-03T17:57:49+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000628, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I really like the 'stories created by me' dashboard column information. I do find myself wondering what repo a story relates to as I scan the list of stories and evaluate their current status. Having the repo name the story is filed against would really help me. Also as a stretch goal if the repo name could be displayed, if the stories could be grouped by repo that would be really handy as well.", "title": "My 'stories created by me' dashboard column entries could include repo name", "created_at": "2016-06-08T17:23:16+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T21:05:26+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000633, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Jeblair posted to anteaya:\n\n2016-06-08T22:12:05 anteaya: (i never want to see \"x minutes ago\" i only ever want to see UTC timestamps. anything else means i have to do math, which i am bad at, and leaves me less time for things i am good at)\n\n2016-06-08T22:12:39 anteaya: i do not know what timezone those times are in, which means i have to do a lot of math, and then ask you if you remember what time it was when you created the story\n\nPrompted by https://storyboard.openstack.org/#!/story/2000620", "title": "StoryBoard should use UTC timestamps", "created_at": "2016-06-08T22:28:40+00:00", "tags": [], "updated_at": "2019-06-07T18:01:19+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000639, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "To have an estimation tool to work out the size of a project, task, story etc.", "title": "Estimating amount of work, difficulty, length of time", "created_at": "2016-06-13T08:46:12+00:00", "tags": [], "updated_at": "2019-05-02T21:10:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1177, "story_type_id": 1, "security": null, "id": 2000642, "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": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 1, "key": "inprogress"}], "description": "Currently a person can only see active stories they created in their dashboard. I would like the ability to filter on a person's name and see all the stories they created, regardless of status. I also would like to have this ability for myself.", "title": "Find all Stories created by someone", "created_at": "2016-06-15T13:41:19+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-06-21T17:58:15+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000645, "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": "Storyboard presents a lot of information to users, much of which has relevance \noutside of the specific view.  Where sensible, these elements should be \nhyperlinks to the related content.", "title": "Storyboard UI elements should link to related content", "created_at": "2016-06-15T14:22:39+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-25T21:45:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 170, "story_type_id": 1, "security": null, "id": 2000646, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently the gate-storyboard-js-integration job does not function when run on patches to the api. It should.\n\nA snip from a current failure log:\n\n    2016-06-20 12:15:19.814283 [dix] Could not init font path element /usr/share/fonts/X11/Type1, removing from list!\n    2016-06-20 12:15:19.814317 [dix] Could not init font path element /usr/share/fonts/X11/100dpi, removing from list!\n    2016-06-20 12:15:19.814352 [dix] Could not init font path element /usr/share/fonts/X11/75dpi, removing from list!\n    2016-06-20 12:15:20.000774 ERROR: unknown environment 'grunt'\n    2016-06-20 12:15:20.010886 + result=1\n    2016-06-20 12:15:20.010996 + pkill Xvfb\n    2016-06-20 12:15:20.018835 + set -e\n    2016-06-20 12:15:20.018943 + exit 1\n    2016-06-20 12:15:20.022844 [Zuul] Task exit code: 1\n    2016-06-20 12:15:27.118854 [Zuul] Job complete, result: FAILURE\n\nlink (which will expire in 30 days): http://logs.openstack.org/41/331641/1/check/gate-storyboard-js-integration/2e3f24c/console.html#_2016-06-20_12_15_20_000774\nthe patch with the failed test: https://review.openstack.org/#/c/331641/1", "title": "The gate-storyboard-js-integration job should function on api patches", "created_at": "2016-06-20T15:26:23+00:00", "tags": [], "updated_at": "2019-06-21T18:08:42+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000651, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This was a hard one to explain in words. So, click on a project. You'll get a list of active, merged and invalid stories. Set pagination to display ten results per page. Go to the end of the active stories. Now navigate to the invalid ones. You'll be at the equivalent place in the invalid stories list!\n\nIf there are more active stories than invalid ones (and so on) you'll get some sort of nonsense page description, like '51 to 37 of 37', and no results displayed, as it counts backwards.\n\nWe prrrrobably want it to go back to the first page of results when a user toggles between active, invalid and merged stories. Or better yet, do that by default, but save the user's position in each list to use in the future.", "title": "Pagination is preserved between active, invalid and merged stories in projects", "created_at": "2016-06-22T11:44:16+00:00", "tags": [], "updated_at": "2019-03-17T19:42:11+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000656, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We should have a neat explanation of storyboard. Maybe in a story... maybe *this* story.\n\nTo Be Continued...\n\n(see http://eavesdrop.openstack.org/irclogs/%23storyboard/%23storyboard.2016-07-05.log.html#t2016-07-05T08:50:45 for context)\n\nWIP below:\n\n\nFig. 1: Standard task-tracker:\n\n<img src=http://imgur.com/QyNMcec.png height=400>\n\nMost task-trackers assume you care about one project at a time, ie: a single git repo. People can make tasks within that project. These tasks are generally assumed to be bug reports. Things like github issues work like this. The above diagram is an example.\n\nThis works when you do care about one project at a time. It's not very well-suited to cross-project work, as bug reports etc are 'within' projects.\n\nFig 2: How people mistakenly think StoryBoard works:\n\n<img src=http://imgur.com/paVtQ6a.png height=400>\n\nAt a glance, it seems like StoryBoard just adds another layer of abstraction, so that what were 'tasks' are now separated into both 'tasks' and 'stories'. People think that tasks are nested in stories are nested in projects are nested in project groups. Then those people get confused, because StoryBoard doesn't work like that! The above diagram is an example of how StoryBoard *doesn't* work (at some point, almost everyone has wrongly assumed it works like this, including the person writing this guide, so may as well mention it now).\n\nFig 3: How StoryBoard *actually* works:\n\n<img src=http://imgur.com/Gt31KXM.png height=400>\n\nSure enough, 'tasks' (ie: concrete work items) are separated out from 'stories' (ie: the goals the tasks are working toward). However, a goal, or story, may span multiple projects. For example, a story like 'make our APIs consistent' would affect every project with an API, and would have a corresponding task for each project, such as 'make the Nova API do foo', 'make the Cinder API do foo'.*\n\nTherefore, stories are not nested within projects. Rather, tasks that work toward a story are linked to projects (which generally map to a git repo where the task must take place). A story is relevant to the projects where its tasks take place.\n\nProject groups are used for related git repos (eg: storyboard, storyboard-webclient, puppet-storyboard, storyboard-pythonclient-- our API, browser UI, deployment scripts and python client, respectively). A project can be in multiple project groups.\n\nStoryBoard is designed for cross-project work, for a large collection of projects.\n\n<small>*In practice, that story would get very big, and you'd probably want to separate it out into more specific ones.</small>", "title": "Explain StoryBoard", "created_at": "2016-07-05T10:57:00+00:00", "tags": [], "updated_at": "2019-05-02T21:18:35+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000667, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We've talked about this a bunch of times on IRC, but here's a summary that's easier to find!\n\nEpics are groups of stories. Just as stories are goals, epics are bigger goals that depend on those stories.\n\nAs it happens, we already have rudimentary epics support in the StoryBoard API; we already can group stories according to whim or to criteria-- with worklists (manual and automatic!). So it's already easy enough to have a list of all stories tagged with phrase 'cross-project requirements', or to manually make a list of interesting stories, and so on. The worklist view is designed primarily for use as a todo list, though, so for worklists to work as epics, we probably want a separate page with a layout that clearly shows the relation between stories in a worklist and their tasks, and those tasks' projects and project groups. The API would probably benefit from a description field, and possibly comments support.\n\nThis is mostly about a week's work, for a sufficiently motivated individual, except for comments, which will take longer. Hopefully, interested parties will coordinate to shape the implementation, so that the UI can be as useful as possible-- but we can always iterate otherwise! :)", "title": "Epics in StoryBoard", "created_at": "2016-07-19T10:48:48+00:00", "tags": [], "updated_at": "2019-05-02T21:21:20+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000672, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When triaging bugs, the triagers need the ability to inform the reporter that the bug/story needs more information. Launchpad has this feature in using a status setting. Markus of the nova team has identified the lack of the ability to communicate to the author when a story needs more information is a blocker for his team's successful migration to storyboard.\n\nThis story was edited to remove implementation details. What we really need is to be clear on what functionality we are looking for here.", "title": "Make it clear when a story is incomplete", "created_at": "2016-07-19T16:26:25+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2019-05-02T21:24:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000674, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Nova includes a bug template in their bug reports so that bug reporters know what information is required for nova to triage a bug. Storyboard should offer the ability to communicate to a bug reporter what details are required, when the initial bug report is being filed.\n\nhttps://wiki.openstack.org/wiki/Nova/BugsTeam/BugReportTemplate\n\nhttp://imgur.com/uaBVjD2", "title": "Clearly communicate what details are required in a bug report", "created_at": "2016-07-19T16:39:49+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2019-05-02T21:24:55+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000675, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A user wants to add a tag to a story. The user accesses a list of existing tags to select from to add a tag to a story. If no current tag exists, the user can create a new tag.", "title": "Reuse existing tags", "created_at": "2016-07-19T17:12:29+00:00", "tags": [], "updated_at": "2018-04-16T23:56:52+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000676, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "To test the migration and create a staging environment for testing, migrate the openstack launchpad data into storyboard-dev.\n\n#agreed We plan to keep LP bug numbers as SB story numbers on import", "title": "Test migration: migrate launchpad data into storyboad-dev", "created_at": "2016-07-19T19:16:42+00:00", "tags": [], "updated_at": "2018-09-20T20:18:19+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 80, "story_type_id": 1, "security": null, "id": 2000677, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Our tests are from ye olden days. They should probably be consistent with the rest of the stuff in the js ecosystem. Krotscheck kindly took a look, and gave the following pointers:\n\n    15:20 < krotscheck> Zara: Ok, first... \n                    '{name}-nodejs{version}-npm-publish-draft' should replace \n                    'gate-{name}-js-draft'\n    15:20 < krotscheck> We'll need release analogues for \n                    '{name}-js-release-{job-suffix}'\n\nHaven't had a chance to look into it yet, so I'm putting this up here so I don't forget about it.", "title": "Update storyboard tests", "created_at": "2016-07-22T16:25:58+00:00", "tags": [], "updated_at": "2018-03-15T19:05:36+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000681, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Some things are missing! Here's a list. I don't have time right now to format it tidily, and it makes a good basis of a patch for a new contributor (plus it's better if someone newer picks the wording, since they'll probably end up with something clearer to newcomers), so I'm fine waiting a little while for someone newer to storyboard to patch this.\n\n*note to install mysql if missing -- both client and server! so `sudo apt-get mysql-server-5.6` should install both. \n\n*format commands correctly here: http://docs.openstack.org/infra/storyboard/install/development.html#make-user-an-admin-current-bug\n\n*steps 3, 4, and 5 here \nhttp://docs.openstack.org/infra/storyboard/install/development.html#installing-the-javascript-based-web-client are all the same step in different forms -- should be clearer that these are not to be followed in order (just pick the one that applies)\n\n*step 5 in \nhttp://docs.openstack.org/infra/storyboard/install/development.html#installing-and-upgrading-the-api-server needs to mention adding the IP address to \n             valid_oauth_clients\n\n*remove step 1 option 2 for webclient, since we have no idea what's going on with that\n\n*include example output for commands so it's clearer if someone's on the right track", "title": "Improve StoryBoard developer docs", "created_at": "2016-07-27T12:13:49+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000684, "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": "Our webclient has old code that probably doesn't work with new eslint. we should upgrade eslint and update the storyboard webclient code so it doesn't fail all the tests.", "title": "Update webclient code so it works with new eslint", "created_at": "2016-08-15T17:05:31+00:00", "tags": ["dependency-upgrades"], "updated_at": "2019-06-07T17:53:56+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000699, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This is a cross-project TC goal for Ocata.\n\n\ngoal detailed here: http://governance.openstack.org/goals/ocata/remove-incubated-oslo-code.html (review was over at: https://review.openstack.org/#/c/349070/ )\n\nlist of affected projects, linked in that review thread, also linked here for convenience: http://paste.openstack.org/show/550418/\n\nsummit etherpad: https://etherpad.openstack.org/p/ocata-goal-oslo\n\nstoryboard ones:\n\nopenstack-infra/python-storyboardclient\n```\napiclient\n_i18n.py\n__init__.py\nlocal.py\nlog.py\nuuidutils.py\n```\n\nopenstack-infra/storyboard\n```\nfileutils.py\nfixture\ngettextutils.py\n__init__.py\njsonutils.py\nlocal.py\nlockutils.py\nprocessutils.py\npy3kcompat\n```", "title": "Remove Incubated oslo code", "created_at": "2016-08-22T15:05:08+00:00", "tags": ["goal-remove-incubated-oslo-code"], "updated_at": "2017-02-23T16:46:49+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000707, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "What it's for and how to use...", "title": "Document python client", "created_at": "2016-08-30T13:45:14+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000710, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Most websites which have text fields that support markup have a \"help\" link which shows what kind of markup is supported, with examples. StoryBoard has no such help which makes it hard for new users to figure out how to, for example, input preformatted text.\n\nThis will lead to either people not using markup, or fumbling around and trying several different approaches before getting lucky, or pestering the maintainers for help on IRC.", "title": "No online help for text editing", "created_at": "2016-08-30T19:17:39+00:00", "tags": [], "updated_at": null, "private": false, "teams": [], "is_bug": true, "creator_id": 825, "story_type_id": 1, "security": null, "id": 2000712, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "1) These should refer to mysql 5.7, rather than 5.6 Running the install command on an Ubuntu 16.04 VM, I found the package manager was unable to find mysql-server version 5.6 by default, only 5.7. Others in similar circumstances may have the same issue, so if possible we should update the docs so the suggest command is the one that works. I'm unsure if there is a reason we don't already recommend 5.7 by default.\n\n2) The webclient dependency install commands should be specified, as they are for the API.", "title": "Update StoryBoard install docs", "created_at": "2016-10-03T21:08:23+00:00", "tags": ["storyboard-docs", "low-hanging-fruit"], "updated_at": "2019-05-02T21:26:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000735, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Various packages in the StoryBoard webclient are pretty old. We should update them, for all the usual reasons one should update old packages. I've started listing them here, but the list isn't complete, yet.", "title": "Update Webclient Components", "created_at": "2016-10-11T18:12:35+00:00", "tags": [], "updated_at": "2019-05-02T21:28:07+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000743, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The Oslo team has moved all previously incubated code from the openstack/oslo-incubator repository into separate library repositories and released those libraries to the Python Package Index. Many of our big tent project teams are still using the old, unsupported, incubated versions of the code. The Oslo team has been working to remove that incubated code from projects, and the time has come to finish that work.\n\nhttp://governance.openstack.org/goals/ocata/remove-incubated-oslo-code.html", "title": "Remove Copies of Incubated Oslo Code", "created_at": "2016-11-03T19:31:45+00:00", "tags": [], "updated_at": "2016-12-14T19:33:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": null, "id": 2000776, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I'm trying to add a bug so I can respond to Jeremy's comment about how Storyboard may replace launchpad", "title": "I'm trying to see what it would like to add a bug using storyboard", "created_at": "2016-11-18T15:32:45+00:00", "tags": [], "updated_at": "2017-01-01T18:11:13+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1309, "story_type_id": 1, "security": null, "id": 2000803, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I noticed this issue when I was not able to create a story for my project:\n\n![screenshot](http://i.imgur.com/hjyo9S6.png)\n\nSee how the save changes button is greyed out. This was reproducible in a different browser, when clearing cache, etc.\n\nWhat I figured out, and it's more obvious in this screenshot:\n\n![screenshot](http://i.imgur.com/eSYPKBu.png)\n\nIs that StoryBoard's autocompletion is hidden underneath my browser's autocompletion.\nIf I click my browser's autocompletion, StoryBoard does not pick that up and the user thinks he's good to go.\n\nI think there are settings such as \"[autocomplete=off](http://www.w3schools.com/tags/att_input_autocomplete.asp)\" to prevent fields from being autocompleted by browsers. Such settings should be used where clicking on the actual StoryBoard autocomplete is important.", "title": "Browser autocomplete can \"compete\" and hide the storyboard autocomplete underneath", "created_at": "2016-12-03T13:45:25+00:00", "tags": [], "updated_at": "2016-12-06T17:15:40+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 386, "story_type_id": 1, "security": null, "id": 2000818, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Despite having a test instance over at https://storyboard-dev.openstack.org/#!/page/about , people are using our production StoryBoard instance to test StoryBoard itself. We may need to get better at pointing people at the test instance.", "title": "People are filing test stories, worklists and boards in production StoryBoard", "created_at": "2016-12-22T12:10:21+00:00", "tags": [], "updated_at": "2018-09-20T20:20:03+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000834, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Example page: https://storyboard-dev.openstack.org/#!/story/64\n\nReproducible by just creating a new story (filler markdown lorem ipsum: https://jaspervdj.be/lorem-markdownum/ ) and trying to edit it.\n\nBy editing the description, you can see the browser bogs down and the keystrokes are slow to appear.\n\nContext from #storyboard:\nhttp://eavesdrop.openstack.org/irclogs/%23storyboard/%23storyboard.2017-01-23.log.html#t2017-01-23T16:25:19", "title": "Editing a description with markdown lags the browser/keyboard responsiveness", "created_at": "2017-01-23T16:40:17+00:00", "tags": [], "updated_at": "2018-08-07T21:28:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 386, "story_type_id": 1, "security": null, "id": 2000847, "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": "Not everybody can find red gamma usable for himself. \nAs for me, the number of red elements on single page irritates me, makes me nervous and force myself to continue use launchpad and other projects. \n\nI understand that red is the main colour of OpenStack theme, so red will not be dropped from default theme, so it should be a separate way to configure gamma of colours via profile preferences.", "title": "An ability to change theme(gamma of colours) via profile preferences", "created_at": "2017-02-16T10:15:44+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T18:02:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1339, "story_type_id": 1, "security": null, "id": 2000870, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently only Launchpad is mentioned. This means it is not clear how to set up a new project to use StoryBoard for tracking bugs and feature requests. The guide should also list StoryBoard.", "title": "Add StoryBoard to the project creator's guide", "created_at": "2017-02-26T20:18:49+00:00", "tags": [], "updated_at": "2018-04-25T08:32:09+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000880, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a user, I want to be able to add an arbitrary number of attributes in the form name:value to tasks and stories. A typical use case is teams following XP methodologies and assigning weights to stories; therefore the following attribute could be created: \"weight:3\", and so on.\n\nIn the case of numerical attributes, a story could get an aggregate attribute value computed from the attributes of its tasks. The user could choose the aggregate function to apply: sum, max, min, average, median... or keep it free-form.\n\nIn order to limit complexity, extra attributes could be defined by the storyboard instance's admin through its configuration files and be applied throughout all projects. Definition would include the attribute name and the expected type of the associated value (string, int/float, datetime...)", "title": "Add arbitrary, free-form attributes to tasks and stories", "created_at": "2017-03-13T20:43:57+00:00", "tags": [], "updated_at": "2019-05-02T21:43:44+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 635, "story_type_id": 1, "security": null, "id": 2000912, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "On our SB instance we are actually limited by the 50 chars restrictions. Indeed we used\nto prefix project name and project group name by the same namespace we use in Gerrit and\nwe sometime reach the 50 chars limit.\nIs there a specific reason for that limitation ? Would it be possible to raise by default to 100 chars at least ?", "title": "Request to change project name and project group name lenght restriction", "created_at": "2017-03-15T13:45:41+00:00", "tags": [], "updated_at": "2017-05-09T21:14:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 103, "story_type_id": 1, "security": null, "id": 2000919, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I don't use storyboard a lot, yet. When I do visit storyboard.openstack.org, my login has frequently expired. Instead of the login button at the top right, I see 400 error having to do with getting profile info. When I reload the page, the error is gone and the login button is present and I can login.", "title": "first page load shows error when not logged in", "created_at": "2017-03-16T15:39:34+00:00", "tags": [], "updated_at": "2019-05-02T21:51:00+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2000921, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We have a rough set of steps we follow to test migrating projects from Launchpad to StoryBoard:\n\nhttp://paste.openstack.org/show/602332/\n\nThese should be reworked into documentation that can live in the StoryBoard repository, so that developers can find them more easily in the future.", "title": "Document the project-migration testing process", "created_at": "2017-04-11T18:09:04+00:00", "tags": [], "updated_at": "2018-09-20T17:17:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2000976, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 2, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Coordinate with projects to pick a time to migrate them simultaneously.", "title": "Organize Timeline for Migration", "created_at": "2017-04-12T17:15:55+00:00", "tags": [], "updated_at": "2017-05-17T19:16:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2000986, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "https://etherpad.openstack.org/p/storyboard-summit-talk\n\nfeel free to split that into tasks here or whatever; just copy-pasted my text file\n\nHere is the slide deck: https://docs.google.com/presentation/d/19mujVyNvaxylrZ4UOKHOPqSedQoNE2J_tg724UgcBQM/edit?usp=sharing\n\nVague schedule:\n\n* End of this week: Have slides done\n* Mid next week: Some form of remote rehearsal with videoconferencing or something\n* Tues before talk: Last minute prep\n\nIntersperse panic as appropriate.", "title": "plan a fantabulous summit talk", "created_at": "2017-04-24T17:57:35+00:00", "tags": [], "updated_at": "2019-09-30T14:49:34+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2001002, "users": [{"openid": "https://login.ubuntu.com/+id/HJGe6Wf", "enable_login": true, "created_at": null, "updated_at": null, "id": 942, "is_superuser": false, "last_login": "2020-01-29T15:29:41+00:00", "full_name": "Zara", "email": "thezarazia@gmail.com"}, {"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"}, {"openid": "https://login.ubuntu.com/+id/43rCcdx", "enable_login": true, "created_at": null, "updated_at": null, "id": 10, "is_superuser": true, "last_login": "2026-03-17T20:32:30+00:00", "full_name": "Jeremy Stanley", "email": "fungi@yuggoth.org"}]}, {"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 a PTL I like to sort my bug list (story list) by creation time to see if new issues need to be triaged.\nWhen I load my work list (https://storyboard.openstack.org/#!/worklist/220) the table does not have a way to sort by creation time, which makes it very hard to find new issues that may need comments or prioritization.", "title": "Automatic work list table should have a id/time component that can be sorted", "created_at": "2017-09-07T17:20:45+00:00", "tags": ["storyboard-feature-request", "storyboard-worklists"], "updated_at": "2019-06-07T17:56:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001184, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We sometimes get issues reported that have incomplete details where we need more information from the reporter to understand the issue. Sometimes the reporter posts the issue and never returns to answer our questions. We would like a way to mark these as \"needs information\" or \"incomplete\" and have them auto-expire to invalid if they have not had comments in a configurable number of days.\nThis helps us keep our issue lists clean when people do not provide enough information for the story/task to be actionable.", "title": "Tasks should have an incomplete state with an auto-expire component", "created_at": "2017-09-07T17:24:53+00:00", "tags": [], "updated_at": "2019-05-02T22:03:12+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001185, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In StoryBoard, when you assign a task, the drop down shows first and last name. However, common names may have duplicates.  We should include email or IRC nic to clarify which \"Michael Johnson\" we are assigning tasks to.", "title": "Storyboard task assignment only shows name, can be duplicates", "created_at": "2017-09-15T20:19:20+00:00", "tags": ["duplicate"], "updated_at": "2017-09-15T20:57:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001199, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "A few people have hit an issue where login fails with `invalid_grant` and little other useful information. We should work out what is causing this and fix it.\n\n    23:58 < johnsom> Ha, so I log out, log back in and after the ubuntuone login page:\n    23:58 < johnsom> 401: POST /api/v1/openid/token?grant_type=authorization_code&code=undefined: No error details available.\n    23:58 < johnsom> Oh no!\n    23:58 < johnsom> We encountered an unexpected error while trying to log you in. The error message below should be helpful, though if it's not you can contact our engineers in #storyboard on Freenode .\n    23:58 < johnsom> Error Code:\n    23:58 < johnsom> invalid_grant\n    23:58 < johnsom> Error Description:\n    23:58 < johnsom> No description received from server.\n    23:58 < johnsom> So, yeah, locked out now evidently....\n    23:59 < johnsom> Hmm, retry and I got in", "title": "Investigate invalid_grant login issue", "created_at": "2017-10-10T22:01:56+00:00", "tags": [], "updated_at": "2019-05-02T22:04:26+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2001227, "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 storyboard I check both boxes under email settings.  These stay checked as long as I am logged in, but if I log out and back in again the boxes are unchecked.  I am also still not receiving email notifications.", "title": "E-mail preferences do not persist", "created_at": "2017-10-10T22:15:47+00:00", "tags": ["storyboard-notifications", "storyboard-emails"], "updated_at": "2019-06-21T17:50:17+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001229, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Some people are not receiving email notifications. We don't know why yet.\n\nAs seen in: https://storyboard.openstack.org/#!/story/2001229\n\nZara stopped getting notifications after the 21st of July. What happened on that fateful day?", "title": "Email notifications are not working for everyone", "created_at": "2017-10-25T19:40:40+00:00", "tags": [], "updated_at": "2017-12-11T17:22:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2001263, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Steps for reproduction:\n\n1. Start creating a new story in any project\n2. Fill out every field except project\n3. Pick a project in the \"select a project\" form field such that it is the first project listed in the suggestions drop-down menu\n4. Select the project\n\nThe result is that the \"Save Changes\" button is still greyed out after the form field is populated\n\nThis does not occur if any other non 1st option is selected (this may only occur for openstack-infra/gerrit)", "title": "Storyboard New Story \"Save Changes\" Button Greyed Out When Project Selected Is First In List", "created_at": "2017-11-05T06:54:21+00:00", "tags": ["duplicate"], "updated_at": "2019-05-02T23:03:36+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 2120, "story_type_id": 1, "security": null, "id": 2001272, "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 viewing a list of stories, showing page 91 to 100 of 999, I click on a story to view it, afterwards when I click on the back button, the list of stories is shown starting with \"1 to 10\" again, instead I want it to be the page that I last viewed", "title": "Paging should be preserved when using the back button", "created_at": "2017-11-30T13:10:18+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-06-07T17:53:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001377, "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": "Actions:\n\n- Enter \"typo\" in the search box and press enter\n- Notice the error and press the \"x\" button on the \"typo\" item\n- Enter \"type\" in the search box and press enter\n\nResult: Nothing happens\nExpected result: The corrected search is executed and its results shown", "title": "Search box gets inactive after deleting a search term", "created_at": "2017-11-30T13:52:35+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-05-03T22:04:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001378, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I created a new story with nine tasks attached.  When I clicked save I got three red boxes with the following errors:\n500: 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, 12, 5, 19, 18, 37, 889641), 'stories_id': 2001387}\n\n500: 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, 12, 5, 19, 18, 38, 131245), 'stories_id': 2001387}\n\n500: 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, 12, 5, 19, 18, 38, 384793), 'stories_id': 2001387}\n\nOnly six of my nine tasks were actually created.", "title": "Creating story with multiple tasks fails with deadlock", "created_at": "2017-12-05T19:26:40+00:00", "tags": [], "updated_at": "2019-05-02T22:14:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001388, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I'm receiving notification emails for tasks containing\n\nURL: None#!/story/2001382\n\ninstead of a proper URL.", "title": "emails lacking proper url", "created_at": "2017-12-18T13:29:13+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2018-04-24T14:31:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001410, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This seems to be a regression, older stories show this to work, e.g. https://storyboard.openstack.org/#!/story/2000676, but for recent stories I'm only seeing status changes on the task, but missing any way to actually find the review.", "title": "gerrit should add links to reviews", "created_at": "2017-12-18T13:55:22+00:00", "tags": [], "updated_at": "2018-04-16T23:55:14+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001411, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Having a link like https://storyboard.openstack.org/#!/project/760 is pretty unfriendly for users to type or remember. Compare this to https://bugs.launchpad.net/shade", "title": "Provide readable and constructable URLs", "created_at": "2017-12-19T09:46:55+00:00", "tags": [], "updated_at": "2018-08-07T21:25:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001413, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I go into the \"Stories\" panel in Storyboard, I then enter a search filter, \"octavia\" projects in this case.\nThen when the list loads, I click on a story.\nI click the back button to go back to the story list.\nI would expect the story list to still be filtered to \"octavia\" as the filter line shows at the top, however the story list contains stories from other projects as if the filter went back to the default.", "title": "Navigation in \"Stories\" panel causes the filter to reset to default.", "created_at": "2018-01-15T16:39:36+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2018-08-07T22:26:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001468, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When a patch is posted to Gerrit, with the \"Story\" and \"Task\" commit message tags, the story gets updated with a status comment.  However the comment does not have a link back to the patch posted. This leads to confusion on stories when there are multiple patches against a story.\nThese status comments should provide a link back to the patch like Launchpad does.", "title": "Patch updates to stories should include a link to the patch", "created_at": "2018-01-15T16:43:15+00:00", "tags": [], "updated_at": "2018-10-02T18:45:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2001469, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "After having added a tag in the UI, when I add another tag, the text entry field is pre-filled with the name of the first tag. I don't think that this is pretty useful, I'd rather see the field empty, so I don't have to delete the previous content.", "title": "When adding two tags in a row, the entry field should be cleared", "created_at": "2018-01-16T12:54:17+00:00", "tags": [], "updated_at": "2019-03-14T15:46:53+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001477, "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": "Editing a comment has been disabled for a good reason, but editing a story still seems possible and doesn't seem to leave a trace other than the \"Some user updated this story\" comment. Instead it should be possible to see (maybe a diff of) both the old and the new story to have access to the complete (hi-)story.", "title": "When a story has been edited, it should be possible to view the change", "created_at": "2018-01-16T14:09:55+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T22:25:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001478, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a PTL or release manager, I would like a quick overview on the stories on a specific tag.\nExample: display all stories for queens-3 (milestone.\n\nWe have it with launchpad now: https://launchpad.net/tripleo/+milestone/queens-3", "title": "Filter stories by tag", "created_at": "2018-01-16T19:18:03+00:00", "tags": [], "updated_at": "2018-04-19T20:03:12+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 106, "story_type_id": 1, "security": null, "id": 2001479, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a user, I didn't know that bugs were migrated to Storyboard. I want my ongoing bugs to close in Launchpad with a nice message explaining where the bug is in Storyboard now, so I can keep working on it.", "title": "Migration: post SB url on Launchpad bug before closing", "created_at": "2018-01-16T19:21:11+00:00", "tags": [], "updated_at": "2018-03-12T21:30:39+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 106, "story_type_id": 1, "security": null, "id": 2001480, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I was looking at a story wanted to add a note. I realized I needed to log in yet, so I clicked login in the top right corner. After logging in it redirected me to my dashboard instead of bringing me back to where I was trying to do something in the first place.", "title": "Logging in from a specific page should not redirect you to the dashboard", "created_at": "2018-02-15T21:51:19+00:00", "tags": [], "updated_at": "2019-05-02T22:27:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1263, "story_type_id": 1, "security": null, "id": 2001548, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I was looking at a story wanted to add a note. I realized I needed to log in yet, so I clicked login in the top right corner. After logging in it redirected me to my dashboard instead of bringing me back to where I was trying to do something in the first place.\n\nThat's covered in another story, but there is secondary issue that I am then not able to navigate back to the original page but was not able to. If the login is going to redirect, it should at least allow me to go back.", "title": "Login redirect replaces page history", "created_at": "2018-02-15T21:54:05+00:00", "tags": [], "updated_at": "2019-05-02T21:14:39+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1263, "story_type_id": 1, "security": null, "id": 2001549, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I am viewing stories under a specific project and need to add a new one. I open the Create New... New Story dialog. The dialog currently has a box for \"Select a Project\". This is good and I should be able to pick a different project, but it should at least default to the current project I am interacting with.", "title": "New Story dialog should default project to current one", "created_at": "2018-02-15T21:55:44+00:00", "tags": [], "updated_at": "2018-04-05T23:09:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1263, "story_type_id": 1, "security": null, "id": 2001550, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I had to update a task and worked in the top to bottom, left to right directional order most of the world is used to. I assigned the task to myself, then updated the drop down to set the state of the task.\n\nThere were a lot of tasks as part of this story, and suddenly my task disappeared. It was not obvious, but I eventually figured out tasks were sorted by state and I needed to scroll all the way to the bottom to continue working on the task.", "title": "Tasks should be sorted by number or name", "created_at": "2018-02-15T22:00:56+00:00", "tags": [], "updated_at": "2018-05-16T19:06:44+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1263, "story_type_id": 1, "security": null, "id": 2001551, "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": "When updating multiple things for a task, you currently need to go item to item and update. I would like to be able to click on the task ID and have a dialog open that would allow me to update all items of the task that I need to modify and update with one click.", "title": "Tasks should have a dialog to update multiple values", "created_at": "2018-02-15T22:02:35+00:00", "tags": [], "updated_at": "2019-03-16T22:49:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1263, "story_type_id": 1, "security": null, "id": 2001552, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I started filling out a new story and tried to move the dialog (maybe should be another story). That didn't work, and part of I accidentally clicked outside of the dialog area. The New Story dialog went away. I clicked Create New... Story again expecting it to come back up, but that just opened a new dialog with empty textboxes, so everything I had previously added was gone.", "title": "Clicking outside of New Story dialog loses all work", "created_at": "2018-02-15T22:06:26+00:00", "tags": [], "updated_at": "2019-05-02T22:32:37+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1263, "story_type_id": 1, "security": null, "id": 2001553, "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 set up a development copy of storyboard and storyboard-webclient. I modified the database directly to make my user an admin, following the instructions on https://docs.openstack.org/infra/storyboard/install/development.html. I then created a project through the UI. I cannot add tasks to that project because it has no branches. I get the error:\n\n  storyboardclient._apiclient.exceptions.NotFound: Master branch of project 923 not found. (HTTP 404)", "title": "there is no way to add branches to a project via the UI", "created_at": "2018-02-15T23:06:02+00:00", "tags": [], "updated_at": "2018-02-15T23:06:02+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001554, "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 a service API requires an argument (such as \"type\" for some of the filters) that argument should also be required in the Python function on the client side.", "title": "client APIs should reflect constraints of service APIs", "created_at": "2018-02-16T20:59:33+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T22:34:28+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001556, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently we search for worklists and boards based on their potential contents, so search autocompletes with stories and tasks matching some string. It would be good to also include board and worklist titles containing the string. This way a potential contributor can get involved in a project by eg: searching for worklists containing a project name to see what the project contributors' current priorities are.", "title": "Allow search by worklist or board title on 'worklists and boards' page", "created_at": "2018-02-28T15:57:12+00:00", "tags": [], "updated_at": "2019-03-22T17:11:30+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2001615, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Cards in automatic worklists don't have IDs as they are dynamically loaded based on the criteria. the card titles, however, assume every card has an id, and so display a # sign before the card title. This should not be displayed for cards in automatic worklists.", "title": "Card titles have a # but no ID in automatic worklists", "created_at": "2018-02-28T16:24:22+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-05T03:29:34+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 942, "story_type_id": 1, "security": null, "id": 2001616, "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": "There is a strong precedent in other systems (e.g. GitHub, bugzilla) for automatically subscribing the user to a story (or equivalent item) if they participate in the story in some way, for example by adding a task or comment.  This has the benefit of reducing the risk that the user misses out on subsequent activity on that story, although admittedly currently this benefit only applies to users who regularly check their subscription dashboard.  (That risk would potentially be reduced further in the future if this feature were to be implemented *and* the email notification system were to be subsequently enhanced to the point where it could be enabled by default without overly spamming users.  For example see [Discourse's email notification settings](https://meta.discourse.org/t/understanding-email-notification-settings/44721).)\n\nThe downside is that sometimes there are valid reasons to want to participate in a story and not subscribe. For example adding a task to backport a fix where you want to delegate the task and not track future progress.\n\nTherefore auto-subscription should be optional.  One way to structure the new settings would be to add the following config options:\n\n- Auto-subscribe when creating a story\n- Auto-subscribe when editing a story\n- Auto-subscribe when commenting on a story\n- Auto-subscribe when adding a task\n- Auto-subscribe when editing a task\n\nand the corresponding choice values for each of these settings would be:\n\n- Always\n- Never\n- Ask me each time\n\nIt may make sense to implement this in the web frontend, thereby skipping auto-subscription if the API is invoked directly, because if the API is being accessed programmatically then the caller would naturally expect more fine-grained control and can decide exactly when they want to subscribe manually.  (This raises the question of how other API consumers such as `boartty` would be handled.)", "title": "Optional auto-subscription on participation", "created_at": "2018-03-05T15:34:56+00:00", "tags": ["storyboard-notifications"], "updated_at": "2019-06-28T16:33:08+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001625, "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": "As a collaborator on stories, I want to obtain a permalink to a task within a story in order to share that link with a co-collaborator.  This does not *necessarily* require creation of a separate view for single tasks; it could use an #anchor to jump within the story view.", "title": "permalink to a story task", "created_at": "2018-03-05T15:46:52+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-02T22:37:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001626, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "## How to reproduce\n\n- Visit https://storyboard.openstack.org/#!/search\n- Type `assign to self` in search bar\n- Wait for `assign to self` popup to appear\n- Click on popup\n\n## Observed results\n\nTons of matches are returned, none of which contain the string \"assign to self\". \n\n## Expected results\n\nOnly matches contain the string \"assign to self\".", "title": "Search returns too many results", "created_at": "2018-03-05T16:23:29+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-05-02T22:38:43+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001629, "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 a StoryBoard user who frequently assigns tasks to myself, I want to be able to do this more quickly from the web UI by a single click of a button, rather than having to type part of my name each time and wait for the auto-completion.", "title": "Provide \"Assign to self\" button", "created_at": "2018-03-05T16:44:23+00:00", "tags": [], "updated_at": "2019-05-28T19:42:34+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001630, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As mentioned in https://storyboard.openstack.org/#!/story/2001629, it is possible to search for exact phrases by wrapping them in double-quotes.  This, and any other advanced search features which may exist, should be documented either directly on https://storyboard.openstack.org/#!/search, or somewhere which is reachable from it via a single click.", "title": "document search syntax / usage", "created_at": "2018-03-05T23:06:12+00:00", "tags": ["duplicate", "storyboard-searching-enhancements"], "updated_at": "2019-05-03T22:11:19+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001631, "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": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It should be possible to search for stories/tasks etc. which contain a set of words, e.g. searching for `foo AND bar` would return anything containing both `foo` and `bar`.  It is already possible to search for `foo bar` or `bar foo` but this only matches when they are adjacent and in that order.\n\nThis should also be documented as per [document search syntax / usage](https://storyboard.openstack.org/#!/story/2001631).\n\n## How to reproduce\n\n- visit https://storyboard.openstack.org/#!/search\n- type `foo`\n- wait for the dropdown (why do I have to wait? will submit a separate story about that)\n- hit Enter\n- type `bar`\n- wait for the dropdown\n- hit Enter\n\n## Expected results\n\nBoth `foo` and `bar` are listed as search terms, and only matches which contain both are shown.\n\n## Observed results\n\n`bar` replaces `foo`, and matches which contain `bar` are shown, even if they don't contain `foo`.", "title": "support logical AND searches", "created_at": "2018-03-07T10:41:21+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-03-23T08:10:53+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001642, "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": "## How to reproduce\n\n- visit https://storyboard.openstack.org/#!/search\n- type `foo`\n- hit Enter before the dropdown appears\n\n## Expected results\n\nAfter a little delay, the same results are shown as if Enter was hit after the dropdown appears.\n\n## Observed results\n\n`foo` vanishes and the spinner carries on rotating forever.", "title": "search non-functional until dropdown appears", "created_at": "2018-03-07T10:44:56+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-05-02T23:08:14+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001643, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Storyboard should not require me to add both Story and Task id-s into the commit message. It should be able to find the Story from the Task id of any of the Tasks belonging to the Story.", "title": "Recognise Story if Task is int he commit message", "created_at": "2018-03-07T12:32:56+00:00", "tags": [], "updated_at": "2019-05-02T22:44:06+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 2340, "story_type_id": 1, "security": null, "id": 2001644, "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 I visit https://storyboard.openstack.org/#!/board/list then I see a list of worklists in the left column, which contains multiple worklists entitled things like \"Done\" or \"To do\".  There should be a way to quickly distinguish between these.  One possible approach might be to show which boards contain each worklist.  Other possible ways to uniquely identify a worklist:\n\n- Show the projects containing stories appearing on this worklist\n- Show the query if it's an automatic worklist\n- Show who created it\n\nArriving at the perfect UX might take a few iterations, but this would be better than aiming for the perfect UX on the first try and then never delivering any improvement at all ;-)", "title": "\"Worklists and boards\" view should uniquify worklists", "created_at": "2018-03-07T12:58:24+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-06-07T17:58:06+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2001646, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "While looking at our test migration of os-brick it was noted that things like tracebacks are being treated like markdown and are unreadable.  I.E.  https://storyboard-dev.openstack.org/#!/story/1754303\n\nIt appears some of the problem should be resolved with this patch:  https://review.openstack.org/#/c/548342/  At least we won't have a giant text blob anymore but portions will still be bolded, etc.\n\nIs it possible to not handle output like markdown?  Could there be a option box to handle input as plain text?", "title": "Markdown processing makes tracebacks look like a mess", "created_at": "2018-03-14T19:03:35+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2018-11-28T09:46:36+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 683, "story_type_id": 1, "security": null, "id": 2001674, "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 some cases, asterisks in comments are problematic.", "title": "Trouble with asterisks in comments", "created_at": "2018-03-14T20:55:24+00:00", "tags": [], "updated_at": "2019-05-02T22:49:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 4, "story_type_id": 1, "security": null, "id": 2001675, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 5, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "At this point, there are a lot of functions lacking unit tests. There aren't much in the way of integration or functional tests either. Moreover, the unit tests that do exist run into timeouts quite frequently when running in the gate.", "title": "Enhance StoryBoard's testing suite", "created_at": "2018-03-15T19:02:14+00:00", "tags": [], "updated_at": "2019-05-02T22:54:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2001678, "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 list of stories shown by clicking the \"Active\" link from the page of a project includes all the open stories which refers to the project, regardless of the status of the tasks.\nThis means that, even there are no more tasks open for that specific project, the story will be shown anyway. This may be confusing; as developer, when checking the list of active stories for a certain project I would expect to find only stories that are still relevant for the project, i.e. where some task is still open for the project.\n\nExample: the list of Active stories for python-saharaclient: \nhttps://storyboard.openstack.org/#!/project/934\n\nRight now the list shows for example stories like\n - https://storyboard.openstack.org/#!/story/1519510 *remove py26 support*\n - https://storyboard.openstack.org/#!/story/1526170 *Python 3.3 support is being dropped since OpenStack Liberty*\n\nbut the tasks which involves python-saharaclient have been solved for a long time. Those stories should not appear in that specific list.", "title": "The \"Active\" list of stories for a project should filter out stories without open tasks for the project", "created_at": "2018-03-16T16:09:04+00:00", "tags": [], "updated_at": "2018-03-16T16:12:23+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 859, "story_type_id": 1, "security": null, "id": 2001682, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I visit a project page like https://storyboard.openstack.org/#!/project/923 it shows me 10 stories at a time, even though I have my preference set to show 100.", "title": "\"page size\" preference doesn't seem to affect story lists on projects", "created_at": "2018-03-20T14:46:25+00:00", "tags": [], "updated_at": "2018-05-16T19:14:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001711, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "There should be a way to get a direct link to a Task", "title": "Possibility to directly link to a Task", "created_at": "2018-04-03T12:04:24+00:00", "tags": ["duplicate"], "updated_at": "2019-05-02T22:56:50+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 2340, "story_type_id": 1, "security": null, "id": 2001774, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "In a project view that shows the list of stories for a project (such as https://storyboard.openstack.org/#!/project/933) it would be nice to see the tags associated with the stories.", "title": "show tags with stories in project view", "created_at": "2018-04-09T13:48:25+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-04-23T21:05:32+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001803, "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": "Creating a new story, I was assigning a task for openstack/releases. I types the full name in the search which resulted in the one matching entry being shown in the drop down. I clicked on that match, but the Save Changes button remained disabled.\n\nI was only able to get it to work by not typing in the full project name and selecting the match.", "title": "New Story dialog will not enable Save Changes if full project name types in search", "created_at": "2018-04-13T14:45:31+00:00", "tags": ["dependency-upgrades"], "updated_at": "2019-12-05T19:11:23+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1263, "story_type_id": 1, "security": null, "id": 2001850, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "This is a little hard to pin down, but we think what happens is if you type out the whole name of a repository in the \"select a project\" box and then press tab to move to a new field or select the 1 item from the dropdown \"save changes\" is not enabled. You have to actually go back, delete at least 1 letter from the name, then select the item from the dropdown to make it work.", "title": "sometimes selecting a project when creating a new story does not enable \"save change\" button", "created_at": "2018-04-13T15:10:29+00:00", "tags": [], "updated_at": "2018-04-13T15:12:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001851, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Example: https://storyboard.openstack.org/#!/project/719 lists https://storyboard.openstack.org/#!/story/2000006 but the corresponding task 1371 is in status merged, so there is nothing to do for this project anymore. Not sure whether this is an issue in storyboard or with the UI.", "title": "When a task for a project is in status merged, its story should no longer be listed as active for that project", "created_at": "2018-04-17T12:23:57+00:00", "tags": ["duplicate"], "updated_at": "2019-05-02T23:09:26+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001865, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I created story 2001869 with a long title (\"When exporting a plan from the UI, the Swift URL doesn't use the proxy URL and the plan cannot be downloaded\") without issues.\n\nWhen I try to edit the description to fix a couple of typos, I can't save my changes because of some issue with the title (field is red). There's no error message but I can see it only becomes green again (and allows me to save) after making it shorter. I'm going to change the title now but this can be reproduced elsewhere on e.g. story 2001865 (just click on the pencil).", "title": "Can create stories with long titles but not edit them", "created_at": "2018-04-17T15:35:36+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-02T11:33:42+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 463, "story_type_id": 1, "security": null, "id": 2001871, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The story list on a group page like https://storyboard.openstack.org/#!/project_group/73 should include the tags so that the list can be used as a backlog.", "title": "story lists should show tags", "created_at": "2018-04-27T15:46:50+00:00", "tags": [], "updated_at": "2019-03-14T15:46:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2001930, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Not sure whether this is an issue with the UI or the backend, but looking at e.g.\n\nhttps://storyboard.openstack.org/#!/story/list?status=active&tags=blocking-storyboard-migration\n\njust took almost a minute. Other actions are also noticably slow like displaying the \"worklists & boards\" panel.", "title": "Queries searching for tags are painfully slow", "created_at": "2018-04-30T08:16:59+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2018-06-25T22:54:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001939, "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 would like to be able to add a story to a board while I am viewing the story. The only option I have found so far is to remember (copy) the title of the story, navigate to the board, select \"add item\" on a lane, search for the subject and then add the story there.", "title": "Adding a story/task to a board should be easier", "created_at": "2018-04-30T08:20:24+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-06-07T18:01:17+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2001940, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "We should be able to track Author name or username anywhere in StoryBoard to their OpenStack public profile. So we can get easier to touch someone or knowing who we're working with.\n\nA live example here as you can see above, `Author: Rico Lin` but who is Rico Lin? is that exactly the `Rico` you might know?", "title": "We should be able to track Author or user", "created_at": "2018-05-09T06:05:00+00:00", "tags": ["duplicate"], "updated_at": "2019-05-02T23:11:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1496, "story_type_id": 1, "security": null, "id": 2001986, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I view a story while not logged in, then click \"Login\" and complete the login process, instead of being shown the story I was viewing before, I am shown the story that I was last viewing when I logged out. This doesn't seem pretty reasonable to me and should be fixed.", "title": "UI should stay on current story after logging in", "created_at": "2018-05-11T09:59:44+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2019-05-02T23:12:19+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2002008, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "See for example the comment https://storyboard.openstack.org/#!/story/2002052#comment-82091 with contains a code block started by \"\u00b4\u00b4\u00b4bash\". With the older webclient it seems that that block is rendered and displayed correctly. (Not 100% tested but it did work once with an old browser session. Got broken after logging in, which presumably refreshes the client.) With the new client, nothing is displayed. This can also be reproduced in the preview for new comments. Ommitting the \"bash\" tag seems to resolve the issue. Even if that tag is somehow invalid, the UI should be graceful and maybe just display the source text instead of showing nothing. FTR, the \"About\" tab shows current (broken) webclient version as e7b10db...", "title": "Display of code blocks broken with new webclient", "created_at": "2018-05-23T06:27:37+00:00", "tags": [], "updated_at": "2018-08-07T22:49:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2002087, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When creating a Story in StoryBoard it doesn't provide information to stop us from creating a duplicated story.\nLaunchpad use to show similar title of bugs before you created a bug to make sure you're create a new bug(not \n duplication one).\nThis is very important feature IMO, because it will prevent user/developer from working on similar story but not aware to each other", "title": "StoryBoard didn't suggest similar/duplicated report when create a story", "created_at": "2018-06-01T07:39:33+00:00", "tags": ["duplicate"], "updated_at": "2019-05-02T23:16:23+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1496, "story_type_id": 1, "security": null, "id": 2002136, "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": "When opening a board like https://storyboard.openstack.org/#!/board/72 which contains lanes that are dynamic, where searches are taking a significant amount of time, no indication of this is given to the user. I only see an almost empty page with no lanes and no spinning wheel or similar.\n\nIt would make sense to have some indicator to make the user wait instead of closing the page again before it is completed.", "title": "Show \"in progress\" indicator when opening a board", "created_at": "2018-06-01T12:23:02+00:00", "tags": ["storyboard-worklists", "low-hanging-fruit"], "updated_at": "2019-06-07T18:01:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2002139, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When entering a number into the \"Jump to ..\" field, with the intention of jumping e.g. to a story with a certain id, lots of error popups appear in the process:\n\n```\n404: GET /api/v1/projects/1: Project 1 not found \n404: GET /api/v1/project_groups/1: Project Group 1 not found \n404: GET /api/v1/projects/17: Project 17 not found \n404: GET /api/v1/project_groups/17: Project Group 17 not found \n...\n```\n\nThese are pretty confusing and make no sense and should silently be discarded instead.", "title": "The \"Jump to ...\" field shouldn't create error pop ups", "created_at": "2018-06-01T12:29:58+00:00", "tags": [], "updated_at": "2018-08-15T19:45:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2002140, "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": "clicking on the \"Dashboard\" icon on the left-side menu prevents the browser back button from working", "title": "browser back button broken", "created_at": "2018-06-28T23:01:12+00:00", "tags": [], "updated_at": "2018-08-24T08:28:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 241, "story_type_id": 1, "security": null, "id": 2002762, "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 a story contains many tasks, it would be useful to visually define the logical order for them.\n\nRight now the tasks are grouped by project, and by task number inside each project.\n\nBut the order can be different even for tasks inside the same project, and it's perfectly fine to have the order jumping between tasks of different projects.\n\nFor example:\n- project1/task1\n- project1/task2\n- project2/task1\n- project1/task3\n\nwhich should handle the case of a project1/task1.5.\n\nThe ordering would be only visual and would not prevent or block the patches from being worked on in the proposed order.", "title": "Define (visual-only) dependencies between tasks in the same story", "created_at": "2018-07-03T18:03:53+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T17:47:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 859, "story_type_id": 1, "security": null, "id": 2002810, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I have a patch that refers to the task ID it completes but does not mention the story ID. There is no easy way to look up the story from the UI. Having search understand something like \"task xyz\" would be useful. Maybe having the jump-to box understand task IDs would also be useful.", "title": "support lookup of task by id", "created_at": "2018-07-05T14:50:21+00:00", "tags": [], "updated_at": "2018-09-05T19:52:26+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2002878, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When a user is subscribed to a storyboard project in order to receive notifications about new stories/tasks/comments, these email notifications are sent even when the user is the owner of that new update.\n\nFor example, I'm subscribed to a story and if i write a comment I get an email informing me I made a comment. \n\nIt would be nice to exclude the users who made a comment from receiving email update.", "title": "Don't send update email notifications to a user who made the update", "created_at": "2018-07-20T06:33:31+00:00", "tags": ["duplicate"], "updated_at": "2019-05-02T22:15:17+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 2845, "story_type_id": 1, "security": null, "id": 2003047, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "There have been a number of people who have raised a concern about the fact that we cannot upload attachments in Storyboard.  This seems like a basic and required functionality.\n\nBugs require the ability to share log files and it isn't reasonable to expect users to past large log output into a story we are not going to get good debug info.  Also putting output into logs will make it hard to read through bugs.", "title": "Can't upload attachments to Storyboard", "created_at": "2018-07-23T19:05:36+00:00", "tags": [], "updated_at": "2018-09-26T23:35:18+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 683, "story_type_id": 1, "security": null, "id": 2003071, "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": "If you start creating a new story and then accidentally click in the web browser window but outside the box for story creation, it closes down the \"create new story\" box and you lose anything entered so far.  This is annoying.", "title": "when creating new story, clicking outside the sub-window shouldn't throw away entered information", "created_at": "2018-07-30T22:19:29+00:00", "tags": [], "updated_at": "2019-06-21T17:54:39+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 3712, "story_type_id": 1, "security": null, "id": 2003166, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 155, "key": "invalid"}, {"count": 3, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As we agreed in the 2018-05-29 Python2 Deprecation Timeline resolution,\nthe next phase of our adoption of python 3 is to begin running all\njobs using python 3 by default, and only using python 2 to test\noperating under python 2 (via unit, functional, or integration\ntests). This goal describes the activities needed to move us to this\n\u00e2\u0080\u009cpython 3 first\u00e2\u0080\u009d state.\n\nhttps://governance.openstack.org/tc/goals/stein/python3-first.html", "title": "Infrastructure: Run under Python 3 by default", "created_at": "2018-08-01T16:54:25+00:00", "tags": ["goal-python3-first"], "updated_at": "2021-06-15T20:11:42+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2003229, "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": "If I use create a script that uses this library and this script doesn't lives inside a git repository I get the following error message\n```\nTraceback (most recent call last):\n  File \"get_tasks_by_creator.py\", line 16, in <module>\n    from storyboardclient.v1 import client\n  File \"/usr/lib/python2.7/site-packages/storyboardclient/__init__.py\", line 19, in <module>\n    'storyboardclient').version_string()\n  File \"/usr/lib/python2.7/site-packages/pbr/version.py\", line 467, in version_string\n    return self.semantic_version().brief_string()\n  File \"/usr/lib/python2.7/site-packages/pbr/version.py\", line 462, in semantic_version\n    self._semantic = self._get_version_from_pkg_resources()\n  File \"/usr/lib/python2.7/site-packages/pbr/version.py\", line 449, in _get_version_from_pkg_resources\n    result_string = packaging.get_version(self.package)\n  File \"/usr/lib/python2.7/site-packages/pbr/packaging.py\", line 833, in get_version\n    name=package_name))\nException: Versioning for this project requires either an sdist tarball, or access to an upstream git repository. It's also possible that there is a mismatch between the package name in setup.cfg and the argument given to pbr.version.VersionInfo. Project name storyboardclient was given, but was not able to be found.\n```\nIf my script lives in a repository I don't have problems.", "title": "Cannot use storyboardclient outside a repository", "created_at": "2018-08-06T20:49:18+00:00", "tags": [], "updated_at": "2019-06-28T16:48:02+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 4662, "story_type_id": 1, "security": null, "id": 2003318, "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": "Stories such as https://storyboard.openstack.org/#!/story/2002586 which have a very large number of comments render slowly in the browser. I can't tell if it is because it takes a long time to fetch the comments from the API or if it takes a long time to turn the results into HTML and render them. Maybe both.", "title": "stories with an excessive number of comments display slowly", "created_at": "2018-08-22T13:17:30+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-28T16:44:25+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2003525, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "this is a test", "title": "test test test", "created_at": "2018-08-27T19:24:03+00:00", "tags": [], "updated_at": "2018-08-27T19:26:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 47, "story_type_id": 1, "security": null, "id": 2003569, "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": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Systems with little restriction on hyperlinking from user-supplied content can quite often become an attractive target for link-farmers and search result spammers. Make StoryBoard unattractive for this purpose by instructing search engine spiders/crawlers not to follow and index these links.", "title": "Set href rel attribute to nofollow", "created_at": "2018-09-04T14:32:09+00:00", "tags": [], "updated_at": "2019-10-22T21:12:35+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": null, "id": 2003648, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Using the Create New drop-down from the project view results in the following when leaving the pre-filled task project intact and attempting to Save Changes:\n\n400: POST /api/v1/tasks: Invalid input for field/attribute task. Value: '{'story_id': 2003647, 'project_id': 'openstack-infra/storyboard-webclient', 'title': 'Set href rel attribute to nofollow'}'. invalid literal for int() with base 10: 'openstack-infra/storyboard-webclient'\n\nPer Adam in #storyboard, http://git.openstack.org/cgit/openstack-infra/storyboard-webclient/tree/src/app/storyboard/controller/header_controller.js#n52 will need adjusting to address this scenario.", "title": "Pre-filled task passes project name to /api/v1/tasks (not id)", "created_at": "2018-09-04T14:42:57+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2018-11-06T20:34:01+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": null, "id": 2003650, "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 creating a new story fails on task addition (for example because a POST to /api/v1/tasks results in a 400 error) then a taskless story is still created but the New Story modal is not dismissed. Further attempts to correct the details of the task so that creation will succeed then results in the following API error:\n\n400: POST /api/v1/stories/2003649: Invalid input for field/attribute story. Value: '2003649'. unable to convert to Story\n\nThe only solution seems to be to Cancel the current story creation (a pain for users since they need to remember to copy their possibly lengthy description text first or it will be lost) and then start over.", "title": "Failure to create initial task leaves a taskless story and blocks New Story modal", "created_at": "2018-09-04T14:51:06+00:00", "tags": [], "updated_at": "2019-02-15T14:19:09+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": null, "id": 2003651, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "OpenStack environment may have compute nodes which are using hugepages only.\nUsers would like to create new flavors for themselves.\nUsers may not know physical underlay and may omit specifying some extra parameters.\nThis would lead to VM creation failures and network outages.\n\nCloud devops should have an ability to enforce propagation of some extra params into newly created flavors.\nFor example:\n--property hw:mem_page_size=large\n\nExpectation:\nUser creates flavor by executing:\nopenstack flavor create --ram 1024 --vcpus 1 --public m1.small\nPropertiy hw:mem_page_size=large has been propagated and added automaticaly.\n\nThis is a feature requrest.\nThank you.", "title": "Feature Request: Enforce flavor extended parameters", "created_at": "2018-09-08T11:52:13+00:00", "tags": [], "updated_at": "2019-06-28T16:34:00+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5261, "story_type_id": 1, "security": null, "id": 2003698, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "On https://storyboard.openstack.org/#!/board/107 I'm trying to click on the \"card\" story links in the 'New' lane and the links don't work.\n\n(9:10:40 AM) SotK: it does indeed appear to be broken\n(9:14:59 AM) SotK: I think that babel has broken some dependency injection", "title": "BUG: Card links don't work in boards", "created_at": "2018-09-11T15:32:26+00:00", "tags": ["storyboard-bug"], "updated_at": "2019-03-25T13:03:55+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 363, "story_type_id": 1, "security": null, "id": 2003719, "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": "Favorite (starred) projects don't stay at the top of lists, still have to scroll through other projects to find projects that have been starred.\nThis way we don't have to hunt through a long list of projects to find the projects we care about.", "title": "Favorite (Starred) projects should be at the top of the list", "created_at": "2018-09-11T21:08:30+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-03-12T06:10:56+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": null, "id": 2003725, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a user I want to be able to check boxes other than 'Active' and have the list of stories for the project group update.", "title": "Project Group View Checkboxes in Story Subsection are broken", "created_at": "2018-09-26T19:24:19+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-06-20T22:04:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2003883, "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": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As a user, I might speak some other language and it would be nice to view the webclient in that language.", "title": "Make webclient available in other languages", "created_at": "2018-09-27T00:19:21+00:00", "tags": [], "updated_at": "2018-09-27T00:19:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2003887, "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 don't preserve earlier tarballs from git earlier than what is currently deployed which makes it non-trivial when we need to do a rollback. Someway of keeping around n-1 or n-2 tarballs would help.", "title": "Easier Rollback for Webclient", "created_at": "2018-09-27T00:23:14+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-28T16:28:29+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2003888, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The view of stories in a project can become 'polluted' with stories that are 'complete' as far as the project is concerned.\n\nAn alternative could be to allow a dropdown of options for what stories are included.", "title": "story lists in project view should only show stories with active tasks for that project", "created_at": "2018-10-16T19:50:21+00:00", "tags": ["duplicate"], "updated_at": "2019-05-03T16:33:45+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1152, "story_type_id": 1, "security": null, "id": 2004097, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Not sure if this is limited to just the project page, but the create New... drop down on the upper-left of the page fails to create stories (error pop up when hitting 'save changes').", "title": "Create New fails to create stories", "created_at": "2018-10-16T19:52:31+00:00", "tags": [], "updated_at": "2018-11-06T20:33:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1152, "story_type_id": 1, "security": null, "id": 2004098, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": ">kubectl describe pod mariadb-server-0 --namespace=openstack\nName:               mariadb-server-0\nNamespace:          openstack\nPriority:           0\nPriorityClassName:  <none>\nNode:               node3-ks/172.16.249.43\nStart Time:         Wed, 17 Oct 2018 10:14:15 +0200\nLabels:             application=mariadb\n                    component=server\n                    controller-revision-hash=mariadb-server-746f88c7d5\n                    release_group=mariadb\n                    statefulset.kubernetes.io/pod-name=mariadb-server-0\nAnnotations:        <none>\nStatus:             Pending\nIP:\nControlled By:      StatefulSet/mariadb-server\nInit Containers:\n  init:\n    Container ID:\n    Image:         quay.io/stackanetes/kubernetes-entrypoint:v0.3.1\n    Image ID:\n    Port:          <none>\n    Host Port:     <none>\n    Command:\n      kubernetes-entrypoint\n    State:          Waiting\n      Reason:       PodInitializing\n    Ready:          False\n    Restart Count:  0\n    Environment:\n      POD_NAME:              mariadb-server-0 (v1:metadata.name)\n      NAMESPACE:             openstack (v1:metadata.namespace)\n      INTERFACE_NAME:        eth0\n      PATH:                  /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/\n      DEPENDENCY_SERVICE:\n      DEPENDENCY_DAEMONSET:\n      DEPENDENCY_CONTAINER:\n      DEPENDENCY_POD_JSON:\n      COMMAND:               echo done\n    Mounts:\n      /var/run/secrets/kubernetes.io/serviceaccount from mariadb-token-xhcfr (ro)\n  mariadb-perms:\n    Container ID:\n    Image:         docker.io/mariadb:10.2.13\n    Image ID:\n    Port:          <none>\n    Host Port:     <none>\n    Command:\n      chown\n      -R\n      mysql:mysql\n      /var/lib/mysql\n    State:          Waiting\n      Reason:       PodInitializing\n    Ready:          False\n    Restart Count:  0\n    Environment:    <none>\n    Mounts:\n      /var/lib/mysql from mysql-data (rw)\n      /var/run/secrets/kubernetes.io/serviceaccount from mariadb-token-xhcfr (ro)\nContainers:\n  mariadb:\n    Container ID:\n    Image:         docker.io/mariadb:10.2.13\n    Image ID:\n    Ports:         3306/TCP, 4567/TCP\n    Host Ports:    0/TCP, 0/TCP\n    Command:\n      /tmp/start.sh\n    State:          Waiting\n      Reason:       PodInitializing\n    Ready:          False\n    Restart Count:  0\n    Readiness:      exec [/tmp/readiness.sh] delay=30s timeout=3s period=30s #success=1 #failure=3\n    Environment:\n      POD_IP:                (v1:status.podIP)\n      POD_NAME:             mariadb-server-0 (v1:metadata.name)\n      FORCE_BOOTSTRAP:      false\n      FORCE_RECOVERY:\n      BOOTSTRAP_FILE:       /tmp/bootstrap.sql\n      MARIADB_REPLICAS:     3\n      WSREP_PORT:           4567\n      POD_NAME_PREFIX:      mariadb-server\n      MYSQL_ROOT_PASSWORD:  <set to the key 'MYSQL_ROOT_PASSWORD' in secret 'mariadb-db-root-password'>  Optional: false\n    Mounts:\n      /etc/mysql/admin_user.cnf from mariadb-secrets (ro)\n      /etc/mysql/conf.d from mycnfd (rw)\n      /etc/mysql/conf.d/00-base.cnf from mariadb-etc (ro)\n      /etc/mysql/conf.d/20-override.cnf from mariadb-etc (ro)\n      /etc/mysql/conf.d/99-force.cnf from mariadb-etc (ro)\n      /etc/mysql/my.cnf from mariadb-etc (ro)\n      /tmp/readiness.sh from mariadb-bin (ro)\n      /tmp/start.sh from mariadb-bin (ro)\n      /tmp/stop.sh from mariadb-bin (ro)\n      /var/lib/mysql from mysql-data (rw)\n      /var/run/secrets/kubernetes.io/serviceaccount from mariadb-token-xhcfr (ro)\nConditions:\n  Type              Status\n  Initialized       False\n  Ready             False\n  ContainersReady   False\n  PodScheduled      True\nVolumes:\n  mysql-data:\n    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)\n    ClaimName:  mysql-data-mariadb-server-0\n    ReadOnly:   false\n  mycnfd:\n    Type:    EmptyDir (a temporary directory that shares a pod's lifetime)\n    Medium:\n  mariadb-bin:\n    Type:      ConfigMap (a volume populated by a ConfigMap)\n    Name:      mariadb-bin\n    Optional:  false\n  mariadb-etc:\n    Type:      ConfigMap (a volume populated by a ConfigMap)\n    Name:      mariadb-etc\n    Optional:  false\n  mariadb-secrets:\n    Type:        Secret (a volume populated by a Secret)\n    SecretName:  mariadb-secrets\n    Optional:    false\n  mariadb-token-xhcfr:\n    Type:        Secret (a volume populated by a Secret)\n    SecretName:  mariadb-token-xhcfr\n    Optional:    false\nQoS Class:       BestEffort\nNode-Selectors:  openstack-control-plane=enabled\nTolerations:     node.kubernetes.io/not-ready:NoExecute for 300s\n                 node.kubernetes.io/unreachable:NoExecute for 300s\nEvents:\n  Type     Reason                  Age   From                     Message\n  ----     ------                  ----  ----                     -------\n  Normal   Scheduled               2m    default-scheduler        Successfully assigned openstack/mariadb-server-0 to node3-ks\n  Normal   SuccessfulAttachVolume  1m    attachdetach-controller  AttachVolume.Attach succeeded for volume \"pvc-a2ea0a70-d1e4-11e8-b527-40f2e94f0bd8\"\n  Warning  FailedMount             41s   kubelet, node3-ks        Unable to mount volumes for pod \"mariadb-server-0_openstack(a2f0d13c-d1e4-11e8-b527-40f2e94f0bd8)\": timeout expired waiting for volumes to attach or mount for pod \"openstack\"/\"mariadb-server-0\". list of unmounted volumes=[mysql-data]. list of unattached volumes=[mysql-data mycnfd mariadb-bin mariadb-etc mariadb-secrets mariadb-token-xhcfr]\n\n>kubectl get pv --namespace=openstack\nNAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS     CLAIM                                   STORAGECLASS      REASON    AGE\npvc-a2ea0a70-d1e4-11e8-b527-40f2e94f0bd8   5Gi        RWO            Delete           Bound      openstack/mysql-data-mariadb-server-0   general                     33m\npvc-a2fab88a-d1e4-11e8-b527-40f2e94f0bd8   5Gi        RWO            Delete           Bound      openstack/mysql-data-mariadb-server-1   general                     33m\npvc-a315cb6b-d1e4-11e8-b527-40f2e94f0bd8   5Gi        RWO            Delete           Bound      openstack/mysql-data-mariadb-server-2   general                     33m\n\n>kubectl describe storageclass/general\nName:                  general\nIsDefaultClass:        No\nAnnotations:           <none>\nProvisioner:           ceph.com/rbd\nParameters:            adminId=admin,adminSecretName=pvc-ceph-conf-combined-storageclass,adminSecretNamespace=ceph,imageFeatures=layering,imageFormat=2,monitors=ceph-mon.ceph.svc.k8scluster.romelab.ibm.com:6789,pool=rbd,userId=admin,userSecretName=pvc-ceph-client-key\nAllowVolumeExpansion:  <unset>\nMountOptions:          <none>\nReclaimPolicy:         Delete\nVolumeBindingMode:     Immediate\nEvents:                <none>\n\n>kubectl get pods -n openstack\nNAME                                                READY     STATUS      RESTARTS   AGE\nceph-openstack-config-ceph-ns-key-generator-gnmkk   0/1       Completed   0          11h\ningress-5bf5697f49-8vcp8                            1/1       Running     0          11h\ningress-5bf5697f49-j7prq                            1/1       Running     0          11h\ningress-error-pages-6c8d94695-5sdwv                 1/1       Running     0          11h\ningress-error-pages-6c8d94695-x4jx8                 1/1       Running     0          11h\nmariadb-ingress-68c7c67db8-26lbf                    0/1       Running     0          34m\nmariadb-ingress-68c7c67db8-rlt45                    0/1       Running     0          34m\nmariadb-ingress-68c7c67db8-xm5mr                    0/1       Running     0          34m\nmariadb-ingress-error-pages-566c5fc49d-vgww8        1/1       Running     0          34m\nmariadb-server-0                                    0/1       Init:0/2    0          34m\nmariadb-server-1                                    0/1       Error       11         34m\nmariadb-server-2                                    0/1       Error       11         34m", "title": "unable to install mariadb on multinode architecture", "created_at": "2018-10-17T08:50:31+00:00", "tags": [], "updated_at": "2019-05-21T08:12:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5357, "story_type_id": 1, "security": null, "id": 2004103, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When working on a wide browser, stars on the far right hand side become difficult to place. It should be right next to the project/projectgroup/story name so that things can be un/starred more easily.", "title": "Stars should be next to the name of the entity", "created_at": "2018-10-17T09:27:27+00:00", "tags": [], "updated_at": "2019-03-29T22:41:08+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 3831, "story_type_id": 1, "security": null, "id": 2004104, "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": "When a patch references a story/task combination, the task will be marked as resolved when the patch is merged on the master branch, but put back into review state once a cherry-pick is done for a stable branch. This can lead to multiple iteration as the patch is backported through stable branches.", "title": "Support tagging tasks per branch", "created_at": "2018-11-02T09:49:06+00:00", "tags": ["blocking-storyboard-migration"], "updated_at": "2019-05-03T15:27:11+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 772, "story_type_id": 1, "security": null, "id": 2004232, "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": "To be able to report an issue and have it generate a story, hiding the task interface. Often the person reporting the bug won't know what tasks need to be created or what repos to associate them with. A simplified interface similar to launchpads where the reporter just needs a title and a description and maybe a project (in our case maybe a project group?) would go a long way to helping lower the barrier to reporting.", "title": "Simplified Bug Reporting Interface", "created_at": "2018-11-29T07:30:42+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T17:40:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2004457, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The migration script should be modified to make the priority field in Launchpad into a tag on a story in StoryBoard. The tag should be prefixed with the project name. Ex. oslo-high, tripleo-low.\n\nOslo and tripleO would like this feature", "title": "Migration Script retains Priority info", "created_at": "2018-11-29T07:36:14+00:00", "tags": [], "updated_at": "2019-03-21T01:49:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2004459, "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": "Right now, if you search for something in the advanced search and aren't familiar with the interface, you might not know that you need to wait for typeahead to query based on your criteria. It seems like nothing is happening. Something like a searching/loading bar or something to show the process is going on would be useful to users.", "title": "Make Typeahead Query Obvious", "created_at": "2018-11-29T07:39:26+00:00", "tags": [], "updated_at": "2018-11-29T07:39:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2004460, "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": "There should be some wizard or notification upon first visit/sign in that tells new users that email notifications are disabled by default and that to receive them, users need to change the setting in their preferences. \n\nThis new user wizard could suggest other preferences as well- pagination size, etc.", "title": "New User Configuration Wizard", "created_at": "2018-11-29T07:45:08+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T17:38:23+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2004461, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The current behavior is that a story is active until all tasks are completed, regardless of the way a user is viewing it. \n\nIf a user is viewing a story from a project or project group view, it would make more sense for the story to show as completed if all tasks associated with that project or project group are completed.", "title": "Project View Story Status", "created_at": "2018-11-29T07:48:54+00:00", "tags": ["duplicate"], "updated_at": "2019-05-03T16:49:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2004462, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently, when one views a story, the tasks are ordered first by associated project, and then by task number. \n\nIt would be helpful to be able to select which order to display tasks alphabetically, by status, by id.", "title": "Story View Task Ordering Selectable", "created_at": "2018-11-29T07:51:43+00:00", "tags": [], "updated_at": "2019-03-16T18:52:49+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": null, "id": 2004463, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "three pigs on the search for a new home", "title": "golden farm", "created_at": "2019-02-05T19:54:15+00:00", "tags": [], "updated_at": "2019-02-26T21:22:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5596, "story_type_id": 1, "security": null, "id": 2004946, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "I am in storyboard dev trying to create a worklist as an example to help design our Storyboard usage.  Unfortunately I am not making much progress as attempts to create a worklist encounter an http 500 error.\n\n500: PUT /api/v1/boards/127: (pymysql.err.IntegrityError) (1048, u\"Column 'list_id' cannot be null\") [SQL: u'INSERT INTO board_worklists (created_at, updated_at, board_id, list_id, position) VALUES (%(created_at)s, %(updated_at)s, %(board_id)s, %(list_id)s, %(position)s)'] [parameters: {'board_id': 127, 'position': 0, 'created_at': datetime.datetime(2019, 2, 5, 22, 33, 49, 790317), 'updated_at': None, 'list_id': None}] (Background on this error at: http://sqlalche.me/e/gkpj)", "title": "Unable to create worklists ... I am getting a 500 error", "created_at": "2019-02-05T22:34:15+00:00", "tags": [], "updated_at": "2019-02-11T16:40:06+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 683, "story_type_id": 1, "security": null, "id": 2004948, "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 distinction between \"Owner\" and \"User\" with no further information is probably only obvious to StoryBoard devs. The meaning of these two permission levels should be documented in the user interface somewhere, preferably when modifying them.", "title": "Worklist/Board permissions should be documented in the UI", "created_at": "2019-02-06T23:11:40+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2019-05-03T16:54:30+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2004955, "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "testing tag switch", "title": "test-story1", "created_at": "2019-02-22T21:35:32+00:00", "tags": ["unique_new_keep"], "updated_at": "2019-04-05T14:52:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5604, "story_type_id": 1, "security": null, "id": 2005076, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "testing tag switches", "title": "test-story2", "created_at": "2019-02-22T21:36:56+00:00", "tags": ["unique_new_keep"], "updated_at": "2019-04-05T14:52:31+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5604, "story_type_id": 1, "security": null, "id": 2005077, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The criteria fields in the `new worklist` creation modal dialog box currently lack an indicator when a search is underway, leading to user confusion over the lack of feedback if that search takes a while to populate results for its drop-down selection.", "title": "Add activity indicator to new worklist modal", "created_at": "2019-02-27T18:43:21+00:00", "tags": [], "updated_at": "2019-06-20T22:04:23+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": null, "id": 2005104, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "\"When exporting a plan from the UI, the Swift URL doesn't use the proxy URL and the plan cannot be downloaded\"", "title": "\"When exporting a plan from the UI, the Swift URL doesn't use the proxy URL and the plan cannot be downloaded\"", "created_at": "2019-02-27T21:55:04+00:00", "tags": [], "updated_at": "2021-06-21T18:23:14+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5663, "story_type_id": 1, "security": false, "id": 2005106, "users": [{"openid": "https://login.ubuntu.com/+id/8RxGJeF", "enable_login": true, "created_at": null, "updated_at": null, "id": 5663, "is_superuser": false, "last_login": "2019-02-27T21:58:43+00:00", "full_name": "Pooja agarwal", "email": "poojaag1606@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-03-17T20:32: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": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "If someone added some notes to the task or changes the project of the task, the comment is, \"User updated the Task X\", but no trace of what the user has updated or modified.", "title": "Any update in the task of the story isn't visible in the comments.", "created_at": "2019-03-16T23:10:25+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2019-06-21T18:01:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5666, "story_type_id": 1, "security": null, "id": 2005251, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When browsing is implemented, the user will have the ability to browse on criteria of their choice. This bug prevents the user from seeing some explanation if they have an invalid query.", "title": "No warnings to indicate that search criteria is invalid", "created_at": "2019-03-20T21:05:37+00:00", "tags": ["storyboard-bug"], "updated_at": "2019-04-01T15:29:39+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5604, "story_type_id": 1, "security": null, "id": 2005278, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The current implementation sets the columns by default as 'Title', 'Created', 'Updated', 'Status'. Upon the completion of this story, the user should be allowed to choose what columns they see and can order the stories by the columns they click on.", "title": "Allow user to choose column to filter by", "created_at": "2019-04-09T14:50:17+00:00", "tags": ["storyboard-feature-request"], "updated_at": "2020-09-24T18:52:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5604, "story_type_id": 1, "security": null, "id": 2005413, "users": []}, {"status": "active", "task_statuses": [{"count": 0, "key": "review"}, {"count": 7, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "There are various places in StoryBoard where one can view a list of things, most frequently Stories. All of these places have subtly or not-so-subtly different UI layouts, which as well as implying a lack of sensible code reuse makes StoryBoard more frustrating to use than it needs to be.\n\nA side effect of some of these UI choices means that the ability to filter lists in some views is limited at best.\n\n## Stories\n\nWe should treat the \"story list\" view (https://storyboard.openstack.org/#!/story/list) as the canonical way of displaying Stories, and the following views should be modified to conform to it (at least the manner in which stories, column headers, etc. are displayed).\n\n### Project detail view\n- https://storyboard.openstack.org/#!/project/opendev/storyboard-webclient for example\n- Contains a list of stories organised by status, separated by tabs\n- For this story, we should make these organised stories be displayed in the same way as stories in\n  the story list view\n\n### Project Group detail view\n- https://storyboard.openstack.org/#!/project_group/storyboard for example\n- Contains a list of stories filtered by one or more statuses, controlled by checkboxes\n- For this story, we should:\n  - Use tabs instead of checkboxes, as on the project page\n  - Make the displayed stories be the same as in the story list view\n\nWe should also consider making both of these views filterable in the same way as the story list view, but that belongs in a different Story (TODO: link that here).\n\n\n## Projects\n\nProjects are displayed consistently in the two relevant places (project group detail and also projects list), however they should have more information visible to be consistent with the kinds of things made visible for Stories.\n\n\n## Project Groups\n\nThe Project Group list view has a similar issue to the Project list view; it needs more information to be visible to sort by, in the form of column headers.\n\n\n## Worklists/Boards\n\nAll of the list views have one object per view, except worklists and boards which has two. We should split this into two views with a submenu to switch between the two, similar to the dashboard submenu.\n\n\n## Search\n\nThe general-purpose \"advanced\" search view displays all relevant types of object. It doesn't have column headers, and it should.", "title": "Make UI for lists of things consistent across different views", "created_at": "2019-05-03T20:39:36+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-06-21T17:55:02+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2005559, "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": "When searching (rather than browsing, so only when adding a \"Text\" item which puts `q=whatever` in the URL), the page controls say things like \"1 to 0 of 16\", instead of the expected \"1 to 10 of 16\" or similar.", "title": "Result paging information is wrong when searching", "created_at": "2019-05-03T21:48:23+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2019-05-03T21:49:24+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": null, "id": 2005561, "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": 1, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Requiring users to click a \"Preview Description\" in order to check that their Markdown renders correctly is not a good UX.  It should preview by default [like StackExchange does](https://stackoverflow.com/questions/ask), or if there is a good reason not to do that, at least automatically enable Preview whenever Markdown is used.\n\nAs [discussed on IRC](http://eavesdrop.openstack.org/irclogs/%23storyboard/%23storyboard.2019-05-07.log.html#t2019-05-07T12:25:15), to avoid scrolling problems whilst retaining a genuine preview, the source should come first, with its input text field container set to `overflow-y: scroll`, and the preview should come after and be allowed to extend off the bottom of the screen.", "title": "Show story description markdown preview by default", "created_at": "2019-05-07T13:47:46+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2021-06-17T00:38:58+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 999, "story_type_id": 1, "security": null, "id": 2005596, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When typing a description of a new story, if you accidentally press the escape key, your \"New Story\" modal disappears along with everything you have typed so far. It would be much more forgiving to ask for confirmation (e.g. \"do you really want to abandon this story?\") before doing this.", "title": "Pressing escape key while creating a new story discards all your progress without warning", "created_at": "2019-05-08T20:14:58+00:00", "tags": [], "updated_at": "2019-06-21T17:30:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5090, "story_type_id": 1, "security": null, "id": 2005637, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Submitting the story (see screenshot [1]) runs into the following sequence of errors:\nFirst attempt gets 500 deadlock error [2].\nSecond attempt gets same error [2].\nThird attempt gets 400 invalid input error [3]\nFourth and further attempts continue to get the same error [3].\n\n[1]\nhttps://imagebin.ca/v/4gQUeBfM9Fc2\nhttps://imagebin.ca/v/4gQSSN94fnmj\n\n[2]\n500: POST /api/v1/tasks: (pymysql.err.InternalError) (1213, u'Deadlock found when trying to get lock; try restarting transaction') [SQL: u'UPDATE stories SET updated_at=%(updated_at)s WHERE stories.id = %(stories_id)s'] [parameters: {'updated_at': datetime.datetime(2019, 5, 8, 17, 42, 52, 975378), 'stories_id': 2005633}] (Background on this error at: http://sqlalche.me/e/2j85)\n\n[3]\n400: POST /api/v1/stories/2005633: Invalid input for field/attribute story. Value: '2005633'. unable to convert to Story", "title": "500 Deadlock followed by 400 invalid input when submitting story", "created_at": "2019-05-08T21:19:01+00:00", "tags": [], "updated_at": "2019-06-21T17:19:29+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1358, "story_type_id": 1, "security": null, "id": 2005638, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "When I create a story, I enter \"openstack/ironic\" (with title and description exist) in the \"\"Select a Project\" box, and choose openstack/ironic from the popup list, but the \"Save Changes\" button is never clickable. It confuses me quite a while and finally I figured out that if I enter \"ironic\" then select \"openstack/ironic\" from the popup menu, the \"Save Changes\" button works.\n\nIt seems quite confusing to me and feels like a bug.", "title": "Issue on picking project", "created_at": "2019-05-29T08:18:27+00:00", "tags": [], "updated_at": "2019-06-07T17:56:33+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 2879, "story_type_id": 1, "security": null, "id": 2005792, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "The speed at which storyboard returns search results leaves something to be desired at this point. \n\nThere are a number of things that may be causing this:\n- Bad indexing\n- Poorly formed db queries\n\nJim Blair has set up a slow query log on the production instance of StoryBoard to help us get insight into what is happening. \n\nhttp://eavesdrop.openstack.org/irclogs/%23storyboard/%23storyboard.2019-06-04.log.html#t2019-06-04T23:19:14\n\nhttp://files.openstack.org/user/corvus/storyboard/", "title": "Searching Speed Improvements", "created_at": "2019-06-07T17:35:12+00:00", "tags": ["storyboard-searching-enhancements"], "updated_at": "2020-09-17T17:13:39+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": false, "id": 2005845, "users": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Nearly 100% of the time when I create a story with multiple tasks against multiple projects I get a 500 error from storyboard and many tasks don't get saved (typically all but one are lost).\n\nThe last occurrence:\n500: POST /api/v1/tasks: (pymysql.err.InternalError) (1213, u'Deadlock found when trying to get lock; try restarting transaction') [SQL: u'UPDATE stories SET updated_at=%(updated_at)s WHERE stories.id = %(stories_id)s'] [parameters: {'updated_at': datetime.datetime(2019, 6, 12, 22, 24, 9, 242713), 'stories_id': 2005870}] (Background on this error at: http://sqlalche.me/e/2j85)", "title": "Storyboard fails with 500 error and loses tasks on story save.", "created_at": "2019-06-12T22:30:03+00:00", "tags": [], "updated_at": "2020-02-19T16:46:03+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 181, "story_type_id": 1, "security": false, "id": 2005871, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 132, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "During the Ocata cycle, the OpenStack-manuals, infra, and translations\nteam worked together to enable the generation of PDF doc files from\nrst-based guide documents. This change generated a single downloadable\nPDF per Sphinx project. This means that each \u00e2\u0080\u009cbook\u00e2\u0080\u009d built from a single Sphinx\nproject could generate a PDF, allowing users who want to see documents offline\nthe ability to do so.\n\nhttps://governance.openstack.org/tc/goals/train/pdf-doc-generation.html", "title": "Infrastructure: Enabling PDF generation support for project documentation", "created_at": "2019-06-30T11:22:43+00:00", "tags": ["pdf-doc-enabled"], "updated_at": "2021-06-15T20:03:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 691, "story_type_id": 1, "security": false, "id": 2006086, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Online platform for hospital-booking management.", "title": "Hospital_manager", "created_at": "2019-08-06T14:43:07+00:00", "tags": [], "updated_at": "2019-10-03T19:58:22+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6465, "story_type_id": 1, "security": false, "id": 2006344, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "An online platform for users to login, check out offers, and schedule appointments conveniently.", "title": "Hospital-booking management platform", "created_at": "2019-08-06T15:01:34+00:00", "tags": [], "updated_at": "2019-10-03T19:58:04+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6465, "story_type_id": 1, "security": false, "id": 2006345, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "only test", "title": "test story", "created_at": "2019-08-10T00:14:11+00:00", "tags": [], "updated_at": "2019-10-03T19:57:44+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6475, "story_type_id": 1, "security": false, "id": 2006388, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "One ~", "title": "Story 1", "created_at": "2019-08-25T06:44:48+00:00", "tags": [], "updated_at": "2019-10-03T19:57:28+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6510, "story_type_id": 1, "security": false, "id": 2006444, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Test 1 to do", "title": "Task 1", "created_at": "2019-08-25T06:45:13+00:00", "tags": [], "updated_at": "2019-10-03T19:57:11+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6505, "story_type_id": 1, "security": false, "id": 2006445, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "222", "title": "Story 2", "created_at": "2019-08-25T06:45:57+00:00", "tags": [], "updated_at": "2019-10-03T19:56:50+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6510, "story_type_id": 1, "security": false, "id": 2006446, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Task 1", "title": "Task 1", "created_at": "2019-08-25T06:46:15+00:00", "tags": [], "updated_at": "2019-09-09T06:12:41+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6505, "story_type_id": 1, "security": false, "id": 2006447, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "3333", "title": "Story 3", "created_at": "2019-08-25T06:46:34+00:00", "tags": [], "updated_at": "2019-10-03T19:56:27+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6510, "story_type_id": 1, "security": false, "id": 2006448, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "nguyenhung_task1", "title": "nguyenhung_task1", "created_at": "2019-08-25T06:49:16+00:00", "tags": [], "updated_at": "2019-10-03T20:01:36+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6505, "story_type_id": 1, "security": false, "id": 2006449, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "nguyenhung_task2", "title": "nguyenhung_task2", "created_at": "2019-08-25T06:49:39+00:00", "tags": [], "updated_at": "2019-10-03T19:58:42+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6505, "story_type_id": 1, "security": false, "id": 2006451, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "nguyenhung_task3", "title": "nguyenhung_task3", "created_at": "2019-08-25T06:50:02+00:00", "tags": [], "updated_at": "2019-10-03T20:01:14+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6505, "story_type_id": 1, "security": false, "id": 2006452, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 3, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "test", "title": "lamth-story1", "created_at": "2019-08-25T06:59:06+00:00", "tags": [], "updated_at": "2019-10-03T19:59:04+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6507, "story_type_id": 1, "security": false, "id": 2006454, "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": "On the board at https://storyboard.openstack.org/#!/board/186, I am no longer able to add some existing stories as cards.\n\nSteps... \n\n- from a given board, select \"Add a card\"\n- from \"Adding items to <board name>\", select \"Stories\" in top left pull-down\n- enter the name of an existing story - partial, or full (e.g. \"[Feature] Redfish Integration\")\n\nThis used to work for me, when I initially created this board.  But now, the search finds *some* stories, but not the one I'm actually trying to add, even if I use the exact name.\n\nIs this related to the state of the story in question, or is this a bug?", "title": "Cannot add existing Stories as Cards to Board", "created_at": "2019-10-16T11:58:43+00:00", "tags": ["storyboard-worklists"], "updated_at": "2019-10-27T21:14:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5387, "story_type_id": 1, "security": false, "id": 2006727, "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": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 2, "key": "invalid"}, {"count": 28, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "As part of applying for Certified Kubernetes logo, all StarlingX repos need to be mirrored to github. This story is to track the work required to setup zuul jobs for mirroring.\n\nDiscussion thread: http://lists.starlingx.io/pipermail/starlingx-discuss/2020-February/007679.html", "title": "Mirror all StarlingX repos to github", "created_at": "2020-02-03T19:13:53+00:00", "tags": ["stx.4.0", "stx.tools"], "updated_at": "2020-06-18T23:10:52+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 4922, "story_type_id": 1, "security": false, "id": 2007252, "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": "Due to long-standing issues around table locking covered in https://storyboard.openstack.org/#!/story/2000983 we should consider shielding webclient users from this error by not allowing them to try to create more than one initial task in the new story modal since that will ultimately fail.", "title": "Limit new story modal to creating only one initial task", "created_at": "2020-02-19T16:49:45+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2020-02-19T16:50:59+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 10, "story_type_id": 1, "security": false, "id": 2007311, "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-03-17T20:32: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": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "It's not at all clear to a new user how to use the Search page.\n\n- Search Syntax: Some help text to show the basic principles and a few examples would be helpful.\n  - For example are multiple words considered a phase or are they terms that are ANDed and/or ORed together.  If they are a phrase  then what is the syntax to search for two phrases. If not, how do you specify a phrase? Do quotes imply anything?\n  - What other operators are supported, if any?\n  - How exactly does one specify the various items alluded to in the terse help text of  \"What would you like to search by? Keyword in a story or task title, user, tag, project, project group, etc\".  I'm sure the syntax is obvious to the author of that line, but not to me.\n- Search Editing/Re-submittal:  There is obviously some logic here but I don't full get it.  I can dismiss boxes with the x icon, but adding stuff and hitting return or clicking various elements of the GUI doesn't see to re-submit a search.\n- Text Field Entry box limited to showing maybe 20 characters.  One of the things I always tell my newbie front-end programmers is \"don't assume arbitrary limits will work nicely, unless they are really huge limits\".  I\"m sure somebody left a text field at some default size which makes pasting a long string very odd.  This should probably be a separate ticket, but I did run into on the Search page.", "title": "Search page could use \"Help\" text", "created_at": "2020-06-11T22:08:06+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2020-09-24T19:04:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 6408, "story_type_id": 1, "security": false, "id": 2007799, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Pretty much using storyboard and navigating any urls is painfully slow.   \nClick on projects, then click on openstack/ironic.   It takes 7-20 seconds for \nany results to show up.  Then drilling down into any task takes about the same\namount of time.", "title": "Storyboard is slow", "created_at": "2020-06-17T20:24:48+00:00", "tags": [], "updated_at": "2020-09-10T14:48:38+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 168, "story_type_id": 1, "security": false, "id": 2007829, "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": "Please add proper buttons for story creation and browsing.\n\nFor example on the page https://storyboard.openstack.org/#!/project/opendev/storyboard-webclient, the tabs `Active`, `Merged` and `Invalid` do not have a permalink, nor does the `Add story` button.\n\nThanks.", "title": "Add proper buttons for story creation and browsing", "created_at": "2020-08-26T07:48:51+00:00", "tags": ["storyboard-fix-in-vue"], "updated_at": "2021-06-17T00:40:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 7171, "story_type_id": 1, "security": false, "id": 2008066, "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": ["storyboard-emails", "low-hanging-fruit"], "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": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Currently when you create a new story with the new story modal in the webclient, sometimes you hit a race condition if you create a story with more than one task. While we are investigating the API issue causing this race condition (); we want to disable creating more than one task in the modal.", "title": "New Story Modal Create Only One Task", "created_at": "2020-09-24T18:46:25+00:00", "tags": ["low-hanging-fruit"], "updated_at": "2020-09-24T19:02:55+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": false, "id": 2008196, "users": []}, {"status": "invalid", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 1, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "WordPress Security Vulnerabilities lead to number of attacks like Brute Force Attacks. File Inclusion Exploits. SQL Injections. Cross-Site Scripting (XSS) Malware. [[source]](https://secure.wphackedhelp.com/blog/wordpress-vulnerabilities-how-to-fix-guide-tools/)", "title": "WordPress Security Vulnerabilities", "created_at": "2020-10-19T17:27:07+00:00", "tags": ["security", "wordpress", "vulnerabilities"], "updated_at": "2021-02-01T11:14:39+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 7293, "story_type_id": 1, "security": false, "id": 2008261, "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": "You should be able to log into the vue client for StoryBoard with openstackID or UbuntuOne.", "title": "Support Logging In", "created_at": "2021-03-25T18:22:06+00:00", "tags": [], "updated_at": "2021-03-25T18:22:10+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": false, "id": 2008754, "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 need to be able to view boards in a kanban-like UI.", "title": "Implement a board detail view", "created_at": "2021-03-25T18:23:24+00:00", "tags": [], "updated_at": "2021-03-25T18:23:29+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008755, "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 existing webclient has a useful about page. We should have something similar in the new client.", "title": "Implement an About view", "created_at": "2021-03-25T18:24:51+00:00", "tags": [], "updated_at": "2021-03-25T18:24:56+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008756, "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 should be a publically visible list, something which is missing in the existing client.", "title": "Implement a Team list view", "created_at": "2021-03-25T18:27:12+00:00", "tags": [], "updated_at": "2021-03-25T18:27:17+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008757, "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 should have a view which displays membership and related projects for teams. This should be publically visible, unlike the admin-only team detail view in the current client.", "title": "Implement a Team detail view", "created_at": "2021-03-25T18:28:47+00:00", "tags": [], "updated_at": "2021-03-25T18:28:51+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008758, "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 have a board list, we also need a worklist list. In the current client they're together on the same view, but we should have them on separate views in the new client.", "title": "Implement a Worklist list view", "created_at": "2021-03-25T18:33:02+00:00", "tags": [], "updated_at": "2021-03-25T18:33:07+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008759, "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": "A worklist is like one lane in a board, but can be used independently as a priority list or to-do list.", "title": "Implement a Worklist detail view", "created_at": "2021-03-26T17:13:18+00:00", "tags": [], "updated_at": "2021-03-26T17:13:23+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008765, "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": "A user should be able to subscribe to projects, project groups, boards, worklists, and stories.", "title": "Implement Subscriptions", "created_at": "2021-03-26T17:17:49+00:00", "tags": [], "updated_at": "2021-03-26T17:20:04+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": false, "id": 2008766, "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 logged in, we should provide a dashboard which has similar functionality to the existing dashboard in the current client", "title": "Implement a dashboard view", "created_at": "2021-03-26T17:22:31+00:00", "tags": [], "updated_at": "2021-03-26T17:22:35+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008767, "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": "StoryBoard supports adding attachments to stories. When we can log into the Vue client, it should also support uploading attachments to a Swift service with credentials provided by the StoryBoard API.", "title": "Add support for uploading attachments to Stories", "created_at": "2021-03-26T17:26:43+00:00", "tags": [], "updated_at": "2021-03-26T17:26:48+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008769, "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 this point, a user can see a lot of information about their account- stories they are assigned to, recent activity, and subscriptions they may have, but they don't have the ability to see/modify their preferences (notifications, for example).", "title": "Implement User Preferences View", "created_at": "2021-03-26T17:27:09+00:00", "tags": [], "updated_at": "2021-03-26T17:27:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": false, "id": 2008770, "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 addition to the attachments support described in https://storyboard.openstack.org/#!/story/2008769, we need to be able to update other story-related data.\n\n- Add comments\n- Add/edit tasks\n- Add/remove tags\n- Edit description", "title": "Make the Story detail view interactive", "created_at": "2021-03-26T17:30:43+00:00", "tags": [], "updated_at": "2021-03-26T17:30:47+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008771, "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": "As a storyboard admin, users should have tokens for security purposes.", "title": "Implement User Tokens", "created_at": "2021-03-26T17:32:19+00:00", "tags": [], "updated_at": "2021-03-26T17:33:15+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 1126, "story_type_id": 1, "security": false, "id": 2008772, "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": "There are a few rough edges here still.\n\n- Timestamps need to be rendered more nicely\n- Some timeline events probably aren't handled as nicely as they can be\n- Timeline UI in general needs tightening up\n- Tasks list needs extra bits (notably task notes/links)", "title": "Finish off the read-only Story UI", "created_at": "2021-03-26T17:55:17+00:00", "tags": [], "updated_at": "2021-03-26T17:55:21+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008773, "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 \"how does this work\" isn't really documented anywhere, we should at least provide some documentation of the various reusable components.", "title": "Document the existing prototype codebase", "created_at": "2021-03-26T18:25:15+00:00", "tags": [], "updated_at": "2021-03-26T18:25:19+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008775, "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 already have most of a read-only project view.\n\nWe should make this editable by admin users.", "title": "Implement a Project detail view", "created_at": "2021-03-26T18:33:28+00:00", "tags": [], "updated_at": "2021-03-26T18:33:32+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008776, "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 have a prototype read-only view. We should make sure it has parity with the existing view and allow admin users to edit it.", "title": "Implement a Project Group detail view", "created_at": "2021-03-26T18:35:29+00:00", "tags": [], "updated_at": "2022-09-08T16:07:42+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008777, "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 prototype Board list view doesn't support filtering by anything. We should add that functionality using the existing filtering components.", "title": "Add filtering to the Board list view", "created_at": "2021-03-26T18:38:41+00:00", "tags": [], "updated_at": "2021-03-26T18:38:46+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 935, "story_type_id": 1, "security": false, "id": 2008778, "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": 0, "key": "review"}, {"count": 1, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "Pressing the Escape key while creating a new story closes the dialog box and cleans up the form fields.\nIt would be great to ask for confirmation before closing the box if the form is not empty.", "title": "Pressing Escape closes the New story dialog box without warning", "created_at": "2021-03-29T12:48:36+00:00", "tags": ["storyboard-fix-in-vue"], "updated_at": "2021-04-20T16:36:54+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5701, "story_type_id": 1, "security": false, "id": 2008786, "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": "Using Chrome Version 89.0.4389.82 (Official Build) (64-bit) on Fedora 33\n\nWhen I create a new story:\n- set a title\n- set a description\n- set a project: type the whole (I mean every letter) project name (ex: opendev/storyboard-webclient), then click on the only entry in the select box\n-> \"Save Changes\" is still disabled, I cannot create a new story\n\nBut if I partially type the name of the project (opendev/story) then I select \"opendev/storyboard-webclient\",\nThe \"Save Changes\" button is now enabled and I can submit the story", "title": "\"Save Changes\" button is disabled when not using project name completion", "created_at": "2021-03-29T12:59:27+00:00", "tags": ["storyboard-fix-in-vue"], "updated_at": "2021-04-20T16:36:07+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 5701, "story_type_id": 1, "security": false, "id": 2008787, "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": 2, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 0, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "B\u1ea3n Quy\u1ec1n \u2713\u00a9 AIphanbade \u2122", "title": "policy", "created_at": "2022-09-08T16:04:44+00:00", "tags": [], "updated_at": "2022-09-08T16:06:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 8275, "story_type_id": 1, "security": false, "id": 2010281, "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": "When I go to the dashboard, I'm often met with \"There are no stories created by you.\", while later on filling it in with the actual stories/issues created by me.\n\nWhen a dashboard tells something like that, I expect it to have finished loading, while in this case it clearly hasn't yet.\n\nSo: I suggest a loading status in these instances, maybe the same spinner for search, to indicate its still in-progress.", "title": "Dashboard does not properly communicate loading status", "created_at": "2023-01-05T14:00:12+00:00", "tags": [], "updated_at": "2023-01-05T14:00:16+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 8441, "story_type_id": 1, "security": false, "id": 2010517, "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": "Per title: When i search for issues/stories on the dedicated, this is almost impossible as it only shows a popup search result list, when on the dedicated page i expect a long list i can scroll through to view which issue/story is most relevant to my search quest.\n\nI'd suggest turning this from a popup into a proper list, as i've seen in every other issue tracker so far.", "title": "Search page does not show its results in a list, but in a popup list", "created_at": "2023-01-05T14:02:27+00:00", "tags": [], "updated_at": "2023-01-31T13:17:05+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 8441, "story_type_id": 1, "security": false, "id": 2010518, "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": []}, {"status": "merged", "task_statuses": [{"count": 0, "key": "review"}, {"count": 0, "key": "todo"}, {"count": 0, "key": "invalid"}, {"count": 1, "key": "merged"}, {"count": 0, "key": "inprogress"}], "description": "opendev-test", "title": "opendev-test", "created_at": "2024-01-25T08:28:51+00:00", "tags": [], "updated_at": "2024-01-26T04:32:23+00:00", "private": false, "teams": [], "is_bug": true, "creator_id": 8893, "story_type_id": 1, "security": false, "id": 2011024, "users": []}]