Desktop: custom context menus everywhere, never the browser's menu

One ContextMenu in the design system (keyboard, type-ahead, submenus, check items,
disabled reasons, Shift+F10 / Menu key, viewport placement, light and dark). The
native menu is prevented globally; text fields keep Cut / Copy / Paste / Select all.
Menus on sidebar and portfolio apps, app hero, releases, store art, live art,
reviews, checks, editor fields, catalog, prices, accounts, app folders, ignored.
This commit is contained in:
CRTkafa 2026-10-23 08:59:14 +08:00
parent 944b24fe59
commit dece83c3e8
23 changed files with 839 additions and 28 deletions

View file

@ -2019,4 +2019,57 @@ export const en = {
'v2rel.tfInGroups': "in {count} groups",
'v2rel.tfSplit': "{internal} internal · {external} external",
'v2rel.tfUsable': "Ready to test",
// context menus (ui/ContextMenu.tsx)
'cm.cut': "Cut",
'cm.copy': "Copy",
'cm.paste': "Paste",
'cm.selectAll': "Select all",
'cm.copied': "Copied",
'cm.open': "Open",
'cm.openTab': "Open tab",
'cm.openConsole': "Open in console",
'cm.openIn': "Open in {place}",
'cm.openFolder': "Open folder",
'cm.folderFailed': "Could not open the folder",
'cm.copyName': "Name",
'cm.copyBundleId': "Bundle id",
'cm.copyPackage': "Package name",
'cm.copyAscId': "App Store Connect app id",
'cm.copyPath': "Copy path",
'cm.refreshReads': "Read again from the stores",
'cm.refreshing': "Reading {name} again",
'cm.ignoredNoReads': "Ignored apps are not read",
'cm.ignore': "Ignore",
'cm.showIgnored': "Show ignored apps",
'cm.copyVersion': "Copy version",
'cm.copyBuild': "Copy build",
'cm.copyVersionCode': "Copy version code",
'cm.preview': "Preview",
'cm.openFile': "Open file",
'cm.reveal': "Show in folder",
'cm.readAgain': "Read again",
'cm.reading': "Reading…",
'cm.openDraft': "Show reply draft",
'cm.copyReview': "Copy review",
'cm.copyReply': "Copy the published reply",
'cm.copyDraft': "Copy the draft",
'cm.revealEvidence': "Show the file",
'cm.copyTitle': "Copy title",
'cm.copyFix': "Copy the fix",
'cm.copySkill': "Copy skill name",
'cm.copyEvidence': "Copy evidence lines",
'cm.copyCode': "Copy check code",
'cm.copyValue': "Copy value",
'cm.notChanged': "Not changed",
'cm.copyProductId': "Copy product id",
'cm.showPrices': "Show prices",
'cm.copyRow': "Copy row",
'cm.showPerRegion': "Show per region",
'cm.copyPriceOf': "Copy {store} price",
'cm.copyRegion': "Copy region code",
'cm.busy': "Another action is running",
'cm.copyPrincipal': "Service account / key",
'cm.copyProfile': "Profile name",
'cm.openAccounts': "Open Studios & accounts",
} as const;

View file

@ -2021,4 +2021,57 @@ export const tr: Record<keyof typeof en, string> = {
'v2rel.tfInGroups': "{count} grupta",
'v2rel.tfSplit': "{internal} dahili · {external} harici",
'v2rel.tfUsable': "Teste hazır",
// context menus (ui/ContextMenu.tsx)
'cm.cut': "Kes",
'cm.copy': "Kopyala",
'cm.paste': "Yapıştır",
'cm.selectAll': "Tümünü seç",
'cm.copied': "Kopyalandı",
'cm.open': "Aç",
'cm.openTab': "Sekme aç",
'cm.openConsole': "Konsolda aç",
'cm.openIn': "{place} içinde aç",
'cm.openFolder': "Klasörü aç",
'cm.folderFailed': "Klasör açılamadı",
'cm.copyName': "Ad",
'cm.copyBundleId': "Bundle id",
'cm.copyPackage': "Paket adı",
'cm.copyAscId': "App Store Connect uygulama kimliği",
'cm.copyPath': "Yolu kopyala",
'cm.refreshReads': "Mağazalardan yeniden oku",
'cm.refreshing': "{name} yeniden okunuyor",
'cm.ignoredNoReads': "Yok sayılan uygulamalar okunmaz",
'cm.ignore': "Yok say",
'cm.showIgnored': "Yok sayılanları göster",
'cm.copyVersion': "Sürümü kopyala",
'cm.copyBuild': "Build'i kopyala",
'cm.copyVersionCode': "Sürüm kodunu kopyala",
'cm.preview': "Önizle",
'cm.openFile': "Dosyayı aç",
'cm.reveal': "Klasörde göster",
'cm.readAgain': "Yeniden oku",
'cm.reading': "Okunuyor…",
'cm.openDraft': "Yanıt taslağını göster",
'cm.copyReview': "Yorumu kopyala",
'cm.copyReply': "Yayındaki yanıtı kopyala",
'cm.copyDraft': "Taslağı kopyala",
'cm.revealEvidence': "Dosyayı göster",
'cm.copyTitle': "Başlığı kopyala",
'cm.copyFix': "Düzeltmeyi kopyala",
'cm.copySkill': "Skill adını kopyala",
'cm.copyEvidence': "Kanıt satırlarını kopyala",
'cm.copyCode': "Kontrol kodunu kopyala",
'cm.copyValue': "Değeri kopyala",
'cm.notChanged': "Değişmedi",
'cm.copyProductId': "Ürün kimliğini kopyala",
'cm.showPrices': "Fiyatları göster",
'cm.copyRow': "Satırı kopyala",
'cm.showPerRegion': "Bölge bölge göster",
'cm.copyPriceOf': "{store} fiyatını kopyala",
'cm.copyRegion': "Bölge kodunu kopyala",
'cm.busy': "Başka bir işlem sürüyor",
'cm.copyPrincipal': "Hizmet hesabı / anahtar",
'cm.copyProfile': "Profil adı",
'cm.openAccounts': "Stüdyolar ve hesapları aç",
};