| 1 | --- |
| 2 | title: Issues became work items |
| 3 | description: Issues moved out of repositories into workspace-level work items. What happened to the issues, labels and milestones you had, why old links still work, and what to change in scripts and agents. |
| 4 | --- |
| 5 | |
| 6 | Issues used to belong to one repository each. They are now |
| 7 | [work items](/guides/work-items/), which belong to the workspace and can |
| 8 | link several repositories. **Work**, after **Home** in the left rail, |
| 9 | replaces each repository's **Issues** tab. |
| 10 | |
| 11 | ## What happened to your issues |
| 12 | |
| 13 | Every issue became a work item, with everything it had: its title and |
| 14 | description, comments, reactions, labels, assignees, milestone, claims, |
| 15 | sessions, pull requests and what it was blocked by. |
| 16 | |
| 17 | - **It has a new number.** Work items are numbered once for the whole |
| 18 | workspace, and each issue was given the next number, oldest first, above |
| 19 | every number any of the workspace's repositories had used. So an issue |
| 20 | number and a work item number never mean two things. |
| 21 | - **Its repository is its origin.** The work item links the repository |
| 22 | the issue was in as its `origin`, and keeps the old number there. Its |
| 23 | pull requests' repositories are linked as `touched`. |
| 24 | - **Pull requests kept their numbers.** New ones take the workspace's next |
| 25 | number. |
| 26 | - **Who can see it did not change.** Anyone who could read the repository |
| 27 | still sees the work item filed there. Members of the workspace now see |
| 28 | every work item in it. |
| 29 | |
| 30 | ## Old links still work |
| 31 | |
| 32 | - `g1t.sh/<owner>/<repo>/issues/12` redirects to the work item that issue |
| 33 | became, at `g1t.sh/<owner>/-/work/<number>`. **Issues**, **New issue**, |
| 34 | **Labels** and **Milestones** under a repository redirect to **Work**: |
| 35 | the repository's issue list to the Work list filtered to it, and its |
| 36 | labels and milestones to the workspace's. A milestone's own old address, |
| 37 | `…/milestones/3`, lands on the milestones list, since milestones were |
| 38 | renumbered. |
| 39 | - A person's **Issues** tab is their **Work items** tab, at |
| 40 | `g1t.sh/u/<name>/items`. |
| 41 | - `#12` and `owner/repo#12` in descriptions, comments and commit messages |
| 42 | written before still link to that issue's work item. |
| 43 | - `Closes #12` in history still points at the right work item. |
| 44 | - A repository's old **Work** page, its claims and sessions, is now its |
| 45 | **Sessions** page, with the sessions recorded on its pull requests, and |
| 46 | the old address redirects there. A session's page is |
| 47 | `g1t.sh/<owner>/<repo>/sessions/<id>`; an old address with a pull |
| 48 | request's number in place of the id goes to that pull request's |
| 49 | session. |
| 50 | |
| 51 | ## Labels and milestones |
| 52 | |
| 53 | Labels and milestones now belong to the workspace, too. |
| 54 | |
| 55 | - Labels with the same name in several repositories became one label. The |
| 56 | one made first kept its color and description. |
| 57 | - Milestones were renumbered in the workspace. Each records the |
| 58 | repository it came from, and every work item and pull request in it |
| 59 | stayed in it. |
| 60 | |
| 61 | ## What to change |
| 62 | |
| 63 | Nothing that reads links or references needs to change. What calls g1t by |
| 64 | name does: |
| 65 | |
| 66 | | Was | Now | |
| 67 | | --- | --- | |
| 68 | | `g1t issue …` | `g1t work …`: `list`, `view`, `new`, `comment`, `edit`, `close`, `reopen` | |
| 69 | | `g1t browse --issues` | `g1t browse --work` | |
| 70 | | `g1t work context N` | `g1t work view N` | |
| 71 | | `g1t work list` (claims and sessions) | `g1t work status` | |
| 72 | | `--issue N` on `g1t pr create`, `g1t session …` and `g1t work events` | `--item N` | |
| 73 | | The MCP `issue` tool | `work_item`, with `workspace` and `number` | |
| 74 | | `pull_request` `create` with `issue` | `pull_request` `create` with `item` | |
| 75 | | `/repos/{owner}/{name}/issues…` | `/workspaces/{workspace}/work…` | |
| 76 | | Repository labels and milestones routes | `/workspaces/{workspace}/labels` and `/workspaces/{workspace}/milestones` | |
| 77 | | `issue.*` events and webhooks | `work_item.*`. Webhooks you had were moved over for you. | |
| 78 | | `issue` and `other_issue` in event payloads | `item` and `other_item` | |
| 79 | | Workflows `on: issues` and `on: issue_comment`, and `permissions: { issues: … }` | `on: work_item`, `on: work_item_comment` and `permissions: { work: … }`. The old names still read but start and grant nothing, and the workflow's page says so. | |
| 80 | | The repository settings `has_issues` and `auto_close_issues` | `has_work_items` and `auto_close_items` | |
| 81 | | Search `is:issue` and `type: issues` | `is:item` and `type: items` | |
| 82 | | `issues:read`, `issues:write` scopes | `work:read`, `work:write` | |
| 83 | | `/g1t:work-on-issue` in Claude Code | `/g1t:work-on-item`, with the plugin 0.3.0 and the CLI 0.4.0 or later | |
| 84 | |
| 85 | There are no aliases for the old names: a script that calls one gets an |
| 86 | error, not a silent change. Numbers in your own data, such as a tracker |
| 87 | that stored `owner/repo#12`, still resolve, but a work item's own number |
| 88 | is the one to keep from now on. |