gitgrip 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,18 @@
1
- # gitgrip
1
+ <p align="center">
2
+ <img src="assets/banner.svg" alt="gitgrip - git a grip" width="600">
3
+ </p>
2
4
 
3
- **git a grip** - Multi-repo workflow tool
5
+ <p align="center">
6
+ <a href="https://www.npmjs.com/package/gitgrip"><img src="https://img.shields.io/npm/v/gitgrip.svg?style=flat-square&color=10B981" alt="npm version"></a>
7
+ <a href="https://github.com/laynepenney/gitgrip/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/gitgrip.svg?style=flat-square&color=059669" alt="license"></a>
8
+ <a href="https://www.npmjs.com/package/gitgrip"><img src="https://img.shields.io/npm/dm/gitgrip.svg?style=flat-square&color=047857" alt="downloads"></a>
9
+ </p>
10
+
11
+ <p align="center">
12
+ Multi-repo workflow tool for synchronized branches, linked PRs, and atomic merges.
13
+ </p>
14
+
15
+ ---
4
16
 
5
17
  Manage multiple related repositories as a single workspace with synchronized branches, linked pull requests, and atomic merges.
6
18
 
package/assets/banner.svg CHANGED
@@ -1,73 +1,71 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 200" width="800" height="200">
2
2
  <defs>
3
3
  <linearGradient id="banner-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#8B5CF6"/>
5
- <stop offset="50%" style="stop-color:#6366F1"/>
6
- <stop offset="100%" style="stop-color:#3B82F6"/>
4
+ <stop offset="0%" style="stop-color:#10B981"/>
5
+ <stop offset="50%" style="stop-color:#059669"/>
6
+ <stop offset="100%" style="stop-color:#047857"/>
7
7
  </linearGradient>
8
8
  <linearGradient id="bg-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
9
- <stop offset="0%" style="stop-color:#0f0f1a"/>
10
- <stop offset="100%" style="stop-color:#1a1a2e"/>
9
+ <stop offset="0%" style="stop-color:#0a0a0f"/>
10
+ <stop offset="100%" style="stop-color:#111827"/>
11
11
  </linearGradient>
12
12
  </defs>
13
13
 
14
14
  <!-- Background -->
15
15
  <rect width="800" height="200" fill="url(#bg-gradient)"/>
16
16
 
17
- <!-- Decorative connection lines in background -->
18
- <g opacity="0.1" stroke="#8B5CF6" stroke-width="1">
19
- <line x1="50" y1="40" x2="120" y2="80"/>
20
- <line x1="120" y1="80" x2="80" y2="140"/>
21
- <line x1="120" y1="80" x2="180" y2="60"/>
22
- <line x1="650" y1="120" x2="720" y2="80"/>
23
- <line x1="720" y1="80" x2="750" y2="140"/>
24
- <line x1="720" y1="80" x2="680" y2="40"/>
25
- </g>
17
+ <!-- Decorative git branch lines in background -->
18
+ <g opacity="0.15" stroke="#10B981" stroke-width="1.5">
19
+ <!-- Left side branches -->
20
+ <path d="M40 100 Q80 60 120 80" fill="none"/>
21
+ <path d="M40 100 Q80 140 120 120" fill="none"/>
22
+ <circle cx="40" cy="100" r="4" fill="#10B981"/>
23
+ <circle cx="120" cy="80" r="3" fill="#059669"/>
24
+ <circle cx="120" cy="120" r="3" fill="#059669"/>
26
25
 
