Skip to content

Commit 6451261

Browse files
MarkShawn2020claude
andcommitted
chore: 从 code-inspector 迁移到 lovinsp
- 卸载 code-inspector-plugin - 安装 lovinsp 1.4.12 - 更新 vite.config.ts 插件配置 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent c81282f commit 6451261

4 files changed

Lines changed: 105 additions & 93 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
"@types/react": "^19.1.8",
2929
"@types/react-dom": "^19.1.6",
3030
"@vitejs/plugin-react": "^4.6.0",
31-
"code-inspector-plugin": "https://npm.cloudsmith.io/mark/code-inspector/code-inspector-plugin/-/code-inspector-plugin-1.4.2.tgz",
31+
"lovinsp": "^1.4.12",
3232
"typescript": "~5.8.3",
3333
"vite": "^7.0.4"
3434
}

pnpm-lock.yaml

Lines changed: 78 additions & 79 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/App.tsx

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1805,11 +1805,11 @@ function SessionList({
18051805
const [projectContext, setProjectContext] = useState<ContextFile[]>([]);
18061806
const [loading, setLoading] = useState(true);
18071807
const [contextTab, setContextTab] = useState<"global" | "project">("project");
1808-
const [selectMode, setSelectMode] = useState(false);
1808+
const [selectMode, setSelectMode] = usePersistedState("lovcode:sessionSelectMode", false);
18091809
const [selectedIds, setSelectedIds] = useState<Set<string>>(new Set());
18101810
const [exporting, setExporting] = useState(false);
18111811
const [hideEmptySessions, setHideEmptySessions] = usePersistedState("lovcode-hide-empty-sessions", false);
1812-
const [userPromptsOnly, setUserPromptsOnly] = useState(false);
1812+
const [userPromptsOnly, setUserPromptsOnly] = usePersistedState("lovcode:userPromptsOnly", false);
18131813

18141814
const filteredSessions = hideEmptySessions ? sessions.filter(s => s.message_count > 0) : sessions;
18151815

@@ -2193,8 +2193,8 @@ function ExportDialog({ open, onOpenChange, messages, processContent, defaultNam
21932193

21942194
<div className="flex-1 overflow-auto min-h-0 mt-4">
21952195
<div className="text-xs text-muted mb-2">Preview</div>
2196-
<div className="bg-card-alt rounded-lg p-4 text-sm text-ink overflow-auto max-h-[300px] font-mono whitespace-pre-wrap">
2197-
{preview.slice(0, 2000)}{preview.length > 2000 && '...'}
2196+
<div className="bg-card-alt rounded-lg p-4 text-sm text-ink overflow-auto font-mono whitespace-pre-wrap">
2197+
{preview.slice(0, 5000)}{preview.length > 5000 && '...'}
21982198
</div>
21992199
</div>
22002200

@@ -2231,7 +2231,8 @@ function MessageView({
22312231
const [markdownPreview, setMarkdownPreview] = usePersistedState("lovcode:markdownPreview", false);
22322232
const [hideIntermediate, setHideIntermediate] = usePersistedState("lovcode:hideIntermediate", false);
22332233
const [selectedIds, setSelectedIds] = useState<Set<string>>(new Set());
2234-
const [selectMode, setSelectMode] = useState(false);
2234+
const [selectMode, setSelectMode] = usePersistedState("lovcode:selectMode", false);
2235+
const [selectPreset, setSelectPreset] = usePersistedState<"all" | "user" | "none">("lovcode:selectPreset", "all");
22352236

22362237
useEffect(() => {
22372238
invoke<Message[]>("get_session_messages", { projectId, sessionId })
@@ -2247,6 +2248,18 @@ function MessageView({
22472248
? messages.filter(m => !m.is_meta && !m.is_tool)
22482249
: messages;
22492250

2251+
// Auto-apply selection preset when messages load or filter changes
2252+
useEffect(() => {
2253+
if (!selectMode || filteredMessages.length === 0) return;
2254+
if (selectPreset === "all") {
2255+
setSelectedIds(new Set(filteredMessages.map(m => m.uuid)));
2256+
} else if (selectPreset === "user") {
2257+
setSelectedIds(new Set(filteredMessages.filter(m => m.role === "user").map(m => m.uuid)));
2258+
} else {
2259+
setSelectedIds(new Set());
2260+
}
2261+
}, [filteredMessages, selectMode, selectPreset]);
2262+
22502263
const toggleSelect = (uuid: string) => {
22512264
setSelectedIds(prev => {
22522265
const next = new Set(prev);
@@ -2257,15 +2270,15 @@ function MessageView({
22572270
};
22582271

22592272
const selectAll = () => {
2260-
setSelectedIds(new Set(filteredMessages.map(m => m.uuid)));
2273+
setSelectPreset("all");
22612274
};
22622275

22632276
const selectUserOnly = () => {
2264-
setSelectedIds(new Set(filteredMessages.filter(m => m.role === "user").map(m => m.uuid)));
2277+
setSelectPreset("user");
22652278
};
22662279

22672280
const deselectAll = () => {
2268-
setSelectedIds(new Set());
2281+
setSelectPreset("none");
22692282
};
22702283

22712284
const getExportMessages = () => {
@@ -2328,19 +2341,19 @@ function MessageView({
23282341
<div className="flex items-center gap-2 mt-3">
23292342
<button
23302343
onClick={selectAll}
2331-
className="text-xs px-2 py-1 rounded bg-card-alt hover:bg-border text-muted hover:text-ink transition-colors"
2344+
className={`text-xs px-2 py-1 rounded transition-colors ${selectPreset === "all" ? "bg-primary text-primary-foreground" : "bg-card-alt hover:bg-border text-muted hover:text-ink"}`}
23322345
>
23332346
All
23342347
</button>
23352348
<button
23362349
onClick={selectUserOnly}
2337-
className="text-xs px-2 py-1 rounded bg-card-alt hover:bg-border text-muted hover:text-ink transition-colors"
2350+
className={`text-xs px-2 py-1 rounded transition-colors ${selectPreset === "user" ? "bg-primary text-primary-foreground" : "bg-card-alt hover:bg-border text-muted hover:text-ink"}`}
23382351
>
23392352
User
23402353
</button>
23412354
<button
23422355
onClick={deselectAll}
2343-
className="text-xs px-2 py-1 rounded bg-card-alt hover:bg-border text-muted hover:text-ink transition-colors"
2356+
className={`text-xs px-2 py-1 rounded transition-colors ${selectPreset === "none" ? "bg-primary text-primary-foreground" : "bg-card-alt hover:bg-border text-muted hover:text-ink"}`}
23442357
>
23452358
None
23462359
</button>

vite.config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { defineConfig } from "vite";
22
import react from "@vitejs/plugin-react";
33
import tailwindcss from "@tailwindcss/vite";
4-
import { codeInspectorPlugin } from 'code-inspector-plugin';
4+
import { LovinspPlugin } from 'lovinsp';
55

66

77
// @ts-expect-error process is a nodejs global
@@ -10,7 +10,7 @@ const host = process.env.TAURI_DEV_HOST;
1010
// https://vite.dev/config/
1111
export default defineConfig(async () => ({
1212
plugins: [
13-
codeInspectorPlugin({ bundler: "vite" }),
13+
LovinspPlugin({ bundler: "vite" }),
1414
react(), tailwindcss()],
1515

1616
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`

0 commit comments

Comments
 (0)