Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions frontend/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,12 @@ module.exports = {
'src/v2/components/V2Inspector.tsx',
'src/v2/components/V2PodsSidebar.tsx',
'src/v2/components/V2YourTeamPage.tsx',
// Connectors + Tools (TASK-164) — the channels list and the grants list
// rendered English defaults under zh-CN: neither file was in this manifest,
// so translationKeys.test.ts never saw the keys they were using.
'src/v2/components/V2ConnectorsPage.tsx',
'src/v2/components/V2ConnectorTools.tsx',
'src/v2/utils/localizeRelativeTime.ts',
],
rules: {
'i18next/no-literal-string': ['error', {
Expand Down
190 changes: 188 additions & 2 deletions frontend/src/i18n/locales/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1877,13 +1877,103 @@
"rowAttention": "escalations reach the channel",
"rowMirror": "every agent line reaches the channel",
"rowRelayOff": "messages stay in the pod",
"sinceWhen": "since {{rel}}",
"age": {
"added": "added {{age}}",
"started": "started {{age}}",
"since": "since {{age}}",
"paused": "paused {{age}}",
"slackAnswered": "Slack answered {{age}}"
}
},
"activeTag": "active",
"alreadyBound": "Your {{connector}} channel is bound to {{pod}}. Other pods reach it through \"Pods that reach this channel\" — switch a pod on there.",
"ask": "Ask",
"askOperator": "ask your operator",
"attentionHint": "Only escalations and the lead agent reach the channel.",
"availableLine": "Connect {{label}} to a pod.",
"availableSlack": "one click in your workspace",
"availableTelegram": "one message",
"cancel": "Cancel",
"channelDetails": "Channel details",
"channelSees": "What the channel sees",
"channels": "Your channels",
"codeError": "Could not create a new code.",
"codeExpired": "The enable code expired.",
"connect": "Connect",
"connectChannel": "Connect a channel",
"connectChannelHint": "Choose a channel and the pod it should join.",
"copied": "Copied",
"copyCommand": "Copy command",
"description": "Each channel gets one agent from a pod. It answers there in its own name; the rest of the team stays behind it.",
"errorLine": "The connection dropped.",
"errorReconnect": "reconnect to resume",
"gateLead": "Lead agent for {{pod}}",
"gateMode": "Mode for {{pod}}",
"gateOff": "off",
"gateSwitch": "Relay {{pod}}",
"gatesTitle": "Pods that reach this channel",
"installInProgress": "Still setting up — try again in a moment.",
"installInProgressForPod": "Still setting up for {{pod}} — try again in a moment.",
"leadAny": "Any agent leads",
"makeActive": "Make active",
"manage": "Manage",
"mirrorHint": "Every agent message reaches the channel.",
"mode": "Relay mode",
"modeAttention": "Attention",
"modeDefault": "Default",
"modeMirror": "Mirror",
"newCode": "New code",
"nextStep": "Next step",
"noPods": "Join a pod first.",
"notConnected": "not connected",
"notEnabled": "Not enabled on this instance.",
"notLinkedDetail": "your messages have nowhere to go",
"notLinkedLine": "{{title}} · not linked to a pod",
"notRelaying": "not relaying",
"notYetLine": "Not yet. Tell us which channel you need and we build it next.",
"nothingSent": "nothing was sent",
"pausedEyebrow": "Paused",
"pausedLine": "Paused by an administrator.",
"pausedNote": "Only an administrator can resume it. Your relay, mode and pods are kept.",
"pausedRefusal": "An administrator paused this connector. Ask your operator.",
"pausedShort": "Paused.",
"pickPod": "Pick a pod",
"pickWhere": "Pick where your messages go",
"provider": "Channel provider",
"providerNotConfigured": "{{connector}} is not enabled on this instance. Ask your operator.",
"recordGone": "The channel record is gone.",
"relayOffHint": "Messages stay in the pod.",
"remove": "Remove",
"removeConfirm": "Really remove — the channel goes quiet",
"removeError": "Could not remove the channel.",
"removeSlow": "Removal is taking longer than it should.",
"removing": "Removing…",
"retry": "Retry",
"retryOrRemove": "retry, or remove it",
"retryRebuilds": "retry rebuilds it",
"retryRemove": "Retry remove",
"serverLetGo": "the server let go of it",
"settingUp": "Setting up…",
"setupFailed": "Setup didn’t finish.",
"setupSlow": "Setup is taking longer than it should.",
"showCode": "Show code",
"slackAuthorize": "Authorize in Slack",
"slackAuthorizeDetail": "one click in Slack",
"slackAuthorizeHint": "Authorize Commonly in your Slack workspace to connect your DM.",
"slackAuthorizing": "Opening Slack…",
"slackCallbackError": "Slack authorization didn’t complete — try again.",
"slackConfirm": "Confirm",
"slackConfirmConnection": "Confirm connection",
"slackConfirmDetail": "waiting for you to confirm",
"slackConfirmHint": "{{workspace}} wants to connect as {{user}}.",
"slackConfirmRow": "{{workspace}} says {{user}} connected — is that you?",
"slackReject": "This is not me",
"title": "Connectors",
"viewChannel": "View {{channel}}",
"waitingServer": "waiting for the server",
"linkedLine": "{{title}} · linked to {{pod}}",
"waitingToConnect": "{{label}} is waiting to connect.",
"enableCommand": "/commonly-enable {{code}}"
},
"artifacts": {
"title": "Artifacts",
Expand Down Expand Up @@ -1920,11 +2010,107 @@
"loadFailed": "Could not load artifacts."
},
"tools": {
"grantedAge": "granted {{age}}"
"grantedAge": "granted {{age}}",
"aPod": "a pod",
"aSeat": "an agent",
"add": "Add",
"addTool": "Add {{tool}}",
"adminSetup": "administrator setup",
"agents": "agents",
"agentsAllowed": "agents allowed",
"ask": "Ask",
"asksEveryWrite": "every write asks first",
"asksFirst": "asks a person first",
"asksList": "{{tools}} ask first",
"asksNothing": "nothing asks first",
"awaiting": "awaiting a person",
"budget": "budget",
"budgetTotal": "{{calls}} calls",
"budgetWindow": "{{calls}} calls per {{window}}",
"by": "by",
"calls": "calls",
"cancel": "Cancel",
"changeAccess": "Change access",
"connection": "connection",
"counts": "Call counts",
"days": "in {{count}} days",
"endedExpired": "Expired {{rel}}.",
"endedRevoked": "Revoked {{rel}}.",
"endedRevokedBy": "Revoked by {{member}} {{rel}}.",
"ends": "ends",
"endsRel": "Ends {{rel}}.",
"expiredLine": "expired {{rel}}",
"filter": "Show",
"githubAppError": "Could not install the GitHub App.",
"githubAppOwnedByOther": "This GitHub App is already installed by another administrator.",
"githubAppRequired": "Enter the installation ID, owner, and repository.",
"githubAppSetupHint": "Connect the GitHub App once so people can grant GitHub tools to their pods.",
"grant": "grant",
"grantAct": "Grant",
"grantAgain": "Grant again",
"grantDetails": "Grant details",
"grantError": "Could not grant it.",
"grantedByOn": "Granted by {{member}} {{rel}}.",
"grantedCount": "{{count}} granted",
"grantedOn": "Granted {{rel}}.",
"grantedTo": "granted to",
"granting": "Granting…",
"installGitHubApp": "Install GitHub App",
"installationId": "installation ID",
"installingGitHubApp": "Installing…",
"keep": "Keep it",
"loading": "Loading tools…",
"manage": "Manage",
"mayUse": "{{agents}} may use it",
"mode": "what it may do",
"modeRead": "read",
"modeWrite": "read and write",
"modeWriteConfirm": "read and write, ask first",
"moreCount": "{{count}} more",
"noConnection": "install the GitHub App first · an admin does this once",
"noSeats": "no agent in this pod yet",
"noTools": "no tools on the allow-list",
"nobody": "no agent",
"notEnabled": "not enabled on this instance · ask your operator",
"notGranted": "not granted",
"nothingMatches": "Nothing matches.",
"outcomeFailed": "failed",
"outcomeOk": "ok",
"outcomeRefused": "refused",
"outcomeSuperseded": "answered",
"owner": "owner",
"readOrWrite": "read, or read and write",
"refused": "refused",
"repository": "repository",
"revoke": "Revoke",
"revokeConfirm": "Yes, revoke it",
"revokeError": "Could not revoke the grant.",
"revokeOld": "Revoke the old grant",
"revokedByLine": "revoked by {{member}} {{rel}}",
"revokedLine": "revoked {{rel}}",
"search": "Search tools",
"segAll": "All",
"segGranted": "Granted",
"segNotYet": "Not yet",
"staleAfterChange": "The new grant is live. This old one still is too — its revoke did not go through.",
"title": "Tools",
"toRoom": "pod",
"trail": "trail",
"trailEmpty": "No calls yet.",
"trailError": "Could not read the trail.",
"viewGrant": "View {{tool}} in {{pod}}",
"listSeparator": ", "
},
"time": {
"age": {
"justNow": "just now",
"inAMoment": "in a moment",
"minutesAgo": "{{n}}m ago",
"hoursAgo": "{{n}}h ago",
"daysAgo": "{{n}}d ago",
"minutesFromNow": "{{n}}m from now",
"hoursFromNow": "{{n}}h from now",
"daysFromNow": "{{n}}d from now",
"minutes": "{{n}}m",
"hours": "{{n}}h",
"days": "{{n}}d"
Expand Down
Loading
Loading