27
- <!-- Background nodes -->
28
- <circle cx="50" cy="40" r="4" fill="#8B5CF6" opacity="0.2"/>
29
- <circle cx="120" cy="80" r="6" fill="#6366F1" opacity="0.25"/>
30
- <circle cx="80" cy="140" r="4" fill="#3B82F6" opacity="0.2"/>
31
- <circle cx="180" cy="60" r="3" fill="#A78BFA" opacity="0.15"/>
32
- <circle cx="650" cy="120" r="4" fill="#8B5CF6" opacity="0.2"/>
33
- <circle cx="720" cy="80" r="6" fill="#6366F1" opacity="0.25"/>
34
- <circle cx="750" cy="140" r="4" fill="#3B82F6" opacity="0.2"/>
35
- <circle cx="680" cy="40" r="3" fill="#60A5FA" opacity="0.15"/>
26
+ <!-- Right side branches -->
27
+ <path d="M760 100 Q720 60 680 80" fill="none"/>
28
+ <path d="M760 100 Q720 140 680 120" fill="none"/>
29
+ <circle cx="760" cy="100" r="4" fill="#10B981"/>
30
+ <circle cx="680" cy="80" r="3" fill="#059669"/>
31
+ <circle cx="680" cy="120" r="3" fill="#059669"/>
32
+ </g>
36
33
 
37
34
  <!-- Floating particles -->
38
- <circle cx="100" cy="160" r="2" fill="#8B5CF6" opacity="0.4"/>
39
- <circle cx="700" cy="40" r="2" fill="#3B82F6" opacity="0.4"/>
40
- <circle cx="200" cy="30" r="1.5" fill="#A78BFA" opacity="0.3"/>
41
- <circle cx="600" cy="170" r="1.5" fill="#60A5FA" opacity="0.3"/>
35
+ <circle cx="150" cy="40" r="2" fill="#10B981" opacity="0.3"/>
36
+ <circle cx="200" cy="160" r="1.5" fill="#059669" opacity="0.25"/>
37
+ <circle cx="600" cy="30" r="2" fill="#047857" opacity="0.3"/>
38
+ <circle cx="650" cy="170" r="1.5" fill="#10B981" opacity="0.25"/>
42
39
 
43
40
  <!-- Main logo group centered -->
44
- <g transform="translate(250, 50)">
41
+ <g transform="translate(220, 45)">
45
42
  <!-- Icon background -->
46
- <rect x="0" y="0" width="100" height="100" rx="20" fill="url(#banner-gradient)"/>
43
+ <rect x="0" y="0" width="110" height="110" rx="22" fill="url(#banner-gradient)"/>
44
+
45
+ <!-- Central grip hub -->
46
+ <circle cx="55" cy="55" r="14" fill="white" opacity="0.95"/>
47
47
 
48
- <!-- Central hub node -->
49
- <circle cx="50" cy="50" r="12" fill="white" opacity="0.95"/>
48
+ <!-- Three branches being gripped -->
49
+ <!-- Top branch -->
50
+ <path d="M55 41 L55 24" stroke="white" stroke-width="4" stroke-linecap="round"/>
51
+ <circle cx="55" cy="20" r="6" fill="white"/>
50
52
 
51
- <!-- Connection lines -->
52
- <line x1="50" y1="50" x2="28" y2="28" stroke="white" stroke-width="3" opacity="0.7"/>
53
- <line x1="50" y1="50" x2="72" y2="28" stroke="white" stroke-width="3" opacity="0.7"/>
54
- <line x1="50" y1="50" x2="28" y2="72" stroke="white" stroke-width="3" opacity="0.7"/>
55
- <line x1="50" y1="50" x2="72" y2="72" stroke="white" stroke-width="3" opacity="0.7"/>
53
+ <!-- Bottom-left branch -->
54
+ <path d="M44 63 L28 79" stroke="white" stroke-width="4" stroke-linecap="round"/>
55
+ <circle cx="24" cy="83" r="6" fill="white"/>
56
56
 
57
- <!-- Outer nodes -->
58
- <circle cx="28" cy="28" r="7" fill="white" opacity="0.9"/>
59
- <circle cx="72" cy="28" r="7" fill="white" opacity="0.9"/>
60
- <circle cx="28" cy="72" r="7" fill="white" opacity="0.9"/>
61
- <circle cx="72" cy="72" r="7" fill="white" opacity="0.9"/>
57
+ <!-- Bottom-right branch -->
58
+ <path d="M66 63 L82 79" stroke="white" stroke-width="4" stroke-linecap="round"/>
59
+ <circle cx="86" cy="83" r="6" fill="white"/>
62
60
 
