diff --git a/apps/api/src/index.ts b/apps/api/src/index.ts index 822c941b..52bc0b16 100644 --- a/apps/api/src/index.ts +++ b/apps/api/src/index.ts @@ -543,8 +543,8 @@ app.delete("/api/v1/api-tokens/:id", async (c) => { const actor = getAuditActor(c); await c.env.DB.batch([ - c.env.DB.prepare(`UPDATE api_tokens SET is_revoked = 1 WHERE id = ?`).bind(id), - auditStatement(c.env.DB, actor.actorType, actor.actorId, "api_token.revoke", "api_token", id, {}), + c.env.DB.prepare(`DELETE FROM api_tokens WHERE id = ?`).bind(id), + auditStatement(c.env.DB, actor.actorType, actor.actorId, "api_token.delete", "api_token", id, {}), ]); return c.json({ ok: true }); diff --git a/apps/web/src/components/settings/McpConfigCard.tsx b/apps/web/src/components/settings/McpConfigCard.tsx index 319c03a7..c151ddf8 100644 --- a/apps/web/src/components/settings/McpConfigCard.tsx +++ b/apps/web/src/components/settings/McpConfigCard.tsx @@ -307,7 +307,7 @@ const TokenList = ({ tokens, isLoading, isDeleting, onDelete }: TokenListProps) className="h-9 w-full shrink-0 sm:w-9" title={t("mcp.deleteToken")} aria-label={t("mcp.deleteToken")} - disabled={token.isRevoked || isDeleting} + disabled={isDeleting} onClick={() => onDelete(token)} > diff --git a/apps/web/src/i18n/resources/en-US.ts b/apps/web/src/i18n/resources/en-US.ts index eb04335a..7b0dbe96 100644 --- a/apps/web/src/i18n/resources/en-US.ts +++ b/apps/web/src/i18n/resources/en-US.ts @@ -502,7 +502,7 @@ export const enUS = { scopeTitle: "Token scopes", selectedScopes: "{{selected}}/{{total}} selected", loadingTokens: "Loading token list...", - emptyTokens: "No active API tokens", + emptyTokens: "No API tokens", noScope: "No scopes", lastUsedAt: "Last used: {{time}}", neverUsed: "Never used", @@ -513,7 +513,7 @@ export const enUS = { description: "Allow AI Agents to read and organize your notes.", namePlaceholder: "Token purpose, e.g. MCP Agent", createToken: "Generate token", - activeTokens: "Active tokens", + activeTokens: "Token list", deleteConfirmTitle: "Delete token “{{name}}”?", deleteConfirmDescription: "This cannot be undone. Once deleted, all clients using this token for API or MCP calls will immediately lose access.", deleteConfirmLabel: "Delete token", diff --git a/apps/web/src/i18n/resources/zh-CN.ts b/apps/web/src/i18n/resources/zh-CN.ts index 7804ca2d..65ce53a6 100644 --- a/apps/web/src/i18n/resources/zh-CN.ts +++ b/apps/web/src/i18n/resources/zh-CN.ts @@ -502,7 +502,7 @@ export const zhCN = { scopeTitle: "Token 权限范围", selectedScopes: "已选择 {{selected}}/{{total}}", loadingTokens: "正在加载 Token 列表...", - emptyTokens: "暂无活跃的 API Token", + emptyTokens: "暂无 API Token", noScope: "无权限", lastUsedAt: "上次调用时间:{{time}}", neverUsed: "从未被调用", @@ -513,7 +513,7 @@ export const zhCN = { description: "让 AI Agent 可以读取和整理你的笔记。", namePlaceholder: "Token 用途,例如:MCP Agent", createToken: "生成 Token", - activeTokens: "活跃 Token", + activeTokens: "Token 列表", deleteConfirmTitle: "确定要删除 Token「{{name}}」吗?", deleteConfirmDescription: "删除操作不可逆。一旦删除,使用此 Token 进行 API 或 MCP 调用的一切客户端将立即失效并被拒绝访问。", deleteConfirmLabel: "确认删除",