Repository navigation
feat(issues): add multi-provider issue tracking #6315
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
+72,117
−1,624
Closed
Changes from 200 commits
Commits
Show all changes
402 commits
Select commit
Hold shift + click to select a range
9276ec2
Merge remote-tracking branch 'origin/main' into feat/issues-page
Bil0000 bbdfa11
feat(issues): manage providers from filter
Bil0000 9b693f0
refactor(settings): remove issue tracking page
Bil0000 9f76faa
Merge remote-tracking branch 'origin/main' into feat/issues-page
Bil0000 1c0ea2b
fix(issues): sync provider filter state
Bil0000 0fd0488
fix(web): restore source control guidance
Bil0000 5d7cc93
fix(issues): show Linear logo in provider menu
Bil0000 32ea8b3
fix(issues): use Linear logo in compact menu
Bil0000 5b4cbf1
docs(issues): define Linear account flow
Bil0000 a71c04a
Revert "docs(issues): define Linear account flow"
Bil0000 cc4aac8
fix(issues): name Linear in open actions
Bil0000 353c785
test(issues): cover rendered Linear labels
Bil0000 508844a
fix(issues): make generated tasks responsive
Bil0000 7a08313
test(issues): use real Linear action menu
Bil0000 7ce2c6c
feat(issues): support multiple Linear accounts
Bil0000 52741f3
fix(issues): guard generated task drafts
Bil0000 7719187
fix(issues): load Linear activity correctly
Bil0000 29307b7
test(issues): cover Linear comment reactions
Bil0000 ae8a1e8
fix(issues): make Linear account updates safe
Bil0000 1bf6371
feat(web): manage Linear accounts by project
Bil0000 966f5ff
test(issues): type Linear label fixture
Bil0000 db65d59
fix(issues): preserve legacy Linear accounts
Bil0000 60a4f8a
fix(issues): expose invalid legacy keys
Bil0000 3937218
fix(web): harden Linear account management
Bil0000 40f4b0a
fix(server): make settings writes commit safely
Bil0000 c742935
fix(issues): preserve provider and account identity
Bil0000 8431d60
fix(web): manage Linear accounts by project
Bil0000 14ec9b4
Merge remote-tracking branch 'origin/main' into feat/issues-page
Bil0000 c5be9ea
fix(issues): isolate source-specific UI state
Bil0000 3069995
fix(server): make Linear failures safe
Bil0000 3edbf76
refactor(web): share work item list chrome
Bil0000 c30c362
fix(server): normalize Linear provider errors
Bil0000 aeedf90
fix(linear): reject unusable account bindings
Bil0000 8769ff5
fix(web): keep issue route state and chrome shared
Bil0000 5b9bb7a
fix(issues): resolve linked item projects
Bil0000 0c8f009
fix(issues): keep linked routes canonical
Bil0000 6d16a89
fix(linear): explain rejected project bindings
Bil0000 8417f10
refactor(web): share detail tab controls
Bil0000 3fbdba0
refactor(web): share work item list chrome
Bil0000 59222b6
feat(web): match issues list chrome
Bil0000 8e2ff61
feat(web): match issue detail chrome
Bil0000 8f5f366
fix(web): hide best-match order controls
Bil0000 10cca4c
feat(web): select issues from list rows
Bil0000 d80dc8d
feat(web): mention issues in composer
Bil0000 37b633d
fix(web): separate issue selection checkbox
Bil0000 18f45c2
fix(web): center work item actions
Bil0000 2edace8
fix(web): sync provider issue tab status
Bil0000 6304d0d
chore: merge main into issues workspace
Bil0000 fbcb010
fix(web): reuse shared issue controls
Bil0000 6c2f8ff
fix(server): preserve work item failure context
Bil0000 0772c41
fix(server): keep work item branch types
Bil0000 0178ba7
fix(web): align work item list interactions
Bil0000 238581e
fix(web): gate issues link on primary server
Bil0000 ce483af
fix(server): provide issue rate limit service
Bil0000 4972e79
test(web): account for pull request selection row
Bil0000 e79ec51
refactor(server): inline work item errors
Bil0000 4de9170
fix(web): align issue workspace controls
Bil0000 18873ec
fix(server): bound generated work item tasks
Bil0000 327ec3f
fix(web): use shared issue tooltips
Bil0000 a2fe1c6
fix(web): align issue editor controls
Bil0000 1fad533
fix(web): filter panel searches locally
Bil0000 e654f0a
fix(web): keep issue markdown environment
Bil0000 f28832a
fix(web): make issue panel errors retryable
Bil0000 e153385
Merge branch 'main' into feat/issues-page
Bil0000 5d8b96c
fix: reconcile issue workspace with current main
Bil0000 ae3a35c
chore: sync latest main
Bil0000 b57dbbc
fix: remove unused issue workspace exports
Bil0000 70bc82e
fix(server): preserve inline secrets in settings save results
Bil0000 0a2a90b
style(server): format issue provider callbacks
Bil0000 6eaa628
merge: sync issue workspace with main
Bil0000 6c55d26
fix(web): validate issue links before opening
Bil0000 34bcc8e
fix(web): render one pull request tab strip
Bil0000 6943b97
fix(web): allow assignment from partial candidate lists
Bil0000 56e1ef4
fix(web): report stale work item match results
Bil0000 bb383ad
fix(web): refresh cached composer issues after debounce
Bil0000 ad49ffd
fix(web): preserve editor focus in issue list controls
Bil0000 00452ea
fix(web): close linked issue panels from the keyboard
Bil0000 a2314e5
fix(web): preserve provider context in issue handoffs
Bil0000 22b8a62
fix(web): label attachments with their actual host
Bil0000 14cffd8
test(web): cover events between issue comment groups
Bil0000 2ed23a2
fix(server): keep committed writes successful after cleanup defects
Bil0000 a40b856
fix(server): prevent stale issue cache reuse after eviction
Bil0000 1b2f6e2
fix(server): retry Azure state updates only for state rules
Bil0000 1316a77
fix(server): preserve Bitbucket reads when permissions fail
Bil0000 5bafb3f
fix(server): normalize Bitbucket permission filters
Bil0000 37ba298
fix(server): report incomplete GitLab issue reads
Bil0000 beb1cce
test(server): clear the GitHub budget after quota checks
Bil0000 1b92be5
fix(server): use Linear references in all work item prompts
Bil0000 b5fd245
docs: clarify how issue content is marked as untrusted
Bil0000 0bdaaa1
fix(web): mark linked issue content as untrusted
Bil0000 5a95226
fix(web): keep list search inactive in detail panels
Bil0000 b9b97f8
fix(web): restore the main pull request list layout
Bil0000 ee5669f
fix(web): preserve pull request detail UI with shared rendering
Bil0000 462a1c1
fix(web): align issue details and status rows with pull requests
Bil0000 06253c1
feat(web): add issue sorting and compact filter controls
Bil0000 6f1cd6d
feat(web): manage Linear from Issue Tracking integrations
Bil0000 e5c4a8c
chore: merge latest main into issue workspace
Bil0000 f7ee5eb
fix(web): remove unused filter exports after component reuse
Bil0000 e085fd0
test(server): complete the issue sorting page fixture
Bil0000 5f34dd3
feat(web): manage Linear accounts inline in integration settings
Bil0000 93e5269
fix(web): preserve provider menu order when switching filters
Bil0000 5d5cb7b
feat(web): give issue and PR providers a dedicated filter control
Bil0000 4c49833
merge: sync latest main into the issues branch
Bil0000 b743786
fix(web): preserve issue drafts and match comment order labels
Bil0000 62cbe9f
fix(web): keep markdown PR links in the owning issue panel
Bil0000 2918d88
fix: sync issue tracking with current main
Bil0000 eaf58e1
fix(web): align unavailable filter checks
Bil0000 a5f7f20
test(web): remove ineffective email redaction assertions
Bil0000 3fce8da
fix(web): show issues supported by any environment
Bil0000 ccae43f
fix(web): preserve task-specific composer notices
Bil0000 b075ac0
test(web): keep source-control mentions sendable
Bil0000 5a9f2a3
fix(server): reject unsafe issue template contact links
Bil0000 71ca659
fix(server): require write scope for Linear migration status
Bil0000 49eb337
fix(server): repair Azure work item queries and paging
Bil0000 5bb0c59
fix(server): tolerate removed Bitbucket permission endpoint
Bil0000 b62e56f
fix(server): reject unsupported GitLab issue mentions
Bil0000 e1e86dd
fix(server): retain every selected work item in task prompts
Bil0000 82ac04b
fix(web): wait for issue template rules before filing
Bil0000 0a1830b
fix(web): keep issue comment pages ordered and current
Bil0000 e02b990
refactor(server): acquire issue registry dependencies through Effect
Bil0000 c501385
refactor(issues): remove unshipped Linear migration paths
Bil0000 89c1a51
refactor(issues): make tracker connections provider neutral
Bil0000 7d2301b
refactor(issues): drive client behavior from provider capabilities
Bil0000 13c9523
test(server): cover secret chmod failure after commit
Bil0000 9e484bd
test(server): decouple settings write regression from issues
Bil0000 271f244
docs(issues): explain Linear setup and environment limits
Bil0000 66a39b9
Merge main to retain current-thread PR panel actions
Bil0000 f2cb185
fix(server): keep Linear credential key private
Bil0000 e1714fd
test(settings): handle optional tracker entries in assertions
Bil0000 b27ef8e
Merge main and align issue shortcuts with platform context
Bil0000 3033fda
Merge main into feat/issues-page
juliusmarminge 1d3255c
merge: sync issues page with main
Bil0000 22d1c05
feat(issues): link issues to agent threads
Bil0000 20af72c
fix(web): simplify issue actions and rich text editing
Bil0000 1e54b8e
fix(issues): prepare ready tasks in new worktrees
Bil0000 6c92b1a
fix(issues): satisfy CI export and projection checks
Bil0000 5481c69
feat(issues): save links between issues and pull requests
Bil0000 475b025
feat(web): manage saved issue and pull request links
Bil0000 948fabd
merge: reconcile issues page with current main
Bil0000 b136441
fix(issues): preserve provider filters and pagination
Bil0000 13fe6eb
fix(web): open related PRs inside thread issue panels
Bil0000 17711c5
chore: merge current main into issues branch
Bil0000 b9686bd
style(server): format issue MCP error handling
Bil0000 c749c27
test(issues): use table-driven Azure sort cases
Bil0000 c7b019a
fix(web): use standard styles in issue controls
Bil0000 95fa038
chore: retry CI after runner DNS failure
Bil0000 c6cf99d
chore: merge main into issues page branch
Bil0000 ed30369
chore: merge latest main into issues page branch
Bil0000 afa022c
feat(mcp): read issue bodies and comments
Bil0000 1cb5766
feat(agents): link issues when work starts
Bil0000 a0ac780
feat(server): keep linked issue titles and state current
Bil0000 0ca2fdf
feat(web): show linked issues and PRs in one panel
Bil0000 a508bf4
feat(web): link issues and PRs from the chat menu
Bil0000 02d7a9a
fix(web): enable issue linking on issue-only environments
Bil0000 2bc02b0
feat(agents): link issues created for the thread
Bil0000 326199a
feat(mcp): format complete issue reads and page comments efficiently
Bil0000 e90dda4
merge: update issue read parent
Bil0000 35879de
perf(issues): reduce polling and refresh linked issues after edits
Bil0000 5018c0c
merge: update issue auto-link parent
Bil0000 e3db345
feat(web): accept precise issue references and reject PR previews
Bil0000 c39165d
merge: integrate issue updates with saved source projects
Bil0000 a424cd8
docs(web): explain supported issue link references
Bil0000 ffc2332
merge: update linked items parent for chat actions
Bil0000 4ceac3b
feat(web): link and unlink issue URLs from chat
Bil0000 bcfe723
chore: merge main and adapt issue MCP caller context
Bil0000 366518d
perf(server): reuse PR safeguards for issue refreshes
Bil0000 e971ed7
merge: carry issue request safeguards into linked items
Bil0000 c3543f4
merge: carry issue request safeguards into chat linking
Bil0000 b192ba7
merge: preserve current issues work in the follow-up stack
Bil0000 26d9110
merge: update issue read tools with the current issues PR
Bil0000 97ad47a
merge: carry current issues changes into automatic linking
Bil0000 f931792
merge: carry current issues changes into live refreshes
Bil0000 fd6d1f4
merge: carry current issues changes into linked items
Bil0000 874be64
merge: align all issue stack layers with the current base
Bil0000 21f4622
merge: include issue linking follow-ups in the issues PR
Bil0000 37f428f
merge: resolve issues PR with current main
Bil0000 7890921
merge: preserve main access guards and integrate issues
Bil0000 e5ed1fd
style(server): format rebased issue tests
Bil0000 a21b07d
fix(issues): correct provider pagination and failure states
Bil0000 4148c1b
refactor(server): own work item matching and refresh lifetimes
Bil0000 cbfe8a2
fix(server): delimit untrusted work item match text
Bil0000 2f9627a
fix(web): complete issue link labels and project picker
Bil0000 d48251a
refactor(contracts): reuse source control issue schemas
Bil0000 8eadef2
merge: integrate current main and preserve linked row actions
Bil0000 1deacde
refactor(issues): hash Linear credentials without disabled diagnostics
Bil0000 fb05616
fix(issues): keep newer Linear bindings when disconnect fails
Bil0000 2204dce
fix(issues): show incomplete linked issue reads
Bil0000 82eb863
merge: preserve linked items with main fast PR actions
Bil0000 9a3f412
merge: keep Issues compatible with main panel shortcuts
Bil0000 dec8652
feat(issues): Linear issue trees, linked pull requests and key search
nSimonFR-ai f578e4a
feat(issues): add GitHub issue hierarchy parity
Bil0000 1ce3381
fix(issues): preserve modified markdown link clicks
Bil0000 7cbee3a
fix(issues): keep teams and hosts distinct in issue trees
Bil0000 348ad23
fix(issues): avoid false closing claims for Linear PRs
Bil0000 47d257c
fix(issues): bound Linear hierarchy query cost
Bil0000 05188a6
fix(issues): merge overlapping bounded issue trees
Bil0000 d32eb91
fix(web): limit issue tree refreshes to active views
Bil0000 6b63252
fix(issues): share provider quota cooldowns with pull requests
Bil0000 b43bd61
fix(issues): bound GitHub and Linear hierarchy query budgets
Bil0000 e9d37d5
Merge pull request #112 from Bil0000/feat/issues-github-linear-trees
Bil0000 2b30bdb
fix(issues): align issue tracking with current main
Bil0000 faa7130
fix(auth): bind SQLite pairing scope flags as integers
Bil0000 28408d3
chore: sync issue tracking branch with latest main
Bil0000 df1b700
fix(issues): restore compatibility with current main
Bil0000 14d0349
fix(issues): flag incomplete cited issue lookups
Bil0000 6c3a4b5
fix(issues): advance GitHub pages without repeating timestamp rows
Bil0000 acc5676
fix(source-control): preserve quota errors from optional reads
Bil0000 cfaa426
fix(issues): isolate account caches and preserve binding rollback
Bil0000 2f330e6
fix(issues): accept legacy Azure organization work-item URLs
Bil0000 6798bb2
fix(issues): verify saved work-item URLs before reads and matches
Bil0000 5aa6945
fix(web): keep issue label filters during navigation
Bil0000 86ac301
fix(web): preserve assignee changes before refreshed data arrives
Bil0000 8e6322c
fix(web): configure Linear on the selected environment
Bil0000 1c0a69a
fix(web): reopen closed tabs on the Issues page
Bil0000 5cf70ef
fix(web): replace mixed work-item handoffs without losing user text
Bil0000 0457783
fix(issues): preserve bindings through unrelated settings saves
Bil0000 874dbaf
fix(issues): retain Bitbucket rows within a cursor millisecond
Bil0000 679f16e
fix(issues): report grouped GitHub search ceilings
Bil0000 64b0e91
fix(mcp): honor the host when reading saved issue links
Bil0000 bef3c95
fix(web): verify saved issues before showing their trees
Bil0000 83efbf5
fix(web): restore the New issue action
Bil0000 4f6afc2
chore: merge main and retain issue quota guards
Bil0000 3835f9f
fix(issues): finish Linear disconnects after cancellation
Bil0000 285a369
fix(issues): preserve filtered rows and safe page continuations
Bil0000 2a6eccd
merge main and preserve issue migration upgrades
Bil0000 d62998c
fix(linear): share account quotas and bound list query cost
Bil0000 cfb0f0b
fix(issues): prefer the current Linear account when linking
Bil0000 4537584
fix(issues): retain paged rows and show provider read errors
Bil0000 130eb78
fix(linear): share endpoint pauses across issue reads
Bil0000 70b926c
fix(issues): keep caches fresh across refreshes and writes
Bil0000 b46ba61
fix(issues): exclude Markdown code from PR citations
Bil0000 79df37e
fix(issues): normalize linked work item identities
Bil0000 0b31864
fix(web): preserve issue pages and refresh after actions
Bil0000 3c514d1
chore: integrate main with issue tracking
Bil0000 73cb190
merge: reconcile issue tracking with current main
Bil0000 ac13db4
fix(issues): close provider gaps and read unowned issue URLs
Bil0000 cb61cea
fix(issues): retain configured Forgejo HTTP ports
Bil0000 fdbf760
fix(web): match issue controls to provider capabilities
Bil0000 93a8abf
fix(web): read and link issue URLs without an owning project
Bil0000 4947d6e
merge: update issue tracking with latest main
Bil0000 a8b9fd4
fix(ci): correct moved Azure test import and package format
Bil0000 3e7e99e
fix(issues): honor native reactions and partial history
Bil0000 00e252d
fix(issues): report incomplete native PR links
Bil0000 5870694
feat(issues): add native Linear issue editing and history
Bil0000 256df85
feat(issues): add native Azure reactions and linked PR history
Bil0000 af5a09d
feat(issues): complete native Forgejo issue features and paging
Bil0000 7f63f3f
feat(issues): add explicit history and PR continuation reads
Bil0000 709a82a
feat(issues): continue Linear history and PR attachments
Bil0000 a76b274
feat(issues): page Azure history and guard native rate limits
Bil0000 4acfcf8
feat(issues): preserve complete Forgejo PR continuation state
Bil0000 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| import * as NodeServices from "@effect/platform-node/NodeServices"; | ||
| import { assert, it } from "@effect/vitest"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Exit from "effect/Exit"; | ||
| import * as FileSystem from "effect/FileSystem"; | ||
| import * as Path from "effect/Path"; | ||
|
|
||
| import { writeFileStringAtomically } from "./atomicWrite.ts"; | ||
|
|
||
| it.effect("does not fail after the target file is committed", () => | ||
| Effect.scoped( | ||
| Effect.gen(function* () { | ||
| const fileSystem = yield* FileSystem.FileSystem; | ||
| const path = yield* Path.Path; | ||
| const root = yield* fileSystem.makeTempDirectoryScoped({ prefix: "t3-atomic-write-" }); | ||
| const target = path.join(root, "settings.json"); | ||
| const cleanupFailureFileSystem = { | ||
| ...fileSystem, | ||
| makeTempDirectoryScoped: (options) => | ||
| Effect.acquireRelease(fileSystem.makeTempDirectory(options), () => | ||
| Effect.die(new Error("temporary directory cleanup failed")), | ||
| ), | ||
| } satisfies FileSystem.FileSystem; | ||
|
|
||
| const exit = yield* writeFileStringAtomically({ | ||
| filePath: target, | ||
| contents: "committed", | ||
| }).pipe(Effect.provideService(FileSystem.FileSystem, cleanupFailureFileSystem), Effect.exit); | ||
|
|
||
| assert.isTrue(Exit.isSuccess(exit)); | ||
| assert.strictEqual(yield* fileSystem.readFileString(target), "committed"); | ||
| }), | ||
| ).pipe(Effect.provide(NodeServices.layer)), | ||
| ); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.