63
- <!-- Sparkles on icon -->
64
- <circle cx="86" cy="18" r="4" fill="white" opacity="0.8"/>
65
- <circle cx="94" cy="10" r="2" fill="white" opacity="0.6"/>
61
+ <!-- Inner grip detail -->
62
+ <circle cx="55" cy="55" r="6" fill="url(#banner-gradient)"/>
66
63
 
67
- <!-- Text "codi-repo" -->
68
- <text x="120" y="65" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="56" font-weight="700" fill="white">codi-repo</text>
64
+ <!-- Text "gitgrip" -->
65
+ <text x="130" y="72" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="60" font-weight="700" fill="white">gitgrip</text>
69
66
  </g>
70
67
 
71
68
  <!-- Tagline -->
72
- <text x="400" y="175" text-anchor="middle" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="18" fill="#9CA3AF">Multi-repo orchestration for unified PR workflows</text>
69
+ <text x="400" y="178" text-anchor="middle" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="20" font-weight="500" fill="#6EE7B7">git a grip</text>
70
+ <text x="400" y="198" text-anchor="middle" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="14" fill="#9CA3AF">Multi-repo workflow tool</text>
73
71
  </svg>
package/assets/icon.svg CHANGED
@@ -1,30 +1,31 @@
1
1
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64">
2
2
  <defs>
3
3
  <linearGradient id="icon-gradient" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#8B5CF6"/>
5
- <stop offset="100%" style="stop-color:#3B82F6"/>
4
+ <stop offset="0%" style="stop-color:#10B981"/>
5
+ <stop offset="50%" style="stop-color:#059669"/>
6
+ <stop offset="100%" style="stop-color:#047857"/>
6
7
  </linearGradient>
7
8
  </defs>
8
9
 
9
10
  <!-- Outer rounded square -->
10
11
  <rect x="4" y="4" width="56" height="56" rx="12" fill="url(#icon-gradient)"/>
11
12
 
12
- <!-- Central hub node -->
13
- <circle cx="32" cy="32" r="8" fill="white" opacity="0.95"/>
13
+ <!-- Central grip hub -->
14
+ <circle cx="32" cy="32" r="9" fill="white" opacity="0.95"/>
14
15
 
15
- <!-- Connection lines to outer nodes -->
16
- <line x1="32" y1="32" x2="18" y2="18" stroke="white" stroke-width="2.5" opacity="0.7"/>
17
- <line x1="32" y1="32" x2="46" y2="18" stroke="white" stroke-width="2.5" opacity="0.7"/>
18
- <line x1="32" y1="32" x2="18" y2="46" stroke="white" stroke-width="2.5" opacity="0.7"/>
19
- <line x1="32" y1="32" x2="46" y2="46" stroke="white" stroke-width="2.5" opacity="0.7"/>
16
+ <!-- Three branches being gripped -->
17
+ <!-- Top branch -->
18
+ <path d="M32 23 L32 12" stroke="white" stroke-width="3" stroke-linecap="round"/>
19
+ <circle cx="32" cy="10" r="4" fill="white"/>
20
20
 
21
- <!-- Outer repo nodes -->
22
- <circle cx="18" cy="18" r="5" fill="white" opacity="0.9"/>
23
- <circle cx="46" cy="18" r="5" fill="white" opacity="0.9"/>
24
- <circle cx="18" cy="46" r="5" fill="white" opacity="0.9"/>
25
- <circle cx="46" cy="46" r="5" fill="white" opacity="0.9"/>
21
+ <!-- Bottom-left branch -->
22
+ <path d="M25 37 L14 48" stroke="white" stroke-width="3" stroke-linecap="round"/>
23
+ <circle cx="12" cy="50" r="4" fill="white"/>
26
24
 
27
- <!-- Sparkle accents -->
28
- <circle cx="52" cy="12" r="2.5" fill="white" opacity="0.8"/>
29
- <circle cx="56" cy="8" r="1.5" fill="white" opacity="0.6"/>
25
+ <!-- Bottom-right branch -->
26
+ <path d="M39 37 L50 48" stroke="white" stroke-width="3" stroke-linecap="round"/>
27
+ <circle cx="52" cy="50" r="4" fill="white"/>
28
+
29
+ <!-- Inner grip detail -->
30
+ <circle cx="32" cy="32" r="4" fill="url(#icon-gradient)"/>
30
31
  </svg>
