cli-dev-tip 0.1.1__tar.gz → 0.1.3__tar.gz
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.
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/PKG-INFO +10 -2
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/README.md +9 -1
- cli_dev_tip-0.1.3/assets/enable.svg +80 -0
- cli_dev_tip-0.1.3/assets/header.png +0 -0
- cli_dev_tip-0.1.3/assets/tip.svg +87 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/hook.py +1 -1
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/pyproject.toml +1 -1
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/uv.lock +1 -1
- cli_dev_tip-0.1.1/assets/enable.svg +0 -82
- cli_dev_tip-0.1.1/assets/tip.svg +0 -87
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/.gitignore +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/LICENSE +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/assets/pause.svg +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/assets/status.svg +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/__init__.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/__init__.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/cache.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/gemini.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/openrouter.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/prompt.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/provider.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/cli.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/config.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/data/tips.yaml +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/history.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/prefetch.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/tips.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/conftest.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_cache.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_cli.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_config.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_history.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_hook.py +0 -0
- {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_tips.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cli-dev-tip
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: Bite-sized developer tips in your terminal
|
|
5
5
|
Project-URL: Homepage, https://github.com/My-CD-ROM/cli-dev-tip
|
|
6
6
|
Project-URL: Repository, https://github.com/My-CD-ROM/cli-dev-tip
|
|
@@ -31,7 +31,7 @@ Description-Content-Type: text/markdown
|
|
|
31
31
|
A terminal tool that helps developers learn continuously by showing bite-sized technical tips — right in the terminal, between commands.
|
|
32
32
|
|
|
33
33
|
<p align="center">
|
|
34
|
-
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/
|
|
34
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/header.png" width="600" alt="dev-tip — learn while you code">
|
|
35
35
|
</p>
|
|
36
36
|
|
|
37
37
|
## What it does
|
|
@@ -61,6 +61,14 @@ pipx install cli-dev-tip
|
|
|
61
61
|
|
|
62
62
|
This makes `dev-tip` available globally from any terminal.
|
|
63
63
|
|
|
64
|
+
### Upgrading
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
uv tool install cli-dev-tip --upgrade
|
|
68
|
+
# or
|
|
69
|
+
pip install cli-dev-tip --upgrade
|
|
70
|
+
```
|
|
71
|
+
|
|
64
72
|
## Quick start
|
|
65
73
|
|
|
66
74
|
The recommended setup — AI-generated tips covering general IT topics, appearing every 15 commands or 30 minutes:
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
A terminal tool that helps developers learn continuously by showing bite-sized technical tips — right in the terminal, between commands.
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/
|
|
6
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/header.png" width="600" alt="dev-tip — learn while you code">
|
|
7
7
|
</p>
|
|
8
8
|
|
|
9
9
|
## What it does
|
|
@@ -33,6 +33,14 @@ pipx install cli-dev-tip
|
|
|
33
33
|
|
|
34
34
|
This makes `dev-tip` available globally from any terminal.
|
|
35
35
|
|
|
36
|
+
### Upgrading
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
uv tool install cli-dev-tip --upgrade
|
|
40
|
+
# or
|
|
41
|
+
pip install cli-dev-tip --upgrade
|
|
42
|
+
```
|
|
43
|
+
|
|
36
44
|
## Quick start
|
|
37
45
|
|
|
38
46
|
The recommended setup — AI-generated tips covering general IT topics, appearing every 15 commands or 30 minutes:
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
<svg class="rich-terminal" viewBox="0 0 897 172.0" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- Generated with Rich https://www.textualize.io -->
|
|
3
|
+
<style>
|
|
4
|
+
|
|
5
|
+
@font-face {
|
|
6
|
+
font-family: "Fira Code";
|
|
7
|
+
src: local("FiraCode-Regular"),
|
|
8
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
|
|
9
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
|
|
10
|
+
font-style: normal;
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
}
|
|
13
|
+
@font-face {
|
|
14
|
+
font-family: "Fira Code";
|
|
15
|
+
src: local("FiraCode-Bold"),
|
|
16
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
|
|
17
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
|
|
18
|
+
font-style: bold;
|
|
19
|
+
font-weight: 700;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.terminal-3667420291-matrix {
|
|
23
|
+
font-family: Fira Code, monospace;
|
|
24
|
+
font-size: 20px;
|
|
25
|
+
line-height: 24.4px;
|
|
26
|
+
font-variant-east-asian: full-width;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.terminal-3667420291-title {
|
|
30
|
+
font-size: 18px;
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
font-family: arial;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.terminal-3667420291-r1 { fill: #c5c8c6 }
|
|
36
|
+
.terminal-3667420291-r2 { fill: #98a84b;font-weight: bold }
|
|
37
|
+
.terminal-3667420291-r3 { fill: #868887 }
|
|
38
|
+
.terminal-3667420291-r4 { fill: #8d7b39 }
|
|
39
|
+
.terminal-3667420291-r5 { fill: #98a84b }
|
|
40
|
+
.terminal-3667420291-r6 { fill: #68a0b3;font-weight: bold }
|
|
41
|
+
.terminal-3667420291-r7 { fill: #c5c8c6;font-weight: bold }
|
|
42
|
+
</style>
|
|
43
|
+
|
|
44
|
+
<defs>
|
|
45
|
+
<clipPath id="terminal-3667420291-clip-terminal">
|
|
46
|
+
<rect x="0" y="0" width="877.4" height="121.0" />
|
|
47
|
+
</clipPath>
|
|
48
|
+
<clipPath id="terminal-3667420291-line-0">
|
|
49
|
+
<rect x="0" y="1.5" width="878.4" height="24.65"/>
|
|
50
|
+
</clipPath>
|
|
51
|
+
<clipPath id="terminal-3667420291-line-1">
|
|
52
|
+
<rect x="0" y="25.9" width="878.4" height="24.65"/>
|
|
53
|
+
</clipPath>
|
|
54
|
+
<clipPath id="terminal-3667420291-line-2">
|
|
55
|
+
<rect x="0" y="50.3" width="878.4" height="24.65"/>
|
|
56
|
+
</clipPath>
|
|
57
|
+
<clipPath id="terminal-3667420291-line-3">
|
|
58
|
+
<rect x="0" y="74.7" width="878.4" height="24.65"/>
|
|
59
|
+
</clipPath>
|
|
60
|
+
</defs>
|
|
61
|
+
|
|
62
|
+
<rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="895" height="170" rx="8"/><text class="terminal-3667420291-title" fill="#c5c8c6" text-anchor="middle" x="447" y="27">dev-tip enable</text>
|
|
63
|
+
<g transform="translate(26,22)">
|
|
64
|
+
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
|
|
65
|
+
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
|
|
66
|
+
<circle cx="44" cy="0" r="7" fill="#28c840"/>
|
|
67
|
+
</g>
|
|
68
|
+
|
|
69
|
+
<g transform="translate(9, 41)" clip-path="url(#terminal-3667420291-clip-terminal)">
|
|
70
|
+
|
|
71
|
+
<g class="terminal-3667420291-matrix">
|
|
72
|
+
<text class="terminal-3667420291-r1" x="0" y="20" textLength="24.4" clip-path="url(#terminal-3667420291-line-0)">$ </text><text class="terminal-3667420291-r2" x="24.4" y="20" textLength="524.6" clip-path="url(#terminal-3667420291-line-0)">dev-tip enable --provider gemini --key AIza</text><text class="terminal-3667420291-r2" x="549" y="20" textLength="36.6" clip-path="url(#terminal-3667420291-line-0)">...</text><text class="terminal-3667420291-r1" x="878.4" y="20" textLength="12.2" clip-path="url(#terminal-3667420291-line-0)">
|
|
73
|
+
</text><text class="terminal-3667420291-r3" x="0" y="44.4" textLength="451.4" clip-path="url(#terminal-3667420291-line-1)">Pre-caching AI tips in the background</text><text class="terminal-3667420291-r4" x="451.4" y="44.4" textLength="36.6" clip-path="url(#terminal-3667420291-line-1)">...</text><text class="terminal-3667420291-r1" x="878.4" y="44.4" textLength="12.2" clip-path="url(#terminal-3667420291-line-1)">
|
|
74
|
+
</text><text class="terminal-3667420291-r5" x="0" y="68.8" textLength="219.6" clip-path="url(#terminal-3667420291-line-2)">Hook installed in </text><text class="terminal-3667420291-r5" x="219.6" y="68.8" textLength="134.2" clip-path="url(#terminal-3667420291-line-2)">/home/user/</text><text class="terminal-3667420291-r5" x="353.8" y="68.8" textLength="73.2" clip-path="url(#terminal-3667420291-line-2)">.zshrc</text><text class="terminal-3667420291-r1" x="878.4" y="68.8" textLength="12.2" clip-path="url(#terminal-3667420291-line-2)">
|
|
75
|
+
</text><text class="terminal-3667420291-r1" x="0" y="93.2" textLength="280.6" clip-path="url(#terminal-3667420291-line-3)">Tips will appear every </text><text class="terminal-3667420291-r6" x="280.6" y="93.2" textLength="24.4" clip-path="url(#terminal-3667420291-line-3)">15</text><text class="terminal-3667420291-r1" x="305" y="93.2" textLength="158.6" clip-path="url(#terminal-3667420291-line-3)"> commands or </text><text class="terminal-3667420291-r6" x="463.6" y="93.2" textLength="24.4" clip-path="url(#terminal-3667420291-line-3)">30</text><text class="terminal-3667420291-r1" x="488" y="93.2" textLength="109.8" clip-path="url(#terminal-3667420291-line-3)"> minutes.</text><text class="terminal-3667420291-r1" x="878.4" y="93.2" textLength="12.2" clip-path="url(#terminal-3667420291-line-3)">
|
|
76
|
+
</text><text class="terminal-3667420291-r1" x="0" y="117.6" textLength="231.8" clip-path="url(#terminal-3667420291-line-4)">Reload your shell: </text><text class="terminal-3667420291-r7" x="231.8" y="117.6" textLength="97.6" clip-path="url(#terminal-3667420291-line-4)">exec zsh</text><text class="terminal-3667420291-r1" x="878.4" y="117.6" textLength="12.2" clip-path="url(#terminal-3667420291-line-4)">
|
|
77
|
+
</text>
|
|
78
|
+
</g>
|
|
79
|
+
</g>
|
|
80
|
+
</svg>
|
|
Binary file
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<svg class="rich-terminal" viewBox="0 0 897 245.2" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<!-- Generated with Rich https://www.textualize.io -->
|
|
3
|
+
<style>
|
|
4
|
+
|
|
5
|
+
@font-face {
|
|
6
|
+
font-family: "Fira Code";
|
|
7
|
+
src: local("FiraCode-Regular"),
|
|
8
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
|
|
9
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
|
|
10
|
+
font-style: normal;
|
|
11
|
+
font-weight: 400;
|
|
12
|
+
}
|
|
13
|
+
@font-face {
|
|
14
|
+
font-family: "Fira Code";
|
|
15
|
+
src: local("FiraCode-Bold"),
|
|
16
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
|
|
17
|
+
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
|
|
18
|
+
font-style: bold;
|
|
19
|
+
font-weight: 700;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.terminal-3971203338-matrix {
|
|
23
|
+
font-family: Fira Code, monospace;
|
|
24
|
+
font-size: 20px;
|
|
25
|
+
line-height: 24.4px;
|
|
26
|
+
font-variant-east-asian: full-width;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.terminal-3971203338-title {
|
|
30
|
+
font-size: 18px;
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
font-family: arial;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.terminal-3971203338-r1 { fill: #c5c8c6 }
|
|
36
|
+
.terminal-3971203338-r2 { fill: #868887 }
|
|
37
|
+
</style>
|
|
38
|
+
|
|
39
|
+
<defs>
|
|
40
|
+
<clipPath id="terminal-3971203338-clip-terminal">
|
|
41
|
+
<rect x="0" y="0" width="877.4" height="194.2" />
|
|
42
|
+
</clipPath>
|
|
43
|
+
<clipPath id="terminal-3971203338-line-0">
|
|
44
|
+
<rect x="0" y="1.5" width="878.4" height="24.65"/>
|
|
45
|
+
</clipPath>
|
|
46
|
+
<clipPath id="terminal-3971203338-line-1">
|
|
47
|
+
<rect x="0" y="25.9" width="878.4" height="24.65"/>
|
|
48
|
+
</clipPath>
|
|
49
|
+
<clipPath id="terminal-3971203338-line-2">
|
|
50
|
+
<rect x="0" y="50.3" width="878.4" height="24.65"/>
|
|
51
|
+
</clipPath>
|
|
52
|
+
<clipPath id="terminal-3971203338-line-3">
|
|
53
|
+
<rect x="0" y="74.7" width="878.4" height="24.65"/>
|
|
54
|
+
</clipPath>
|
|
55
|
+
<clipPath id="terminal-3971203338-line-4">
|
|
56
|
+
<rect x="0" y="99.1" width="878.4" height="24.65"/>
|
|
57
|
+
</clipPath>
|
|
58
|
+
<clipPath id="terminal-3971203338-line-5">
|
|
59
|
+
<rect x="0" y="123.5" width="878.4" height="24.65"/>
|
|
60
|
+
</clipPath>
|
|
61
|
+
<clipPath id="terminal-3971203338-line-6">
|
|
62
|
+
<rect x="0" y="147.9" width="878.4" height="24.65"/>
|
|
63
|
+
</clipPath>
|
|
64
|
+
</defs>
|
|
65
|
+
|
|
66
|
+
<rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="895" height="243.2" rx="8"/><text class="terminal-3971203338-title" fill="#c5c8c6" text-anchor="middle" x="447" y="27">dev-tip</text>
|
|
67
|
+
<g transform="translate(26,22)">
|
|
68
|
+
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
|
|
69
|
+
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
|
|
70
|
+
<circle cx="44" cy="0" r="7" fill="#28c840"/>
|
|
71
|
+
</g>
|
|
72
|
+
|
|
73
|
+
<g transform="translate(9, 41)" clip-path="url(#terminal-3971203338-clip-terminal)">
|
|
74
|
+
|
|
75
|
+
<g class="terminal-3971203338-matrix">
|
|
76
|
+
<text class="terminal-3971203338-r1" x="878.4" y="20" textLength="12.2" clip-path="url(#terminal-3971203338-line-0)">
|
|
77
|
+
</text><text class="terminal-3971203338-r2" x="0" y="44.4" textLength="854" clip-path="url(#terminal-3971203338-line-1)">            🔀 git · intermediate · Use rebase for clean linear history</text><text class="terminal-3971203338-r1" x="878.4" y="44.4" textLength="12.2" clip-path="url(#terminal-3971203338-line-1)">
|
|
78
|
+
</text><text class="terminal-3971203338-r1" x="878.4" y="68.8" textLength="12.2" clip-path="url(#terminal-3971203338-line-2)">
|
|
79
|
+
</text><text class="terminal-3971203338-r2" x="0" y="93.2" textLength="841.8" clip-path="url(#terminal-3971203338-line-3)">            Instead of git merge main on your feature branch, use git</text><text class="terminal-3971203338-r1" x="878.4" y="93.2" textLength="12.2" clip-path="url(#terminal-3971203338-line-3)">
|
|
80
|
+
</text><text class="terminal-3971203338-r2" x="0" y="117.6" textLength="878.4" clip-path="url(#terminal-3971203338-line-4)">            rebase main. It replays your commits on top of main, keeping</text><text class="terminal-3971203338-r1" x="878.4" y="117.6" textLength="12.2" clip-path="url(#terminal-3971203338-line-4)">
|
|
81
|
+
</text><text class="terminal-3971203338-r2" x="0" y="142" textLength="841.8" clip-path="url(#terminal-3971203338-line-5)">            history linear and easy to follow. Save merge commits for</text><text class="terminal-3971203338-r1" x="878.4" y="142" textLength="12.2" clip-path="url(#terminal-3971203338-line-5)">
|
|
82
|
+
</text><text class="terminal-3971203338-r2" x="0" y="166.4" textLength="256.2" clip-path="url(#terminal-3971203338-line-6)">            PRs only.</text><text class="terminal-3971203338-r1" x="878.4" y="166.4" textLength="12.2" clip-path="url(#terminal-3971203338-line-6)">
|
|
83
|
+
</text><text class="terminal-3971203338-r1" x="878.4" y="190.8" textLength="12.2" clip-path="url(#terminal-3971203338-line-7)">
|
|
84
|
+
</text>
|
|
85
|
+
</g>
|
|
86
|
+
</g>
|
|
87
|
+
</svg>
|
|
@@ -168,7 +168,7 @@ def enable(
|
|
|
168
168
|
f"Tips will appear every {every_commands} commands "
|
|
169
169
|
f"or {every_minutes} minutes."
|
|
170
170
|
)
|
|
171
|
-
console.print(f"
|
|
171
|
+
console.print(f"Reload your shell: [bold]exec {shell}[/bold]")
|
|
172
172
|
|
|
173
173
|
|
|
174
174
|
def disable() -> None:
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
<svg class="rich-terminal" viewBox="0 0 897 172.0" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<!-- Generated with Rich https://www.textualize.io -->
|
|
3
|
-
<style>
|
|
4
|
-
|
|
5
|
-
@font-face {
|
|
6
|
-
font-family: "Fira Code";
|
|
7
|
-
src: local("FiraCode-Regular"),
|
|
8
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
|
|
9
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
|
|
10
|
-
font-style: normal;
|
|
11
|
-
font-weight: 400;
|
|
12
|
-
}
|
|
13
|
-
@font-face {
|
|
14
|
-
font-family: "Fira Code";
|
|
15
|
-
src: local("FiraCode-Bold"),
|
|
16
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
|
|
17
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
|
|
18
|
-
font-style: bold;
|
|
19
|
-
font-weight: 700;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.terminal-1566548822-matrix {
|
|
23
|
-
font-family: Fira Code, monospace;
|
|
24
|
-
font-size: 20px;
|
|
25
|
-
line-height: 24.4px;
|
|
26
|
-
font-variant-east-asian: full-width;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.terminal-1566548822-title {
|
|
30
|
-
font-size: 18px;
|
|
31
|
-
font-weight: bold;
|
|
32
|
-
font-family: arial;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.terminal-1566548822-r1 { fill: #c5c8c6 }
|
|
36
|
-
.terminal-1566548822-r2 { fill: #98a84b;font-weight: bold }
|
|
37
|
-
.terminal-1566548822-r3 { fill: #868887 }
|
|
38
|
-
.terminal-1566548822-r4 { fill: #8d7b39 }
|
|
39
|
-
.terminal-1566548822-r5 { fill: #98a84b }
|
|
40
|
-
.terminal-1566548822-r6 { fill: #68a0b3;font-weight: bold }
|
|
41
|
-
.terminal-1566548822-r7 { fill: #c5c8c6;font-weight: bold }
|
|
42
|
-
.terminal-1566548822-r8 { fill: #98729f;font-weight: bold }
|
|
43
|
-
.terminal-1566548822-r9 { fill: #ff2c7a;font-weight: bold }
|
|
44
|
-
</style>
|
|
45
|
-
|
|
46
|
-
<defs>
|
|
47
|
-
<clipPath id="terminal-1566548822-clip-terminal">
|
|
48
|
-
<rect x="0" y="0" width="877.4" height="121.0" />
|
|
49
|
-
</clipPath>
|
|
50
|
-
<clipPath id="terminal-1566548822-line-0">
|
|
51
|
-
<rect x="0" y="1.5" width="878.4" height="24.65"/>
|
|
52
|
-
</clipPath>
|
|
53
|
-
<clipPath id="terminal-1566548822-line-1">
|
|
54
|
-
<rect x="0" y="25.9" width="878.4" height="24.65"/>
|
|
55
|
-
</clipPath>
|
|
56
|
-
<clipPath id="terminal-1566548822-line-2">
|
|
57
|
-
<rect x="0" y="50.3" width="878.4" height="24.65"/>
|
|
58
|
-
</clipPath>
|
|
59
|
-
<clipPath id="terminal-1566548822-line-3">
|
|
60
|
-
<rect x="0" y="74.7" width="878.4" height="24.65"/>
|
|
61
|
-
</clipPath>
|
|
62
|
-
</defs>
|
|
63
|
-
|
|
64
|
-
<rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="895" height="170" rx="8"/><text class="terminal-1566548822-title" fill="#c5c8c6" text-anchor="middle" x="447" y="27">dev-tip enable</text>
|
|
65
|
-
<g transform="translate(26,22)">
|
|
66
|
-
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
|
|
67
|
-
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
|
|
68
|
-
<circle cx="44" cy="0" r="7" fill="#28c840"/>
|
|
69
|
-
</g>
|
|
70
|
-
|
|
71
|
-
<g transform="translate(9, 41)" clip-path="url(#terminal-1566548822-clip-terminal)">
|
|
72
|
-
|
|
73
|
-
<g class="terminal-1566548822-matrix">
|
|
74
|
-
<text class="terminal-1566548822-r1" x="0" y="20" textLength="24.4" clip-path="url(#terminal-1566548822-line-0)">$ </text><text class="terminal-1566548822-r2" x="24.4" y="20" textLength="524.6" clip-path="url(#terminal-1566548822-line-0)">dev-tip enable --provider gemini --key AIza</text><text class="terminal-1566548822-r2" x="549" y="20" textLength="36.6" clip-path="url(#terminal-1566548822-line-0)">...</text><text class="terminal-1566548822-r1" x="878.4" y="20" textLength="12.2" clip-path="url(#terminal-1566548822-line-0)">
|
|
75
|
-
</text><text class="terminal-1566548822-r3" x="0" y="44.4" textLength="451.4" clip-path="url(#terminal-1566548822-line-1)">Pre-caching AI tips in the background</text><text class="terminal-1566548822-r4" x="451.4" y="44.4" textLength="36.6" clip-path="url(#terminal-1566548822-line-1)">...</text><text class="terminal-1566548822-r1" x="878.4" y="44.4" textLength="12.2" clip-path="url(#terminal-1566548822-line-1)">
|
|
76
|
-
</text><text class="terminal-1566548822-r5" x="0" y="68.8" textLength="219.6" clip-path="url(#terminal-1566548822-line-2)">Hook installed in </text><text class="terminal-1566548822-r5" x="219.6" y="68.8" textLength="134.2" clip-path="url(#terminal-1566548822-line-2)">/home/user/</text><text class="terminal-1566548822-r5" x="353.8" y="68.8" textLength="73.2" clip-path="url(#terminal-1566548822-line-2)">.zshrc</text><text class="terminal-1566548822-r1" x="878.4" y="68.8" textLength="12.2" clip-path="url(#terminal-1566548822-line-2)">
|
|
77
|
-
</text><text class="terminal-1566548822-r1" x="0" y="93.2" textLength="280.6" clip-path="url(#terminal-1566548822-line-3)">Tips will appear every </text><text class="terminal-1566548822-r6" x="280.6" y="93.2" textLength="24.4" clip-path="url(#terminal-1566548822-line-3)">15</text><text class="terminal-1566548822-r1" x="305" y="93.2" textLength="158.6" clip-path="url(#terminal-1566548822-line-3)"> commands or </text><text class="terminal-1566548822-r6" x="463.6" y="93.2" textLength="24.4" clip-path="url(#terminal-1566548822-line-3)">30</text><text class="terminal-1566548822-r1" x="488" y="93.2" textLength="109.8" clip-path="url(#terminal-1566548822-line-3)"> minutes.</text><text class="terminal-1566548822-r1" x="878.4" y="93.2" textLength="12.2" clip-path="url(#terminal-1566548822-line-3)">
|
|
78
|
-
</text><text class="terminal-1566548822-r1" x="0" y="117.6" textLength="305" clip-path="url(#terminal-1566548822-line-4)">Restart your zsh or run: </text><text class="terminal-1566548822-r7" x="305" y="117.6" textLength="97.6" clip-path="url(#terminal-1566548822-line-4)">source ~</text><text class="terminal-1566548822-r8" x="402.6" y="117.6" textLength="12.2" clip-path="url(#terminal-1566548822-line-4)">/</text><text class="terminal-1566548822-r9" x="414.8" y="117.6" textLength="73.2" clip-path="url(#terminal-1566548822-line-4)">.zshrc</text><text class="terminal-1566548822-r1" x="878.4" y="117.6" textLength="12.2" clip-path="url(#terminal-1566548822-line-4)">
|
|
79
|
-
</text>
|
|
80
|
-
</g>
|
|
81
|
-
</g>
|
|
82
|
-
</svg>
|
cli_dev_tip-0.1.1/assets/tip.svg
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
<svg class="rich-terminal" viewBox="0 0 897 245.2" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<!-- Generated with Rich https://www.textualize.io -->
|
|
3
|
-
<style>
|
|
4
|
-
|
|
5
|
-
@font-face {
|
|
6
|
-
font-family: "Fira Code";
|
|
7
|
-
src: local("FiraCode-Regular"),
|
|
8
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Regular.woff2") format("woff2"),
|
|
9
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Regular.woff") format("woff");
|
|
10
|
-
font-style: normal;
|
|
11
|
-
font-weight: 400;
|
|
12
|
-
}
|
|
13
|
-
@font-face {
|
|
14
|
-
font-family: "Fira Code";
|
|
15
|
-
src: local("FiraCode-Bold"),
|
|
16
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff2/FiraCode-Bold.woff2") format("woff2"),
|
|
17
|
-
url("https://cdnjs.cloudflare.com/ajax/libs/firacode/6.2.0/woff/FiraCode-Bold.woff") format("woff");
|
|
18
|
-
font-style: bold;
|
|
19
|
-
font-weight: 700;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.terminal-2291773011-matrix {
|
|
23
|
-
font-family: Fira Code, monospace;
|
|
24
|
-
font-size: 20px;
|
|
25
|
-
line-height: 24.4px;
|
|
26
|
-
font-variant-east-asian: full-width;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.terminal-2291773011-title {
|
|
30
|
-
font-size: 18px;
|
|
31
|
-
font-weight: bold;
|
|
32
|
-
font-family: arial;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.terminal-2291773011-r1 { fill: #c5c8c6 }
|
|
36
|
-
.terminal-2291773011-r2 { fill: #868887 }
|
|
37
|
-
</style>
|
|
38
|
-
|
|
39
|
-
<defs>
|
|
40
|
-
<clipPath id="terminal-2291773011-clip-terminal">
|
|
41
|
-
<rect x="0" y="0" width="877.4" height="194.2" />
|
|
42
|
-
</clipPath>
|
|
43
|
-
<clipPath id="terminal-2291773011-line-0">
|
|
44
|
-
<rect x="0" y="1.5" width="878.4" height="24.65"/>
|
|
45
|
-
</clipPath>
|
|
46
|
-
<clipPath id="terminal-2291773011-line-1">
|
|
47
|
-
<rect x="0" y="25.9" width="878.4" height="24.65"/>
|
|
48
|
-
</clipPath>
|
|
49
|
-
<clipPath id="terminal-2291773011-line-2">
|
|
50
|
-
<rect x="0" y="50.3" width="878.4" height="24.65"/>
|
|
51
|
-
</clipPath>
|
|
52
|
-
<clipPath id="terminal-2291773011-line-3">
|
|
53
|
-
<rect x="0" y="74.7" width="878.4" height="24.65"/>
|
|
54
|
-
</clipPath>
|
|
55
|
-
<clipPath id="terminal-2291773011-line-4">
|
|
56
|
-
<rect x="0" y="99.1" width="878.4" height="24.65"/>
|
|
57
|
-
</clipPath>
|
|
58
|
-
<clipPath id="terminal-2291773011-line-5">
|
|
59
|
-
<rect x="0" y="123.5" width="878.4" height="24.65"/>
|
|
60
|
-
</clipPath>
|
|
61
|
-
<clipPath id="terminal-2291773011-line-6">
|
|
62
|
-
<rect x="0" y="147.9" width="878.4" height="24.65"/>
|
|
63
|
-
</clipPath>
|
|
64
|
-
</defs>
|
|
65
|
-
|
|
66
|
-
<rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="895" height="243.2" rx="8"/><text class="terminal-2291773011-title" fill="#c5c8c6" text-anchor="middle" x="447" y="27">dev-tip</text>
|
|
67
|
-
<g transform="translate(26,22)">
|
|
68
|
-
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
|
|
69
|
-
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
|
|
70
|
-
<circle cx="44" cy="0" r="7" fill="#28c840"/>
|
|
71
|
-
</g>
|
|
72
|
-
|
|
73
|
-
<g transform="translate(9, 41)" clip-path="url(#terminal-2291773011-clip-terminal)">
|
|
74
|
-
|
|
75
|
-
<g class="terminal-2291773011-matrix">
|
|
76
|
-
<text class="terminal-2291773011-r1" x="878.4" y="20" textLength="12.2" clip-path="url(#terminal-2291773011-line-0)">
|
|
77
|
-
</text><text class="terminal-2291773011-r2" x="0" y="44.4" textLength="732" clip-path="url(#terminal-2291773011-line-1)">            🐍 python · beginner · Use enumerate() instead of</text><text class="terminal-2291773011-r1" x="878.4" y="44.4" textLength="12.2" clip-path="url(#terminal-2291773011-line-1)">
|
|
78
|
-
</text><text class="terminal-2291773011-r2" x="0" y="68.8" textLength="292.8" clip-path="url(#terminal-2291773011-line-2)">            range(len())</text><text class="terminal-2291773011-r1" x="878.4" y="68.8" textLength="12.2" clip-path="url(#terminal-2291773011-line-2)">
|
|
79
|
-
</text><text class="terminal-2291773011-r1" x="878.4" y="93.2" textLength="12.2" clip-path="url(#terminal-2291773011-line-3)">
|
|
80
|
-
</text><text class="terminal-2291773011-r2" x="0" y="117.6" textLength="878.4" clip-path="url(#terminal-2291773011-line-4)">            Instead of `for i in range(len(items))`, use `for i, item in</text><text class="terminal-2291773011-r1" x="878.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2291773011-line-4)">
|
|
81
|
-
</text><text class="terminal-2291773011-r2" x="0" y="142" textLength="878.4" clip-path="url(#terminal-2291773011-line-5)">            enumerate(items)`. It's more Pythonic and gives you both the</text><text class="terminal-2291773011-r1" x="878.4" y="142" textLength="12.2" clip-path="url(#terminal-2291773011-line-5)">
|
|
82
|
-
</text><text class="terminal-2291773011-r2" x="0" y="166.4" textLength="341.6" clip-path="url(#terminal-2291773011-line-6)">            index and value.</text><text class="terminal-2291773011-r1" x="878.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2291773011-line-6)">
|
|
83
|
-
</text><text class="terminal-2291773011-r1" x="878.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2291773011-line-7)">
|
|
84
|
-
</text>
|
|
85
|
-
</g>
|
|
86
|
-
</g>
|
|
87
|
-
</svg>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|