mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-02 15:23:19 +08:00
feat: Implement IDAW commands and update favicon/logo SVGs
- Added IDAW (Independent Development Autonomous Workflow) commands for batch task execution, including `/idaw:add`, `/idaw:run`, `/idaw:status`, and `/idaw:resume`. - Updated documentation for IDAW commands in both English and Chinese. - Modified favicon and logo SVGs to reflect new orbital design with dynamic colors. - Incremented package version from 7.0.6 to 7.0.9.
This commit is contained in:
@@ -39,14 +39,22 @@
|
||||
<!-- Main badge -->
|
||||
<rect x="-56" y="-20" width="112" height="40" rx="12" class="ccw-bg" filter="url(#ccwShadow)"/>
|
||||
<rect x="-56" y="-20" width="112" height="40" rx="12" fill="none" stroke="url(#ccwBorder)" stroke-width="1.2"/>
|
||||
<!-- Logo icon (simplified favicon: blue square + white lines + green dot) -->
|
||||
<!-- Logo icon (orbital design) -->
|
||||
<g transform="translate(-48, -13)">
|
||||
<rect width="26" height="26" rx="6" fill="var(--vp-c-brand-1)" opacity="0.12"/>
|
||||
<rect width="26" height="26" rx="6" fill="none" stroke="var(--vp-c-brand-1)" stroke-width="0.8" opacity="0.25"/>
|
||||
<line x1="6" y1="9" x2="20" y2="9" stroke="var(--vp-c-brand-1)" stroke-width="2" stroke-linecap="round" opacity="0.65"/>
|
||||
<line x1="6" y1="13" x2="17" y2="13" stroke="var(--vp-c-brand-1)" stroke-width="2" stroke-linecap="round" opacity="0.65"/>
|
||||
<line x1="6" y1="17" x2="14" y2="17" stroke="var(--vp-c-brand-1)" stroke-width="2" stroke-linecap="round" opacity="0.65"/>
|
||||
<circle cx="19" cy="17.5" r="3" fill="#22C55E" opacity="0.8"/>
|
||||
<svg x="1" y="1" width="24" height="24" viewBox="-1 -1 26 26" fill="none" stroke="var(--vp-c-brand-1)" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M4 12 A8 3 0 0 1 20 12" stroke-width="0.8" opacity="0.2"/>
|
||||
<path d="M16.9 19.5 A8 3 30 0 1 7.1 4.5" stroke-width="0.8" opacity="0.2"/>
|
||||
<path d="M7.1 19.5 A8 3 -30 0 1 16.9 4.5" stroke-width="0.8" opacity="0.2"/>
|
||||
<circle cx="12" cy="12" r="1.5" fill="var(--vp-c-brand-1)" stroke="none" opacity="0.15"/>
|
||||
<path d="M20 12 A8 3 0 0 1 4 12" stroke-width="1.2" opacity="0.5"/>
|
||||
<path d="M7.1 4.5 A8 3 30 0 1 16.9 19.5" stroke-width="1.2" opacity="0.5"/>
|
||||
<path d="M16.9 4.5 A8 3 -30 0 1 7.1 19.5" stroke-width="1.2" opacity="0.5"/>
|
||||
<circle cx="17" cy="10.5" r="1.5" fill="#D97757" stroke="none" opacity="0.8"/>
|
||||
<circle cx="8" cy="16" r="1.5" fill="#10A37F" stroke="none" opacity="0.8"/>
|
||||
<circle cx="14" cy="5.5" r="1.5" fill="#4285F4" stroke="none" opacity="0.8"/>
|
||||
</svg>
|
||||
</g>
|
||||
<!-- Text — shifted right to avoid logo overlap -->
|
||||
<text x="16" y="0" text-anchor="middle" class="ccw-label">CCW</text>
|
||||
|
||||
@@ -1,52 +1,47 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, onUnmounted } from 'vue'
|
||||
|
||||
const dotColor = ref('var(--vp-c-primary)')
|
||||
|
||||
function updateDotColor() {
|
||||
if (typeof document === 'undefined') return
|
||||
|
||||
const root = document.documentElement
|
||||
const style = getComputedStyle(root)
|
||||
const primaryColor = style.getPropertyValue('--vp-c-primary').trim()
|
||||
dotColor.value = primaryColor || 'currentColor'
|
||||
}
|
||||
|
||||
let observer: MutationObserver | null = null
|
||||
|
||||
onMounted(() => {
|
||||
updateDotColor()
|
||||
|
||||
// Watch for theme changes via MutationObserver
|
||||
observer = new MutationObserver(() => {
|
||||
updateDotColor()
|
||||
})
|
||||
|
||||
observer.observe(document.documentElement, {
|
||||
attributes: true,
|
||||
attributeFilter: ['data-theme', 'class'],
|
||||
})
|
||||
})
|
||||
|
||||
onUnmounted(() => {
|
||||
observer?.disconnect()
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
viewBox="0 0 24 24"
|
||||
viewBox="-1 -1 26 26"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
class="theme-logo"
|
||||
aria-label="Claude Code Workflow"
|
||||
>
|
||||
<!-- Three horizontal lines - use currentColor to inherit from text -->
|
||||
<line x1="3" y1="6" x2="18" y2="6" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="3" y1="12" x2="15" y2="12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="3" y1="18" x2="12" y2="18" stroke="currentColor" stroke-width="2" stroke-linecap="round"/>
|
||||
<!-- Status dot - follows theme primary color -->
|
||||
<circle cx="19" cy="17" r="3" :style="{ fill: dotColor }"/>
|
||||
<!-- Back orbit halves -->
|
||||
<path d="M4 12 A8 3 0 0 1 20 12" stroke-width="0.9" opacity="0.15"/>
|
||||
<path d="M16.9 19.5 A8 3 30 0 1 7.1 4.5" stroke-width="0.9" opacity="0.15"/>
|
||||
<path d="M7.1 19.5 A8 3 -30 0 1 16.9 4.5" stroke-width="0.9" opacity="0.15"/>
|
||||
<!-- Core breathing pulse -->
|
||||
<circle cx="12" cy="12" r="2" fill="currentColor" stroke="none" opacity="0.1">
|
||||
<animate attributeName="opacity" dur="4s" repeatCount="indefinite" values="0.06;0.18;0.06"/>
|
||||
</circle>
|
||||
<circle cx="12" cy="12" r="1" fill="currentColor" stroke="none" opacity="0.25">
|
||||
<animate attributeName="opacity" dur="4s" repeatCount="indefinite" values="0.15;0.4;0.15"/>
|
||||
</circle>
|
||||
<!-- Front orbit halves -->
|
||||
<path d="M20 12 A8 3 0 0 1 4 12" stroke-width="1.3" opacity="0.75"/>
|
||||
<path d="M7.1 4.5 A8 3 30 0 1 16.9 19.5" stroke-width="1.3" opacity="0.75"/>
|
||||
<path d="M16.9 4.5 A8 3 -30 0 1 7.1 19.5" stroke-width="1.3" opacity="0.75"/>
|
||||
<!-- Claude agent -->
|
||||
<g>
|
||||
<animateMotion dur="8s" repeatCount="indefinite" path="M20,12 A8,3,0,0,0,4,12 A8,3,0,0,0,20,12"/>
|
||||
<animate attributeName="opacity" dur="8s" repeatCount="indefinite" values="0.95;0.95;0.3;0.3;0.95" keyTimes="0;0.35;0.5;0.65;1"/>
|
||||
<circle r="1.5" fill="#D97757" stroke="none" opacity="0.9"/>
|
||||
</g>
|
||||
<!-- OpenAI agent -->
|
||||
<g>
|
||||
<animateMotion dur="10s" repeatCount="indefinite" begin="-3s" path="M7.1,4.5 A8,3,30,0,1,16.9,19.5 A8,3,30,0,1,7.1,4.5"/>
|
||||
<animate attributeName="opacity" dur="10s" repeatCount="indefinite" begin="-3s" values="0.95;0.95;0.3;0.3;0.95" keyTimes="0;0.35;0.5;0.65;1"/>
|
||||
<circle r="1.5" fill="#10A37F" stroke="none" opacity="0.9"/>
|
||||
</g>
|
||||
<!-- Gemini agent -->
|
||||
<g>
|
||||
<animateMotion dur="12s" repeatCount="indefinite" begin="-5s" path="M16.9,4.5 A8,3,-30,0,1,7.1,19.5 A8,3,-30,0,1,16.9,4.5"/>
|
||||
<animate attributeName="opacity" dur="12s" repeatCount="indefinite" begin="-5s" values="0.95;0.95;0.3;0.3;0.95" keyTimes="0;0.35;0.5;0.65;1"/>
|
||||
<circle r="1.5" fill="#4285F4" stroke="none" opacity="0.9"/>
|
||||
</g>
|
||||
</svg>
|
||||
</template>
|
||||
|
||||
@@ -56,9 +51,4 @@ onUnmounted(() => {
|
||||
height: 24px;
|
||||
color: var(--vp-c-text-1);
|
||||
}
|
||||
|
||||
.theme-logo circle {
|
||||
fill: var(--vp-c-primary);
|
||||
transition: fill 0.3s ease;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -77,17 +77,22 @@ export function getStatusColor(isDark: boolean): string {
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate favicon SVG with dynamic colors (line style)
|
||||
* Generate favicon SVG with orbital design
|
||||
*/
|
||||
export function generateFaviconSvg(theme: ThemeName, isDark: boolean): string {
|
||||
const lineColor = getThemeColor(theme, isDark)
|
||||
const dotColor = getThemeColor(theme, isDark) // Dot follows theme color
|
||||
const orbitColor = getThemeColor(theme, isDark)
|
||||
|
||||
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
|
||||
<line x1="3" y1="6" x2="18" y2="6" stroke="${lineColor}" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="3" y1="12" x2="15" y2="12" stroke="${lineColor}" stroke-width="2" stroke-linecap="round"/>
|
||||
<line x1="3" y1="18" x2="12" y2="18" stroke="${lineColor}" stroke-width="2" stroke-linecap="round"/>
|
||||
<circle cx="19" cy="17" r="3" fill="${dotColor}"/>
|
||||
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="-1 -1 26 26" fill="none" stroke="${orbitColor}" stroke-linecap="round" stroke-linejoin="round">
|
||||
<path d="M4 12 A8 3 0 0 1 20 12" stroke-width="0.9" opacity="0.15"/>
|
||||
<path d="M16.9 19.5 A8 3 30 0 1 7.1 4.5" stroke-width="0.9" opacity="0.15"/>
|
||||
<path d="M7.1 19.5 A8 3 -30 0 1 16.9 4.5" stroke-width="0.9" opacity="0.15"/>
|
||||
<circle cx="12" cy="12" r="1.5" fill="${orbitColor}" stroke="none" opacity="0.2"/>
|
||||
<path d="M20 12 A8 3 0 0 1 4 12" stroke-width="1.3" opacity="0.75"/>
|
||||
<path d="M7.1 4.5 A8 3 30 0 1 16.9 19.5" stroke-width="1.3" opacity="0.75"/>
|
||||
<path d="M16.9 4.5 A8 3 -30 0 1 7.1 19.5" stroke-width="1.3" opacity="0.75"/>
|
||||
<circle cx="17" cy="10.5" r="1.8" fill="#D97757" stroke="none"/>
|
||||
<circle cx="8" cy="16" r="1.8" fill="#10A37F" stroke="none"/>
|
||||
<circle cx="14" cy="5.5" r="1.8" fill="#4285F4" stroke="none"/>
|
||||
</svg>`
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user