@@ -1,36 +1,37 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 260 60" width="260" height="60">
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 60" width="220" height="60">
2
2
  <defs>
3
3
  <linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#8B5CF6"/>
5
- <stop offset="100%" style="stop-color:#3B82F6"/>
4
+ <stop offset="0%" style="stop-color:#10B981"/>
5
+ <stop offset="50%" style="stop-color:#059669"/>
6
+ <stop offset="100%" style="stop-color:#047857"/>
6
7
  </linearGradient>
7
8
  </defs>
8
9
 
9
10
  <!-- Icon -->
10
- <g transform="translate(10, 10)">
11
+ <g transform="translate(5, 7)">
11
12
  <!-- Outer rounded square -->
12
- <rect x="0" y="0" width="40" height="40" rx="8" fill="url(#gradient)"/>
13
+ <rect x="0" y="0" width="46" height="46" rx="10" fill="url(#gradient)"/>
13
14
 
14
- <!-- Central hub node -->
15
- <circle cx="20" cy="20" r="5" fill="white" opacity="0.95"/>
15
+ <!-- Central grip hub -->
16
+ <circle cx="23" cy="23" r="6" fill="white" opacity="0.95"/>
16
17
 
17
- <!-- Connection lines -->
18
- <line x1="20" y1="20" x2="11" y2="11" stroke="white" stroke-width="1.5" opacity="0.7"/>
19
- <line x1="20" y1="20" x2="29" y2="11" stroke="white" stroke-width="1.5" opacity="0.7"/>
20
- <line x1="20" y1="20" x2="11" y2="29" stroke="white" stroke-width="1.5" opacity="0.7"/>
21
- <line x1="20" y1="20" x2="29" y2="29" stroke="white" stroke-width="1.5" opacity="0.7"/>
18
+ <!-- Three branches being gripped -->
19
+ <!-- Top branch -->
20
+ <path d="M23 17 L23 8" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
21
+ <circle cx="23" cy="6" r="3" fill="white"/>
22
22
 
23
- <!-- Outer nodes -->
24
- <circle cx="11" cy="11" r="3" fill="white" opacity="0.9"/>
25
- <circle cx="29" cy="11" r="3" fill="white" opacity="0.9"/>
26
- <circle cx="11" cy="29" r="3" fill="white" opacity="0.9"/>
27
- <circle cx="29" cy="29" r="3" fill="white" opacity="0.9"/>
23
+ <!-- Bottom-left branch -->
24
+ <path d="M18 27 L10 35" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
25
+ <circle cx="8" cy="37" r="3" fill="white"/>
28
26
 
29
- <!-- Sparkles -->
30
- <circle cx="34" cy="6" r="2" fill="white" opacity="0.8"/>
31
- <circle cx="38" cy="3" r="1" fill="white" opacity="0.6"/>
27
+ <!-- Bottom-right branch -->
28
+ <path d="M28 27 L36 35" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
29
+ <circle cx="38" cy="37" r="3" fill="white"/>
30
+
31
+ <!-- Inner grip detail -->
32
+ <circle cx="23" cy="23" r="2.5" fill="url(#gradient)"/>
32
33
  </g>
33
34
 
34
- <!-- Text "codi-repo" in white for dark backgrounds -->
35
- <text x="60" y="40" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="28" font-weight="700" fill="white">codi-repo</text>
35
+ <!-- Text "gitgrip" in white for dark backgrounds -->
36
+ <text x="60" y="42" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="32" font-weight="700" fill="white">gitgrip</text>
36
37
  </svg>
package/assets/logo.svg CHANGED
@@ -1,36 +1,37 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 260 60" width="260" height="60">
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 220 60" width="220" height="60">
2
2
  <defs>
3
3
  <linearGradient id="gradient" x1="0%" y1="0%" x2="100%" y2="100%">
