IW-701: Send Linear user values as GraphQL variables #765
No reviewers
Labels
No labels
agent-ready
bug
contract
documentation
duplicate
enhancement
good first issue
help wanted
invalid
needs-human
needs-input
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
iterative-works/iw-cli!765
Loading…
Reference in a new issue
No description provided.
Delete branch "IW-701"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
LinearClientput user values (title, description, search text, team id, issue id, cursors) into GraphQL string literals inside a JSON string. That embedding needs two escaping layers;escapeForJsongave one, and the search and recent-issues builders gave none. A quote, a backslash or a newline made the GraphQL text or the JSON invalid.Defects fixed
buildCreateIssueMutation,buildSearchIssuesQuery,buildListRecentIssuesQuery,buildIssueCommentIdsQuery,buildIssueCommentsQuery) now send a constant GraphQL text with the values invariables, written byujson.writethrough onegraphqlRequesthelper.escapeForJsonis removed.Testing
LinearClientCreateIssueTest,LinearClientMockTest,LinearIssueTrackerTestdecode the body and check that each value round-trips exactly invariablesand thatqueryis the constant text. 9 new or rewritten tests failed before the fix.analysis.mdprintsGraphQL OKon all 7 inputs.LINEAR_API_TOKEN. The variable types come from the published Linear schema.Follow-ups
Two
LinearClient.scalaitems (deprecatedissueSearch;buildLinearQuerystill interpolatesIssueId) are attached to #643.Release notes
Projekty, které vedou úkoly v Linearu, teď spolehlivě přenesou do Linearu přesně ten text, který uživatel zadal. Dříve stačila v názvu nebo popisu úkolu jediná uvozovka, zpětné lomítko nebo zalomení řádku, a Linear požadavek odmítl. Protože skoro každý delší popis má více řádků, nešlo o okrajový případ, ale o běžnou situaci.
Příkaz pro založení nového úkolu nyní projde i s názvem jako „Řekni "ahoj"“, s cestou k souboru obsahující zpětná lomítka nebo s popisem na mnoho řádků. Název i popis dorazí do Linearu znak po znaku tak, jak byly napsány, nic se cestou neztratí ani nezmění.
Opravené je i hledání úkolů na dashboardu. Hledaný výraz s uvozovkou dříve způsobil chybu a výraz se zpětným lomítkem se před odesláním tiše pozměnil, takže hledání vracelo jiné výsledky, než uživatel čekal. Teď Linear dostane hledaný výraz přesně v té podobě, v jaké ho uživatel napsal. Stejně spolehlivě se přenášejí i údaje, se kterými dashboard načítá poslední úkoly týmu a komentáře k úkolům.
Projektů, které používají GitHub, GitLab, Forgejo nebo YouTrack, se změna netýká. Jejich chování zůstává stejné.
Closes #701
🤖 Generated with Claude Code