Repository navigation
Windows: YouTrack integration (self-hosted, follows a saved search) - #82
Open
AlbertMcAvoy wants to merge 6 commits into
Open
AlbertMcAvoy wants to merge 6 commits into
AlbertMcAvoy wants to merge 6 commits into
Conversation
AlbertMcAvoy
force-pushed
the
feature/youtrack-integration
branch
3 times, most recently
from
October 7, 2026 15:33
8b12feb to
4cd016d
Compare
AlbertMcAvoy
force-pushed
the
feature/youtrack-integration
branch
3 times, most recently
from
October 16, 2026 07:19
7f66fa3 to
05d6a23
Compare
AlbertMcAvoy
force-pushed
the
feature/youtrack-integration
branch
from
October 20, 2026 07:18
05d6a23 to
a8a0711
Compare
…card The GitLab pill (Louis-CFM#831) shows GitHub's card: your merge requests and their CI, the reviews asked of you, the default branch's CI, a year of activity. This adds what happens on GitLab while you're elsewhere. - The news, every minute: a new to-do (review requested, assigned, mentioned, a pipeline failing on your MR…), your MRs approved or merged, someone else commenting on or updating an MR you're involved in, and every pipeline you started finishing, in the projects of your week. Everything new in a minute is one notification, which opens its own card with an orange Mochi; its Details unfold what happened (the comment, the commits, who approved, what started a pipeline, how long it took, which jobs failed). - An Inbox row under the card's three: the pending to-dos, and the last ten pieces of news, kept through a restart (news-gitlab.json, next to the log), each unfolding like the notification's. - Settings → Integrations → GitLab → Projects → Choose…: the user's projects by group; ticked ones narrow the news, the merge requests and the default-branch CI to them. None ticked follows every project. - One poller for the pill: the news every minute, the pulse inside it every five minutes (or after a minute when a list is opened, or at once for other followed projects). Every GitLab request goes through a client that never follows a redirect, so the token stays on the instance, and the instance URL no longer reaches the island. - The forge card takes an optional fourth row (ForgeCardOptions.extra) and its detail; the overview grows to 180 px while it is shown. - reqwest also trusts the system's certificate store: a self-hosted GitLab often sits behind a company CA. - Every string in the twelve languages. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A self-hosted YouTrack, its URL and a permanent token in the Credential Manager, and a saved search picked in the settings from the user's list. Every minute the search's latest issues are read: one created or updated by someone else since the last poll is news, and a minute's news is one notification, opening the same card as GitLab's with a pink Mochi. The pill lists five issues and scrolls through the rest; the overview grows to 210 px for it. Its last ten pieces of news stay listed, through a restart too, like GitLab's (news-youtrack.json, tied to the instance and the search). Read-only. GitLab's news card, Mochi's colour on it and the news bookkeeping are shared with YouTrack now. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When a poll has news, one more request reads YouTrack's activity stream
over the followed search since the last poll, and each piece of news
carries what someone else changed on its issue: a field's old and new
value ("State: In Progress → Fixed"), a comment's first words, the title
or description edited, an attachment, a link. Nothing more is asked when
nothing changed, and the news still goes out if that request fails.
It unfolds the way GitLab's does: the notification's Details, and a
click on a piece of news in the pill.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Spent time, an estimation and other duration fields come through the activity stream as a number of minutes, and showed as bare integers. The field's type is now asked for (`period`), falling back on the usual names where an instance doesn't give it, and such values read "1h 30m". Hours, not days: how long a day is is the instance's admin setting. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Everything YouTrack shows goes through the translation tables, in the ten languages: the card, its count and tooltips, the settings field and the saved-search picker, the errors, and the news the poller writes (created, updated, and what changed: comments, title, description, attachments, links, a field emptied). Durations read like GitLab's now, "1 h 30 min" rather than "1h 30m", so that both translate the same way. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Every string in every language: the YouTrack strings get German and Turkish, informal like the rest of the app in them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AlbertMcAvoy
force-pushed
the
feature/youtrack-integration
branch
from
October 27, 2026 08:34
a8a0711 to
72418fe
Compare
This branch has not been deployed
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.
What it does
Adds a YouTrack pill to the Windows island, for a self-hosted instance. It follows one saved search that you pick in the settings, and notifies you when an issue of that search is:
Your own changes don't notify you: they already happened in front of you.
Everything new in the same minute arrives as one notification, like GitLab's: one sound, one badge, "N YouTrack updates" with the list, and the same news card as GitLab's, with a pink Mochi.
The card lists the search's issues, five rows on screen and the rest a scroll away:
Every row opens its issue. "N issues" opens the search in YouTrack, and ↗ / "Open YouTrack" open the instance. The overview grows to 210 px while this card is shown, as it does for GitLab's.
Read-only: Coucou never changes an issue.
Setup
Settings → Integrations → YouTrack:
https://hostorhttps://host/youtrack. Onlyhttp(s)://is accepted.The three values live in the Windows Credential Manager, like GitLab's. Nothing is polled until the token exists and the pill is switched on, and Pause stops it like the others. Picking a search refreshes the pill right away, only if it is switched on.
How
poll_youtrackinintegrations.rsruns every 60 s and makes 3 requests:users/me(checks the URL and the token, and gives your login);savedQueries/{id}, the followed search's text;issues?query=…, its 50 most recently updated issues.sort by:clause, and sorted byupdated descinstead. Otherwise a search sorted by priority would decide which 50 issues are read, and recent changes could fall outside them.youtrack_fresh, with tests.updatedit saw. An issue above it is news: "Created" if itscreatedis above it too, "Updated" otherwise.updater. If that's you, it isn't news.[A-Za-z0-9._-]is accepted.users/me), saved search gone (404), a search YouTrack can't run (400), no connection. As for GitLab, the connection error is printed without the URL.buildNews), Mochi taking the integration's colour on it (NEWS_VIEWS), and the half-hour news bookkeeping (recent_news,news_event). GitLab's behaviour is unchanged, and its tests still pass.Testing
Windows 11 (build 26200).
cargo test -p coucoupasses with no new warnings, andtscis clean. New tests cover:sort by:/order by:clause, and non-ASCII text survives the cut.savedQueries, and the 404 of a deleted saved search.Screenshot