4
- <stop offset="0%" style="stop-color:#8B5CF6"/>
5
- <stop offset="100%" style="stop-color:#3B82F6"/>
4
+ <stop offset="0%" style="stop-color:#10B981"/>
5
+ <stop offset="50%" style="stop-color:#059669"/>
6
+ <stop offset="100%" style="stop-color:#047857"/>
6
7
  </linearGradient>
7
8
  </defs>
8
9
 
9
10
  <!-- Icon -->
10
- <g transform="translate(10, 10)">
11
+ <g transform="translate(5, 7)">
11
12
  <!-- Outer rounded square -->
12
- <rect x="0" y="0" width="40" height="40" rx="8" fill="url(#gradient)"/>
13
+ <rect x="0" y="0" width="46" height="46" rx="10" fill="url(#gradient)"/>
13
14
 
14
- <!-- Central hub node -->
15
- <circle cx="20" cy="20" r="5" fill="white" opacity="0.95"/>
15
+ <!-- Central grip hub -->
16
+ <circle cx="23" cy="23" r="6" fill="white" opacity="0.95"/>
16
17
 
17
- <!-- Connection lines -->
18
- <line x1="20" y1="20" x2="11" y2="11" stroke="white" stroke-width="1.5" opacity="0.7"/>
19
- <line x1="20" y1="20" x2="29" y2="11" stroke="white" stroke-width="1.5" opacity="0.7"/>
20
- <line x1="20" y1="20" x2="11" y2="29" stroke="white" stroke-width="1.5" opacity="0.7"/>
21
- <line x1="20" y1="20" x2="29" y2="29" stroke="white" stroke-width="1.5" opacity="0.7"/>
18
+ <!-- Three branches being gripped -->
19
+ <!-- Top branch -->
20
+ <path d="M23 17 L23 8" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
21
+ <circle cx="23" cy="6" r="3" fill="white"/>
22
22
 
23
- <!-- Outer nodes -->
24
- <circle cx="11" cy="11" r="3" fill="white" opacity="0.9"/>
25
- <circle cx="29" cy="11" r="3" fill="white" opacity="0.9"/>
26
- <circle cx="11" cy="29" r="3" fill="white" opacity="0.9"/>
27
- <circle cx="29" cy="29" r="3" fill="white" opacity="0.9"/>
23
+ <!-- Bottom-left branch -->
24
+ <path d="M18 27 L10 35" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
25
+ <circle cx="8" cy="37" r="3" fill="white"/>
28
26
 
29
- <!-- Sparkles -->
30
- <circle cx="34" cy="6" r="2" fill="white" opacity="0.8"/>
31
- <circle cx="38" cy="3" r="1" fill="white" opacity="0.6"/>
27
+ <!-- Bottom-right branch -->
28
+ <path d="M28 27 L36 35" stroke="white" stroke-width="2.5" stroke-linecap="round"/>
29
+ <circle cx="38" cy="37" r="3" fill="white"/>
30
+
31
+ <!-- Inner grip detail -->
32
+ <circle cx="23" cy="23" r="2.5" fill="url(#gradient)"/>
32
33
  </g>
33
34
 
34
- <!-- Text "codi-repo" -->
35
- <text x="60" y="40" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="28" font-weight="700" fill="url(#gradient)">codi-repo</text>
35
+ <!-- Text "gitgrip" -->
36
+ <text x="60" y="42" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif" font-size="32" font-weight="700" fill="url(#gradient)">gitgrip</text>
36
37
  </svg>
package/dist/index.js CHANGED
@@ -22,7 +22,7 @@ const program = new Command();
22
22
  program
23
23
  .name('gitgrip')
24
24
  .description('git a grip - Multi-repo workflow tool\n\nShorthand: Use "gr" instead of "gitgrip"')
25
- .version('0.2.1')
25
+ .version('0.2.2')
26
26
  .option('--timing', 'Show timing breakdown for operations');
27
27
  // Set up timing hooks
28
28
  program.hook('preAction', (thisCommand) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gitgrip",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "git a grip - Multi-repo workflow tool",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",