Rename project from "Claude Code Context" to "claude-devtools" across all relevant files and documentation. Update configuration paths and metadata to reflect the new project name, ensuring consistency in branding and user experience.
This commit is contained in:
parent
6ca7bed2f5
commit
a8abe52eb2
27 changed files with 44 additions and 48 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
name: ccc:chatgroup-architecture
|
name: claude-devtools:chatgroup-architecture
|
||||||
description: ChatGroup architecture — how conversation data flows from raw JSONL to rendered chat groups. Use when working on UserGroup, AIGroup, SystemGroup, display items, tool linking, chunks, or the rendering hierarchy.
|
description: ChatGroup architecture — how conversation data flows from raw JSONL to rendered chat groups. Use when working on UserGroup, AIGroup, SystemGroup, display items, tool linking, chunks, or the rendering hierarchy.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
name: ccc:design-system
|
name: claude-devtools:design-system
|
||||||
description: Design system and visual language — theming, CSS variables, Tailwind config, component styling patterns, icon usage, animations, and z-index layers. Use when creating or modifying UI components, working with the dark/light theme, or debugging visual issues.
|
description: Design system and visual language — theming, CSS variables, Tailwind config, component styling patterns, icon usage, animations, and z-index layers. Use when creating or modifying UI components, working with the dark/light theme, or debugging visual issues.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
name: ccc:explain-visible-context
|
name: claude-devtools:explain-visible-context
|
||||||
description: Explains what "Visible Context" is — the 6 trackable token categories, what falls outside tracking, how it's displayed, and why it matters. Use when someone asks about visible context, token attribution, or context window usage.
|
description: Explains what "Visible Context" is — the 6 trackable token categories, what falls outside tracking, how it's displayed, and why it matters. Use when someone asks about visible context, token attribution, or context window usage.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
name: ccc:markdown-search
|
name: claude-devtools:markdown-search
|
||||||
description: Markdown search logic — how in-session and cross-session search works. Use when working on SearchBar, search highlighting, searchHighlightUtils, markdownTextSearch, or SessionSearcher.
|
description: Markdown search logic — how in-session and cross-session search works. Use when working on SearchBar, search highlighting, searchHighlightUtils, markdownTextSearch, or SessionSearcher.
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
name: ccc:navigation-scroll
|
name: claude-devtools:navigation-scroll
|
||||||
description: Navigation and scroll orchestration — tab navigation, error highlights, search scrolling, auto-scroll coordination, and common bug patterns. Use when working on useTabNavigationController, scroll restore, or navigation requests.
|
description: Navigation and scroll orchestration — tab navigation, error highlights, search scrolling, auto-scroll coordination, and common bug patterns. Use when working on useTabNavigationController, scroll restore, or navigation requests.
|
||||||
---
|
---
|
||||||
|
|
||||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -35,7 +35,7 @@ jobs:
|
||||||
- name: Package macOS
|
- name: Package macOS
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
CSC_LINK: ${{ secrets.MAC_CERTS }}
|
CSC_LINK: ${{ secrets.CSC_LINK }}
|
||||||
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }}
|
||||||
APPLE_ID: ${{ secrets.APPLE_ID }}
|
APPLE_ID: ${{ secrets.APPLE_ID }}
|
||||||
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
|
APPLE_APP_SPECIFIC_PASSWORD: ${{ secrets.APPLE_APP_SPECIFIC_PASSWORD }}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Claude Code Context
|
# claude-devtools
|
||||||
|
|
||||||
Electron app that visualizes Claude Code session execution
|
Electron app that visualizes Claude Code session execution
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# Contributing
|
# Contributing
|
||||||
|
|
||||||
Thanks for contributing to Claude Code Context.
|
Thanks for contributing to claude-devtools.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
- Node.js 20+
|
- Node.js 20+
|
||||||
|
|
|
||||||
2
LICENSE
2
LICENSE
|
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2026 Claude Code Context contributors
|
Copyright (c) 2026 claude-devtools contributors
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
||||||
14
README.md
14
README.md
|
|
@ -1,8 +1,8 @@
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="resources/icons/png/512x512.png" alt="Claude Code Context" width="120" />
|
<img src="resources/icons/png/512x512.png" alt="claude-devtools" width="120" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h1 align="center">Claude Code Context</h1>
|
<h1 align="center">claude-devtools</h1>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<strong>Stop guessing. See exactly what Claude is doing.</strong>
|
<strong>Stop guessing. See exactly what Claude is doing.</strong>
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/matt1398/claude-code-context/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT" /></a>
|
<a href="https://github.com/matt1398/claude-devtools/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT" /></a>
|
||||||
<a href="#"><img src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey.svg" alt="Platform" /></a>
|
<a href="#"><img src="https://img.shields.io/badge/platform-macOS%20%7C%20Windows-lightgrey.svg" alt="Platform" /></a>
|
||||||
<a href="#"><img src="https://img.shields.io/badge/electron-40-47848F.svg?logo=electron" alt="Electron" /></a>
|
<a href="#"><img src="https://img.shields.io/badge/electron-40-47848F.svg?logo=electron" alt="Electron" /></a>
|
||||||
<a href="#"><img src="https://img.shields.io/badge/react-18-61DAFB.svg?logo=react" alt="React" /></a>
|
<a href="#"><img src="https://img.shields.io/badge/react-18-61DAFB.svg?logo=react" alt="React" /></a>
|
||||||
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<!-- TODO: Replace with actual demo GIF/video -->
|
<!-- TODO: Replace with actual demo GIF/video -->
|
||||||
<img src="docs/assets/demo.gif" alt="Claude Code Context Demo" width="900" />
|
<img src="docs/assets/demo.gif" alt="claude-devtools Demo" width="900" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
@ -39,7 +39,7 @@ There are many GUI wrappers for Claude Code — Conductor, Craft Agents, Vibe Ka
|
||||||
|
|
||||||
**You can't monitor what matters.** Want to know when Claude reads `.env`? When a single tool call exceeds 4K tokens of context? When a teammate sends a shutdown request? You'd have to wire up hooks manually, every time, for every project.
|
**You can't monitor what matters.** Want to know when Claude reads `.env`? When a single tool call exceeds 4K tokens of context? When a teammate sends a shutdown request? You'd have to wire up hooks manually, every time, for every project.
|
||||||
|
|
||||||
**Claude Code Context takes a different approach.** It doesn't wrap or modify Claude Code at all. It reads the session logs that already exist on your machine (`~/.claude/`) and turns them into a rich, interactive interface — regardless of whether the session ran in the terminal, in an IDE, or through another tool.
|
**claude-devtools takes a different approach.** It doesn't wrap or modify Claude Code at all. It reads the session logs that already exist on your machine (`~/.claude/`) and turns them into a rich, interactive interface — regardless of whether the session ran in the terminal, in an IDE, or through another tool.
|
||||||
|
|
||||||
> Zero configuration. No API keys. Works with every session you've ever run.
|
> Zero configuration. No API keys. Works with every session you've ever run.
|
||||||
|
|
||||||
|
|
@ -88,8 +88,8 @@ Open multiple sessions side-by-side. Drag-and-drop tabs between panes, split vie
|
||||||
### Install & Run
|
### Install & Run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/matt1398/claude-code-context.git
|
git clone https://github.com/matt1398/claude-devtools.git
|
||||||
cd claude-code-context
|
cd claude-devtools
|
||||||
pnpm install
|
pnpm install
|
||||||
pnpm dev
|
pnpm dev
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
appId: com.claudecode.context
|
appId: com.claudecode.context
|
||||||
productName: Claude Code Context
|
productName: claude-devtools
|
||||||
|
|
||||||
directories:
|
directories:
|
||||||
output: release
|
output: release
|
||||||
|
|
@ -14,8 +14,6 @@ asar: true
|
||||||
extraMetadata:
|
extraMetadata:
|
||||||
main: dist-electron/main/index.js
|
main: dist-electron/main/index.js
|
||||||
|
|
||||||
afterSign: scripts/notarize.cjs
|
|
||||||
|
|
||||||
mac:
|
mac:
|
||||||
category: public.app-category.developer-tools
|
category: public.app-category.developer-tools
|
||||||
target:
|
target:
|
||||||
|
|
@ -24,8 +22,6 @@ mac:
|
||||||
hardenedRuntime: true
|
hardenedRuntime: true
|
||||||
gatekeeperAssess: false
|
gatekeeperAssess: false
|
||||||
icon: resources/icons/mac/icon.icns
|
icon: resources/icons/mac/icon.icns
|
||||||
entitlements: build/entitlements.mac.plist
|
|
||||||
entitlementsInherit: build/entitlements.mac.plist
|
|
||||||
|
|
||||||
dmg:
|
dmg:
|
||||||
sign: false
|
sign: false
|
||||||
|
|
|
||||||
10
package.json
10
package.json
|
|
@ -1,17 +1,17 @@
|
||||||
{
|
{
|
||||||
"name": "claude-code-context",
|
"name": "claude-devtools",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"description": "Desktop app that visualizes Claude Code session execution — explore conversations, track context usage, and analyze tool calls",
|
"description": "Desktop app that visualizes Claude Code session execution — explore conversations, track context usage, and analyze tool calls",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"author": "Claude Code Context contributors",
|
"author": "claude-devtools contributors",
|
||||||
"homepage": "https://github.com/matt1398/claude-code-context",
|
"homepage": "https://github.com/matt1398/claude-devtools",
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/matt1398/claude-code-context.git"
|
"url": "https://github.com/matt1398/claude-devtools.git"
|
||||||
},
|
},
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/matt1398/claude-code-context/issues"
|
"url": "https://github.com/matt1398/claude-devtools/issues"
|
||||||
},
|
},
|
||||||
"main": "dist-electron/main/index.js",
|
"main": "dist-electron/main/index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Main process entry point for Claude Code Context.
|
* Main process entry point for claude-devtools.
|
||||||
*
|
*
|
||||||
* Responsibilities:
|
* Responsibilities:
|
||||||
* - Initialize Electron app and main window
|
* - Initialize Electron app and main window
|
||||||
|
|
@ -170,7 +170,7 @@ function createWindow(): void {
|
||||||
backgroundColor: '#1a1a1a',
|
backgroundColor: '#1a1a1a',
|
||||||
titleBarStyle: 'hidden',
|
titleBarStyle: 'hidden',
|
||||||
trafficLightPosition: getTrafficLightPositionForZoom(1),
|
trafficLightPosition: getTrafficLightPositionForZoom(1),
|
||||||
title: 'Claude Code Context',
|
title: 'claude-devtools',
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load the renderer
|
// Load the renderer
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* ConfigManager service - Manages app configuration stored at ~/.claude/claude-code-context-config.json.
|
* ConfigManager service - Manages app configuration stored at ~/.claude/claude-devtools-config.json.
|
||||||
*
|
*
|
||||||
* Responsibilities:
|
* Responsibilities:
|
||||||
* - Load configuration from disk on initialization
|
* - Load configuration from disk on initialization
|
||||||
|
|
@ -22,7 +22,7 @@ import type { TriggerColor } from '@shared/constants/triggerColors';
|
||||||
const logger = createLogger('Service:ConfigManager');
|
const logger = createLogger('Service:ConfigManager');
|
||||||
|
|
||||||
const CONFIG_DIR = path.join(os.homedir(), '.claude');
|
const CONFIG_DIR = path.join(os.homedir(), '.claude');
|
||||||
const CONFIG_FILENAME = 'claude-code-context-config.json';
|
const CONFIG_FILENAME = 'claude-devtools-config.json';
|
||||||
const DEFAULT_CONFIG_PATH = path.join(CONFIG_DIR, CONFIG_FILENAME);
|
const DEFAULT_CONFIG_PATH = path.join(CONFIG_DIR, CONFIG_FILENAME);
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
* NotificationManager service - Manages native macOS notifications and error history.
|
* NotificationManager service - Manages native macOS notifications and error history.
|
||||||
*
|
*
|
||||||
* Responsibilities:
|
* Responsibilities:
|
||||||
* - Store error history at ~/.claude/claude-code-context-notifications.json (max 100 entries)
|
* - Store error history at ~/.claude/claude-devtools-notifications.json (max 100 entries)
|
||||||
* - Show native macOS notifications using Electron's Notification API
|
* - Show native macOS notifications using Electron's Notification API
|
||||||
* - Implement throttling (5 seconds per unique error hash)
|
* - Implement throttling (5 seconds per unique error hash)
|
||||||
* - Respect config.notifications.enabled and snoozedUntil
|
* - Respect config.notifications.enabled and snoozedUntil
|
||||||
|
|
@ -80,7 +80,7 @@ const THROTTLE_MS = 5000;
|
||||||
const NOTIFICATIONS_PATH = path.join(
|
const NOTIFICATIONS_PATH = path.join(
|
||||||
os.homedir(),
|
os.homedir(),
|
||||||
'.claude',
|
'.claude',
|
||||||
'claude-code-context-notifications.json'
|
'claude-devtools-notifications.json'
|
||||||
);
|
);
|
||||||
|
|
||||||
// =============================================================================
|
// =============================================================================
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Chunk and visualization types for Claude Code Context.
|
* Chunk and visualization types for claude-devtools.
|
||||||
*
|
*
|
||||||
* This module contains:
|
* This module contains:
|
||||||
* - Chunk types (UserChunk, AIChunk, SystemChunk, CompactChunk)
|
* - Chunk types (UserChunk, AIChunk, SystemChunk, CompactChunk)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Domain/business entity types for Claude Code Context.
|
* Domain/business entity types for claude-devtools.
|
||||||
*
|
*
|
||||||
* These types represent the application's domain model:
|
* These types represent the application's domain model:
|
||||||
* - Projects and sessions
|
* - Projects and sessions
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Parsed message types and type guards for Claude Code Context.
|
* Parsed message types and type guards for claude-devtools.
|
||||||
*
|
*
|
||||||
* ParsedMessage is the application's internal representation after parsing
|
* ParsedMessage is the application's internal representation after parsing
|
||||||
* raw JSONL entries. This module also contains type guards for classifying
|
* raw JSONL entries. This module also contains type guards for classifying
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ export function decodePath(encodedName: string): string {
|
||||||
*/
|
*/
|
||||||
export function extractProjectName(encodedName: string, cwdHint?: string): string {
|
export function extractProjectName(encodedName: string, cwdHint?: string): string {
|
||||||
// Prefer cwdHint (actual filesystem path) since decodePath is lossy for
|
// Prefer cwdHint (actual filesystem path) since decodePath is lossy for
|
||||||
// paths containing dashes (e.g., "claude-code-context" → "claude/code/context").
|
// paths containing dashes (e.g., "claude-devtools" → "claude/code/context").
|
||||||
if (cwdHint) {
|
if (cwdHint) {
|
||||||
const segments = cwdHint.split(/[/\\]/).filter(Boolean);
|
const segments = cwdHint.split(/[/\\]/).filter(Boolean);
|
||||||
const last = segments[segments.length - 1];
|
const last = segments[segments.length - 1];
|
||||||
|
|
|
||||||
|
|
@ -319,7 +319,7 @@ export function useSettingsHandlers({
|
||||||
const url = URL.createObjectURL(blob);
|
const url = URL.createObjectURL(blob);
|
||||||
const link = document.createElement('a');
|
const link = document.createElement('a');
|
||||||
link.href = url;
|
link.href = url;
|
||||||
link.download = 'claude-code-context-config.json';
|
link.download = 'claude-devtools-config.json';
|
||||||
document.body.appendChild(link);
|
document.body.appendChild(link);
|
||||||
link.click();
|
link.click();
|
||||||
document.body.removeChild(link);
|
document.body.removeChild(link);
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ export const AdvancedSection = ({
|
||||||
<div>
|
<div>
|
||||||
<div className="flex items-center gap-3">
|
<div className="flex items-center gap-3">
|
||||||
<p className="text-sm font-medium" style={{ color: 'var(--color-text)' }}>
|
<p className="text-sm font-medium" style={{ color: 'var(--color-text)' }}>
|
||||||
Claude Code Context
|
claude-devtools
|
||||||
</p>
|
</p>
|
||||||
<button
|
<button
|
||||||
onClick={handleCheckForUpdates}
|
onClick={handleCheckForUpdates}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import { useStore } from '../store';
|
||||||
type Theme = 'dark' | 'light' | 'system';
|
type Theme = 'dark' | 'light' | 'system';
|
||||||
type ResolvedTheme = 'dark' | 'light';
|
type ResolvedTheme = 'dark' | 'light';
|
||||||
|
|
||||||
const THEME_CACHE_KEY = 'claude-code-context-theme-cache';
|
const THEME_CACHE_KEY = 'claude-devtools-theme-cache';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hook to manage theme state and application.
|
* Hook to manage theme state and application.
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="icon" type="image/png" href="./favicon.png" />
|
<link rel="icon" type="image/png" href="./favicon.png" />
|
||||||
<title>Claude Code Context</title>
|
<title>claude-devtools</title>
|
||||||
<style>
|
<style>
|
||||||
/* Splash: spotlight gradient + noise overlay */
|
/* Splash: spotlight gradient + noise overlay */
|
||||||
#splash {
|
#splash {
|
||||||
|
|
@ -48,7 +48,7 @@
|
||||||
// Flash prevention: Apply cached theme before React loads
|
// Flash prevention: Apply cached theme before React loads
|
||||||
(function() {
|
(function() {
|
||||||
try {
|
try {
|
||||||
var theme = localStorage.getItem('claude-code-context-theme-cache');
|
var theme = localStorage.getItem('claude-devtools-theme-cache');
|
||||||
if (theme === 'light') {
|
if (theme === 'light') {
|
||||||
document.documentElement.classList.add('light');
|
document.documentElement.classList.add('light');
|
||||||
}
|
}
|
||||||
|
|
@ -77,7 +77,7 @@
|
||||||
<!-- BL: down-facing semicircle -->
|
<!-- BL: down-facing semicircle -->
|
||||||
<path class="splash-q splash-logo-shape" style="animation-delay:2.4s" d="M12,34 A7,7 0 0,0 26,34 Z" fill="#d4d4d8"/>
|
<path class="splash-q splash-logo-shape" style="animation-delay:2.4s" d="M12,34 A7,7 0 0,0 26,34 Z" fill="#d4d4d8"/>
|
||||||
</svg>
|
</svg>
|
||||||
<div id="splash-text">Claude Code Context</div>
|
<div id="splash-text">claude-devtools</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="root"></div>
|
<div id="root"></div>
|
||||||
<script type="module" src="./main.tsx"></script>
|
<script type="module" src="./main.tsx"></script>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Notification and configuration types for Claude Code Context.
|
* Notification and configuration types for claude-devtools.
|
||||||
*
|
*
|
||||||
* Re-exports types from shared for backwards compatibility.
|
* Re-exports types from shared for backwards compatibility.
|
||||||
* The canonical definitions are in @shared/types/notifications.
|
* The canonical definitions are in @shared/types/notifications.
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Notification and configuration types for Claude Code Context.
|
* Notification and configuration types for claude-devtools.
|
||||||
*
|
*
|
||||||
* These types define:
|
* These types define:
|
||||||
* - Detected errors from session files
|
* - Detected errors from session files
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
/**
|
/**
|
||||||
* Visualization-specific types for Claude Code Context.
|
* Visualization-specific types for claude-devtools.
|
||||||
*
|
*
|
||||||
* These types are used for waterfall chart visualization
|
* These types are used for waterfall chart visualization
|
||||||
* and are shared between main and renderer processes.
|
* and are shared between main and renderer processes.
|
||||||
|
|
|
||||||
|
|
@ -100,11 +100,11 @@ describe('pathDecoder', () => {
|
||||||
|
|
||||||
it('should prefer cwdHint over lossy decode for dashed project names', () => {
|
it('should prefer cwdHint over lossy decode for dashed project names', () => {
|
||||||
// Without cwdHint, dashes are decoded as slashes (lossy)
|
// Without cwdHint, dashes are decoded as slashes (lossy)
|
||||||
expect(extractProjectName('-Users-name-claude-code-context')).toBe('context');
|
expect(extractProjectName('-Users-name-claude-devtools')).toBe('context');
|
||||||
// With cwdHint, the actual project name is preserved
|
// With cwdHint, the actual project name is preserved
|
||||||
expect(
|
expect(
|
||||||
extractProjectName('-Users-name-claude-code-context', '/Users/name/claude-code-context')
|
extractProjectName('-Users-name-claude-devtools', '/Users/name/claude-devtools')
|
||||||
).toBe('claude-code-context');
|
).toBe('claude-devtools');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fall back to decoded name when cwdHint is undefined', () => {
|
it('should fall back to decoded name when cwdHint is undefined', () => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue