enhance: replace tea CLI with gt (#40036)

tea has been replaced by [gitea-cli](https://gitea.com/gitea/cli)
(`gt`), which reuses tea's OAuth2 client ID.

- The repository clone panel now offers `gt repo clone owner/repo` under
a "Gitea CLI" tab.
- The built-in OAuth2 application is renamed from `tea` to `gitea-cli`.
`tea` in `[oauth2] DEFAULT_APPLICATIONS` is still accepted as an alias,
so existing configs keep working.
- Instances that already registered the app keep its stored display name
"tea".
This commit is contained in:
bircni authored and GitHub committed 2026-11-01 12:47:10 +00:00
1 parent c62e07f18a
commit d3021b69ee
11 files changed
+36 -31

No files matched your search

+10 -10
View File
@@ -59,24 +59,24 @@ function initRepoCloneButtonsCombo(parent: Element) {
const tabHttps = parent.querySelector('.repo-clone-https');
const tabSsh = parent.querySelector('.repo-clone-ssh');
const tabTea = parent.querySelector('.repo-clone-tea');
const tabCli = parent.querySelector('.repo-clone-cli');
const listOpenWithEditorApps = parent.querySelector('.repo-clone-with-apps');
// not every tab exists in every panel, eg: the admin may disable HTTP/SSH, and the empty repo page has no Tea CLI tab
const tabByScheme: Record<string, Element | null> = {https: tabHttps, ssh: tabSsh, tea: tabTea};
// not every tab exists in every panel, eg: the admin may disable HTTP/SSH, and the empty repo page has no Gitea CLI tab
const tabByScheme: Record<string, Element | null> = {https: tabHttps, ssh: tabSsh, cli: tabCli};
const updateClonePanelUi = function() {
let scheme = localUserSettings.getString('repo-clone-protocol');
// fall back to the first available tab when the preferred scheme's tab is absent (unset preference, or disabled protocol)
if (!tabByScheme[scheme]) {
scheme = ['https', 'ssh', 'tea'].find((s) => tabByScheme[s]) ?? '';
scheme = ['https', 'ssh', 'cli'].find((s) => tabByScheme[s]) ?? '';
}
const isHttps = scheme === 'https';
const isSsh = scheme === 'ssh';
const isTea = scheme === 'tea';
const isCli = scheme === 'cli';
if (listOpenWithEditorApps) {
toggleElem(listOpenWithEditorApps, !isTea); // don't show the "Open with editor apps" list when "Tea" clone is selected
toggleElem(listOpenWithEditorApps, !isCli); // don't show the "Open with editor apps" list when "Gitea CLI" clone is selected
}
if (tabHttps) {
@@ -87,8 +87,8 @@ function initRepoCloneButtonsCombo(parent: Element) {
if (tabSsh) {
tabSsh.classList.toggle('active', isSsh);
}
if (tabTea) {
tabTea.classList.toggle('active', isTea);
if (tabCli) {
tabCli.classList.toggle('active', isCli);
}
const tab = tabByScheme[scheme];
@@ -118,8 +118,8 @@ function initRepoCloneButtonsCombo(parent: Element) {
localUserSettings.setString('repo-clone-protocol', 'ssh');
updateClonePanelUi();
});
tabTea?.addEventListener('click', () => {
localUserSettings.setString('repo-clone-protocol', 'tea');
tabCli?.addEventListener('click', () => {
localUserSettings.setString('repo-clone-protocol', 'cli');
updateClonePanelUi();
});
elCloneUrlInput.addEventListener('focus', () => {