Conversation
replyToDiscussion built the CommentCreateInput with only parentId + body, omitting the entity id (issueId/projectId/initiativeId) that Linear requires even on a threaded reply, so every reply failed with: Argument Validation Error - Exactly one of ... issueId must be defined. The thread context fetched by assertRootDiscussionThread already carries all three ids; forward the right one via the existing getDiscussionThreadEntity helper. No extra network call. Closes #226
fix(discussions): forward parent entity id when replying to a thread
## [2026.6.0-next.1](v2026.5.0...v2026.6.0-next.1) (2026-06-16) ### Bug Fixes * **discussions:** forward parent entity id when replying to a thread ([745ca56](745ca56)), closes [#226](#226)
…ompat feat(issues): restore relation commands
## [2026.6.0-next.2](v2026.6.0-next.1...v2026.6.0-next.2) (2026-07-02) ### Features * **issues:** restore relation commands ([e0f880c](e0f880c))
Align CreateProjectMilestone and UpdateProjectMilestone with the $input argument shape used by every other mutation in the codebase, fixing the runtime GraphQL variable error on milestone create and the incorrect variables sent on update. Closes #223
fix(milestones): use $input convention for milestone mutations
## [2026.6.0-next.3](v2026.6.0-next.2...v2026.6.0-next.3) (2026-07-02) ### Bug Fixes * **milestones:** use $input convention for milestone mutations ([309aaab](309aaab)), closes [#223](#223)
…tput Add two global output-shaping flags for stdout success payloads: - --compact emits single-line JSON (no indentation). - --fields <list> keeps only comma-separated dot-paths, preserving nested object shape and traversing arrays mid-path (e.g. labels.nodes.name). Options are set once per process via a Commander preAction hook that reads root opts through the existing getRootOpts() helper, so none of the ~120 outputSuccess() call sites change. Error envelopes stay pretty-printed. Adds pickFields/parseFieldsList helpers with tests. Closes #220
Match only own properties via Object.hasOwn and write results with Object.defineProperty so a user-supplied --fields __proto__ cannot invoke the prototype setter (previously mutated the result object's prototype and dropped the field). Inherited members like toString and constructor are no longer picked. Derive OutputOptions from CommandOptions via Pick so the two cannot drift. Refs #220
feat(output): add --compact and --fields flags for token-efficient output
## [2026.6.0-next.4](v2026.6.0-next.3...v2026.6.0-next.4) (2026-07-02) ### Features * **output:** add --compact and --fields flags for token-efficient output ([682bde9](682bde9)), closes [#220](#220) ### Bug Fixes * **output:** harden pickFields against prototype-chain keys ([a624313](a624313)), closes [#220](#220)
The document list --issue path now filters via the native document→issue relation (with a legacy slugId OR branch), leaving listDocumentsBySlugIds without any production caller. Drop the dead service function and its tests. Refs #234
…-compat feat: restore document attachment compatibility
## [2026.6.0-next.5](v2026.6.0-next.4...v2026.6.0-next.5) (2026-07-02) ### Features * restore document attachment compatibility ([f096add](f096add))
Configure setup, run, and archive scripts for Conductor workspaces: npm install setup (runs codegen + lefthook via prepare), concurrent run_mode, npm run clean archive, and test/build/check run scripts.
ci(conductor): add shared Conductor settings.toml
The batch search query scopes cycles to a team, so resolving a cycle by name without a --team returned an empty node set and threw "Cycle not found". Fall back to resolveCycleId (global lookup) when the batch response has no cycles, mirroring the existing status fallback, and add a regression test. Refs #126
perf(issues): batch-resolve assignee and IDs in create/update
## [2026.6.0-next.10](v2026.6.0-next.9...v2026.6.0-next.10) (2026-07-03) ### Bug Fixes * **resolvers:** restore global cycle fallback in search without team ([c0cbc95](c0cbc95)), closes [#126](#126) ### Performance Improvements * **issues:** batch-resolve assignee and IDs in create/update ([819c045](819c045)), closes [#126](#126)
Ships an agentskills.io-standard SKILL.md teaching agents the preflight and discover-then-act protocol, plus Claude Code plugin and marketplace manifests. Documents install paths in the README.
The allowed-tools field is parsed as a comma-separated list; the space-separated value was read as a single unmatched pattern, so the Bash pre-approvals never took effect.
…-skill feat(skill): add agent skill and Claude Code plugin for the CLI
## [2026.6.0-next.11](v2026.6.0-next.10...v2026.6.0-next.11) (2026-07-03) ### Features * **skill:** add agent skill and Claude Code plugin for the CLI ([1233ad9](1233ad9)) ### Bug Fixes * **skill:** comma-separate allowed-tools in SKILL.md frontmatter ([66db248](66db248))
…badge docs: add skills.sh badge to README
Split clean-publish and npm publish into explicit stages so a failed publish propagates a non-zero exit and fails the release. Add a registry read-back guard to catch silent publish failures. Switch npm auth to OIDC trusted publishing (drop NPM_TOKEN) and ensure npm >= 11.5.1 in CI.
clean-publish throws on a pre-existing temp dir and, with --without-publish, never removes it. The trailing cleanup is &&-chained, so a failed local 'npm run release' left .clean-pkg behind and broke the next run. Clear it up front. CI is unaffected (fresh checkout).
Keep only the non-obvious rationale (registry-url shadowing OIDC, npm floor, OIDC auth, two-stage publish, read-back guard); drop the restated detail.
…ase-missing ci: Fail release on failed npm publish and use OIDC trusted publishing
Add a [prompts] block to .conductor/settings.toml so every Conductor agent on this repo works like a senior engineer: surgical changes, English output, disciplined git usage, and a commit history held to the same bar as the code. - general: lean, always-on persona + discipline; defers to AGENTS.md for architecture/invariants/checklist and conditions verification on change type (no full build/knip on docs- or config-only edits). Also makes agents base-branch-aware (rebase before substantial work) and treats commits as durable context (well-scoped, extended what/why bodies). - create_pr/code_review/fix_errors/resolve_merge_conflicts/rename_branch: additive-safe action prompts encoding the repo's commitlint rules, release-owned CHANGELOG guard, P0 invariants, and branch naming. create_pr adds a history-hygiene step (rebase, then reshape into well-isolated scoped commits) with a guardrail against rewriting shared/merged history; review and fix-errors flag/clean messy history. Prompt wording synthesized from three expert audits (prompt engineering, Claude Code behavior, Conductor mechanism).
…rompt-engineering chore(conductor): add repository agent prompts
Add `issues activity <issue>`, which merges an issue's comment threads (root comments plus their nested replies) with its history events into a single chronological timeline, paginated with an opaque id cursor. Why: users and agents inspecting an issue previously had to correlate the separate `discussions` output with Linear's field-change history by hand. Linear exposes no unified activity connection, so the service materializes both connections, normalizes each history event into a compact list of meaningful changes (state, assignee, priority, project, cycle, title, estimate, labels, archived), resolves label IDs to names, and sorts the combined set ascending by creation time. Design notes and trade-offs: - History and comment connections are independent, so both are exhausted concurrently before assembly; label names depend on the history nodes and are resolved afterwards. Empty-change history events are dropped so they do not consume pagination slots. - As a stateless CLI there is no cross-invocation cache, so each `--after` page re-materializes the full timeline before slicing — the same materialize-then-slice model already used for discussion reply pagination. Cheap for typical issues; only pathological histories pay. - `--comments-only` skips history (and the dependent label lookup); `--with-reactions` returns normalized reactions on roots and replies. To feed the activity service, `discussion-service` is refactored to expose reusable reply helpers (`buildThreadRepliesIndex` / `collectThreadReplies`, with `filterThreadReplies` now layered on top) and issue-scoped reply-candidate fetchers, and `GetLabels` gains an `includeArchived` argument (default false) so historic label changes still resolve to names. The fetch-until-empty loop shared by every full-connection fetcher is extracted into a `collectConnection` helper in `common/types` so each fetcher only declares its query, per-page guard, and cursor extraction. Closes #144
feat(issues): add activity command with threaded discussion timeline
## [2026.6.0-next.12](v2026.6.0-next.11...v2026.6.0-next.12) (2026-07-04) ### Features * **issues:** add activity command with threaded discussion timeline ([38a3ea3](38a3ea3)), closes [#144](#144)
## [2026.6.0-next.12](v2026.6.0-next.11...v2026.6.0-next.12) (2026-07-04) ### Features * **issues:** add activity command with threaded discussion timeline ([38a3ea3](38a3ea3)), closes [#144](#144)
Add `teams create`, `teams update`, `teams members`, `teams add-member`, and `teams remove-member` subcommands with resolver-backed team/user ID resolution and paginated membership fetching. Estimation, cycle, and triage settings are exposed as explicit true|false flags. Boolean flags accept only true|false (not 1/0/yes/no) so scripts can set or unset settings unambiguously, and numeric flags reject blank input, which Number() would otherwise coerce to 0. Closes #142
feat(teams): add team create, update, and membership management
## [2026.6.0-next.13](v2026.6.0-next.12...v2026.6.0-next.13) (2026-07-04) ### Features * **teams:** add team create, update, and membership management ([c89208b](c89208b)), closes [#142](#142)
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Purpose
Promote tested prerelease changes from
nextinto stable channel onmain.Target stable version
2026.6.0Ships in stable (releasable changes)
Also included (no version impact)
Maintenance commits without associated PR
Compare
main...next
Install release candidate
Note
Please test prerelease changes in this PR and share feedback directly on this PR so we can address issues before stable release. Mention your installed version (
linearis --version) and repro steps. Use@nextfor rolling prerelease train, or exact version below for this staged candidate.Notes
next.