chore(frontend): introduce prettier + eslint and prune unused code
Backend CI / Backend (push) Has been cancelled
Frontend CI / Frontend (push) Failing after 1m39s

- Add Prettier 3 with prettier-plugin-organize-imports (sorts/removes unused imports)
- Add ESLint 10 flat config with typescript-eslint + eslint-plugin-vue + eslint-config-prettier
- Add root scripts: format, format:check, lint, lint:fix
- Reformat 257 files across admin-web, ops-web, desktop-client, packages
- Remove unused locals/exports flagged by --noUnusedLocals/--noUnusedParameters
- Fix duplicate localTabLabel key, surrogate-pair regex u-flag, NBSP literal in regex
- Skip server/ (Go) and apps/browser-extension/ (deprecated per ADR)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-01 20:39:09 +08:00
parent 21c7892ee4
commit 162abdc97c
258 changed files with 42261 additions and 37556 deletions
+19 -20
View File
@@ -1,42 +1,42 @@
import type { ArticleDetail } from "@geo/shared-types";
import type { ArticleDetail } from '@geo/shared-types'
export interface ArticleActionState {
showPublish: boolean;
showEdit: boolean;
showPreview: boolean;
showCopy: boolean;
showDelete: boolean;
showPublish: boolean
showEdit: boolean
showPreview: boolean
showCopy: boolean
showDelete: boolean
}
export function resolveArticleActionState(generateStatus?: string | null): ArticleActionState {
if (generateStatus === "completed") {
if (generateStatus === 'completed') {
return {
showPublish: true,
showEdit: true,
showPreview: true,
showCopy: true,
showDelete: true,
};
}
}
if (generateStatus === "draft") {
if (generateStatus === 'draft') {
return {
showPublish: false,
showEdit: true,
showPreview: false,
showCopy: false,
showDelete: true,
};
}
}
if (generateStatus === "failed") {
if (generateStatus === 'failed') {
return {
showPublish: false,
showEdit: false,
showPreview: false,
showCopy: false,
showDelete: true,
};
}
}
return {
@@ -45,15 +45,14 @@ export function resolveArticleActionState(generateStatus?: string | null): Artic
showPreview: true,
showCopy: false,
showDelete: true,
};
}
}
export function buildArticleClipboardContent(detail: Pick<ArticleDetail, "title" | "markdown_content">): string {
return [
detail.title ? `# ${detail.title}` : "",
detail.markdown_content ?? "",
]
export function buildArticleClipboardContent(
detail: Pick<ArticleDetail, 'title' | 'markdown_content'>,
): string {
return [detail.title ? `# ${detail.title}` : '', detail.markdown_content ?? '']
.filter(Boolean)
.join("\n\n")
.trim();
.join('\n\n')
.trim()
}