cli-dev-tip 0.1.0__tar.gz → 0.1.1__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.0 → cli_dev_tip-0.1.1}/PKG-INFO +24 -13
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/README.md +23 -12
- cli_dev_tip-0.1.1/assets/enable.svg +82 -0
- cli_dev_tip-0.1.1/assets/pause.svg +78 -0
- cli_dev_tip-0.1.1/assets/status.svg +156 -0
- cli_dev_tip-0.1.1/assets/tip.svg +87 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/pyproject.toml +1 -1
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/uv.lock +23 -23
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/.gitignore +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/LICENSE +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/__init__.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/ai/__init__.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/ai/cache.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/ai/gemini.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/ai/openrouter.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/ai/prompt.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/ai/provider.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/cli.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/config.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/data/tips.yaml +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/history.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/hook.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/prefetch.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/dev_tip/tips.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/tests/conftest.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/tests/test_cache.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/tests/test_cli.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/tests/test_config.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/tests/test_history.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/tests/test_hook.py +0 -0
- {cli_dev_tip-0.1.0 → cli_dev_tip-0.1.1}/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.1
|
|
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
|
|
@@ -30,6 +30,10 @@ Description-Content-Type: text/markdown
|
|
|
30
30
|
|
|
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
|
+
<p align="center">
|
|
34
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/tip.svg" width="600" alt="dev-tip showing a Python tip">
|
|
35
|
+
</p>
|
|
36
|
+
|
|
33
37
|
## What it does
|
|
34
38
|
|
|
35
39
|
- Shows tips periodically during your shell session (every N commands or M minutes)
|
|
@@ -47,7 +51,15 @@ A terminal tool that helps developers learn continuously by showing bite-sized t
|
|
|
47
51
|
uv tool install cli-dev-tip
|
|
48
52
|
```
|
|
49
53
|
|
|
50
|
-
|
|
54
|
+
Also works with pip or pipx:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
pip install cli-dev-tip
|
|
58
|
+
# or
|
|
59
|
+
pipx install cli-dev-tip
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
This makes `dev-tip` available globally from any terminal.
|
|
51
63
|
|
|
52
64
|
## Quick start
|
|
53
65
|
|
|
@@ -57,6 +69,10 @@ The recommended setup — AI-generated tips covering general IT topics, appearin
|
|
|
57
69
|
dev-tip enable --provider gemini --key YOUR_GEMINI_API_KEY
|
|
58
70
|
```
|
|
59
71
|
|
|
72
|
+
<p align="center">
|
|
73
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/enable.svg" width="600" alt="dev-tip enable output">
|
|
74
|
+
</p>
|
|
75
|
+
|
|
60
76
|
Get a free Gemini API key at https://aistudio.google.com or a free OpenRouter key at https://openrouter.ai/keys.
|
|
61
77
|
|
|
62
78
|
More examples:
|
|
@@ -161,10 +177,9 @@ Unknown topics produce a warning when using static tips (AI can handle any topic
|
|
|
161
177
|
|
|
162
178
|
Temporarily stop tips without removing the hook:
|
|
163
179
|
|
|
164
|
-
|
|
165
|
-
dev-tip
|
|
166
|
-
|
|
167
|
-
```
|
|
180
|
+
<p align="center">
|
|
181
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/pause.svg" width="600" alt="dev-tip pause and resume">
|
|
182
|
+
</p>
|
|
168
183
|
|
|
169
184
|
This creates/removes a `.paused` file in `~/.dev-tip/`. The shell hook checks for it with a fast `[ -f ]` test — no Python invoked when paused.
|
|
170
185
|
|
|
@@ -172,9 +187,9 @@ This creates/removes a `.paused` file in `~/.dev-tip/`. The shell hook checks fo
|
|
|
172
187
|
|
|
173
188
|
Show current configuration and diagnostics:
|
|
174
189
|
|
|
175
|
-
|
|
176
|
-
dev-tip status
|
|
177
|
-
|
|
190
|
+
<p align="center">
|
|
191
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/status.svg" width="600" alt="dev-tip status output">
|
|
192
|
+
</p>
|
|
178
193
|
|
|
179
194
|
Displays hook state, pause status, config values, AI provider info, cache stats, and tip history count.
|
|
180
195
|
|
|
@@ -217,7 +232,3 @@ Settings are stored in `~/.dev-tip/config.toml`:
|
|
|
217
232
|
```
|
|
218
233
|
|
|
219
234
|
Values passed via `dev-tip enable` flags are saved here automatically. Comments in the config file are preserved when values are updated.
|
|
220
|
-
|
|
221
|
-
## Status
|
|
222
|
-
|
|
223
|
-
Early development — not yet published to PyPI.
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
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
|
+
<p align="center">
|
|
6
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/tip.svg" width="600" alt="dev-tip showing a Python tip">
|
|
7
|
+
</p>
|
|
8
|
+
|
|
5
9
|
## What it does
|
|
6
10
|
|
|
7
11
|
- Shows tips periodically during your shell session (every N commands or M minutes)
|
|
@@ -19,7 +23,15 @@ A terminal tool that helps developers learn continuously by showing bite-sized t
|
|
|
19
23
|
uv tool install cli-dev-tip
|
|
20
24
|
```
|
|
21
25
|
|
|
22
|
-
|
|
26
|
+
Also works with pip or pipx:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
pip install cli-dev-tip
|
|
30
|
+
# or
|
|
31
|
+
pipx install cli-dev-tip
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
This makes `dev-tip` available globally from any terminal.
|
|
23
35
|
|
|
24
36
|
## Quick start
|
|
25
37
|
|
|
@@ -29,6 +41,10 @@ The recommended setup — AI-generated tips covering general IT topics, appearin
|
|
|
29
41
|
dev-tip enable --provider gemini --key YOUR_GEMINI_API_KEY
|
|
30
42
|
```
|
|
31
43
|
|
|
44
|
+
<p align="center">
|
|
45
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/enable.svg" width="600" alt="dev-tip enable output">
|
|
46
|
+
</p>
|
|
47
|
+
|
|
32
48
|
Get a free Gemini API key at https://aistudio.google.com or a free OpenRouter key at https://openrouter.ai/keys.
|
|
33
49
|
|
|
34
50
|
More examples:
|
|
@@ -133,10 +149,9 @@ Unknown topics produce a warning when using static tips (AI can handle any topic
|
|
|
133
149
|
|
|
134
150
|
Temporarily stop tips without removing the hook:
|
|
135
151
|
|
|
136
|
-
|
|
137
|
-
dev-tip
|
|
138
|
-
|
|
139
|
-
```
|
|
152
|
+
<p align="center">
|
|
153
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/pause.svg" width="600" alt="dev-tip pause and resume">
|
|
154
|
+
</p>
|
|
140
155
|
|
|
141
156
|
This creates/removes a `.paused` file in `~/.dev-tip/`. The shell hook checks for it with a fast `[ -f ]` test — no Python invoked when paused.
|
|
142
157
|
|
|
@@ -144,9 +159,9 @@ This creates/removes a `.paused` file in `~/.dev-tip/`. The shell hook checks fo
|
|
|
144
159
|
|
|
145
160
|
Show current configuration and diagnostics:
|
|
146
161
|
|
|
147
|
-
|
|
148
|
-
dev-tip status
|
|
149
|
-
|
|
162
|
+
<p align="center">
|
|
163
|
+
<img src="https://raw.githubusercontent.com/My-CD-ROM/cli-dev-tip/master/assets/status.svg" width="600" alt="dev-tip status output">
|
|
164
|
+
</p>
|
|
150
165
|
|
|
151
166
|
Displays hook state, pause status, config values, AI provider info, cache stats, and tip history count.
|
|
152
167
|
|
|
@@ -189,7 +204,3 @@ Settings are stored in `~/.dev-tip/config.toml`:
|
|
|
189
204
|
```
|
|
190
205
|
|
|
191
206
|
Values passed via `dev-tip enable` flags are saved here automatically. Comments in the config file are preserved when values are updated.
|
|
192
|
-
|
|
193
|
-
## Status
|
|
194
|
-
|
|
195
|
-
Early development — not yet published to PyPI.
|
|
@@ -0,0 +1,82 @@
|
|
|
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>
|
|
@@ -0,0 +1,78 @@
|
|
|
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-183878303-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-183878303-title {
|
|
30
|
+
font-size: 18px;
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
font-family: arial;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.terminal-183878303-r1 { fill: #c5c8c6 }
|
|
36
|
+
.terminal-183878303-r2 { fill: #98a84b;font-weight: bold }
|
|
37
|
+
.terminal-183878303-r3 { fill: #d0b344 }
|
|
38
|
+
.terminal-183878303-r4 { fill: #c5c8c6;font-weight: bold }
|
|
39
|
+
.terminal-183878303-r5 { fill: #98a84b }
|
|
40
|
+
</style>
|
|
41
|
+
|
|
42
|
+
<defs>
|
|
43
|
+
<clipPath id="terminal-183878303-clip-terminal">
|
|
44
|
+
<rect x="0" y="0" width="877.4" height="121.0" />
|
|
45
|
+
</clipPath>
|
|
46
|
+
<clipPath id="terminal-183878303-line-0">
|
|
47
|
+
<rect x="0" y="1.5" width="878.4" height="24.65"/>
|
|
48
|
+
</clipPath>
|
|
49
|
+
<clipPath id="terminal-183878303-line-1">
|
|
50
|
+
<rect x="0" y="25.9" width="878.4" height="24.65"/>
|
|
51
|
+
</clipPath>
|
|
52
|
+
<clipPath id="terminal-183878303-line-2">
|
|
53
|
+
<rect x="0" y="50.3" width="878.4" height="24.65"/>
|
|
54
|
+
</clipPath>
|
|
55
|
+
<clipPath id="terminal-183878303-line-3">
|
|
56
|
+
<rect x="0" y="74.7" width="878.4" height="24.65"/>
|
|
57
|
+
</clipPath>
|
|
58
|
+
</defs>
|
|
59
|
+
|
|
60
|
+
<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-183878303-title" fill="#c5c8c6" text-anchor="middle" x="447" y="27">dev-tip pause / resume</text>
|
|
61
|
+
<g transform="translate(26,22)">
|
|
62
|
+
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
|
|
63
|
+
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
|
|
64
|
+
<circle cx="44" cy="0" r="7" fill="#28c840"/>
|
|
65
|
+
</g>
|
|
66
|
+
|
|
67
|
+
<g transform="translate(9, 41)" clip-path="url(#terminal-183878303-clip-terminal)">
|
|
68
|
+
|
|
69
|
+
<g class="terminal-183878303-matrix">
|
|
70
|
+
<text class="terminal-183878303-r1" x="0" y="20" textLength="24.4" clip-path="url(#terminal-183878303-line-0)">$ </text><text class="terminal-183878303-r2" x="24.4" y="20" textLength="158.6" clip-path="url(#terminal-183878303-line-0)">dev-tip pause</text><text class="terminal-183878303-r1" x="878.4" y="20" textLength="12.2" clip-path="url(#terminal-183878303-line-0)">
|
|
71
|
+
</text><text class="terminal-183878303-r3" x="0" y="44.4" textLength="146.4" clip-path="url(#terminal-183878303-line-1)">Tips paused.</text><text class="terminal-183878303-r1" x="146.4" y="44.4" textLength="61" clip-path="url(#terminal-183878303-line-1)"> Run </text><text class="terminal-183878303-r4" x="207.4" y="44.4" textLength="170.8" clip-path="url(#terminal-183878303-line-1)">dev-tip resume</text><text class="terminal-183878303-r1" x="378.2" y="44.4" textLength="158.6" clip-path="url(#terminal-183878303-line-1)"> to continue.</text><text class="terminal-183878303-r1" x="878.4" y="44.4" textLength="12.2" clip-path="url(#terminal-183878303-line-1)">
|
|
72
|
+
</text><text class="terminal-183878303-r1" x="878.4" y="68.8" textLength="12.2" clip-path="url(#terminal-183878303-line-2)">
|
|
73
|
+
</text><text class="terminal-183878303-r1" x="0" y="93.2" textLength="24.4" clip-path="url(#terminal-183878303-line-3)">$ </text><text class="terminal-183878303-r2" x="24.4" y="93.2" textLength="170.8" clip-path="url(#terminal-183878303-line-3)">dev-tip resume</text><text class="terminal-183878303-r1" x="878.4" y="93.2" textLength="12.2" clip-path="url(#terminal-183878303-line-3)">
|
|
74
|
+
</text><text class="terminal-183878303-r5" x="0" y="117.6" textLength="158.6" clip-path="url(#terminal-183878303-line-4)">Tips resumed.</text><text class="terminal-183878303-r1" x="878.4" y="117.6" textLength="12.2" clip-path="url(#terminal-183878303-line-4)">
|
|
75
|
+
</text>
|
|
76
|
+
</g>
|
|
77
|
+
</g>
|
|
78
|
+
</svg>
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
<svg class="rich-terminal" viewBox="0 0 897 635.5999999999999" 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-2122747316-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-2122747316-title {
|
|
30
|
+
font-size: 18px;
|
|
31
|
+
font-weight: bold;
|
|
32
|
+
font-family: arial;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.terminal-2122747316-r1 { fill: #c5c8c6;font-weight: bold }
|
|
36
|
+
.terminal-2122747316-r2 { fill: #c5c8c6 }
|
|
37
|
+
.terminal-2122747316-r3 { fill: #98a84b }
|
|
38
|
+
.terminal-2122747316-r4 { fill: #868887 }
|
|
39
|
+
.terminal-2122747316-r5 { fill: #68a0b3;font-weight: bold }
|
|
40
|
+
.terminal-2122747316-r6 { fill: #ff2627;font-style: italic; }
|
|
41
|
+
.terminal-2122747316-r7 { fill: #d0b344 }
|
|
42
|
+
</style>
|
|
43
|
+
|
|
44
|
+
<defs>
|
|
45
|
+
<clipPath id="terminal-2122747316-clip-terminal">
|
|
46
|
+
<rect x="0" y="0" width="877.4" height="584.5999999999999" />
|
|
47
|
+
</clipPath>
|
|
48
|
+
<clipPath id="terminal-2122747316-line-0">
|
|
49
|
+
<rect x="0" y="1.5" width="878.4" height="24.65"/>
|
|
50
|
+
</clipPath>
|
|
51
|
+
<clipPath id="terminal-2122747316-line-1">
|
|
52
|
+
<rect x="0" y="25.9" width="878.4" height="24.65"/>
|
|
53
|
+
</clipPath>
|
|
54
|
+
<clipPath id="terminal-2122747316-line-2">
|
|
55
|
+
<rect x="0" y="50.3" width="878.4" height="24.65"/>
|
|
56
|
+
</clipPath>
|
|
57
|
+
<clipPath id="terminal-2122747316-line-3">
|
|
58
|
+
<rect x="0" y="74.7" width="878.4" height="24.65"/>
|
|
59
|
+
</clipPath>
|
|
60
|
+
<clipPath id="terminal-2122747316-line-4">
|
|
61
|
+
<rect x="0" y="99.1" width="878.4" height="24.65"/>
|
|
62
|
+
</clipPath>
|
|
63
|
+
<clipPath id="terminal-2122747316-line-5">
|
|
64
|
+
<rect x="0" y="123.5" width="878.4" height="24.65"/>
|
|
65
|
+
</clipPath>
|
|
66
|
+
<clipPath id="terminal-2122747316-line-6">
|
|
67
|
+
<rect x="0" y="147.9" width="878.4" height="24.65"/>
|
|
68
|
+
</clipPath>
|
|
69
|
+
<clipPath id="terminal-2122747316-line-7">
|
|
70
|
+
<rect x="0" y="172.3" width="878.4" height="24.65"/>
|
|
71
|
+
</clipPath>
|
|
72
|
+
<clipPath id="terminal-2122747316-line-8">
|
|
73
|
+
<rect x="0" y="196.7" width="878.4" height="24.65"/>
|
|
74
|
+
</clipPath>
|
|
75
|
+
<clipPath id="terminal-2122747316-line-9">
|
|
76
|
+
<rect x="0" y="221.1" width="878.4" height="24.65"/>
|
|
77
|
+
</clipPath>
|
|
78
|
+
<clipPath id="terminal-2122747316-line-10">
|
|
79
|
+
<rect x="0" y="245.5" width="878.4" height="24.65"/>
|
|
80
|
+
</clipPath>
|
|
81
|
+
<clipPath id="terminal-2122747316-line-11">
|
|
82
|
+
<rect x="0" y="269.9" width="878.4" height="24.65"/>
|
|
83
|
+
</clipPath>
|
|
84
|
+
<clipPath id="terminal-2122747316-line-12">
|
|
85
|
+
<rect x="0" y="294.3" width="878.4" height="24.65"/>
|
|
86
|
+
</clipPath>
|
|
87
|
+
<clipPath id="terminal-2122747316-line-13">
|
|
88
|
+
<rect x="0" y="318.7" width="878.4" height="24.65"/>
|
|
89
|
+
</clipPath>
|
|
90
|
+
<clipPath id="terminal-2122747316-line-14">
|
|
91
|
+
<rect x="0" y="343.1" width="878.4" height="24.65"/>
|
|
92
|
+
</clipPath>
|
|
93
|
+
<clipPath id="terminal-2122747316-line-15">
|
|
94
|
+
<rect x="0" y="367.5" width="878.4" height="24.65"/>
|
|
95
|
+
</clipPath>
|
|
96
|
+
<clipPath id="terminal-2122747316-line-16">
|
|
97
|
+
<rect x="0" y="391.9" width="878.4" height="24.65"/>
|
|
98
|
+
</clipPath>
|
|
99
|
+
<clipPath id="terminal-2122747316-line-17">
|
|
100
|
+
<rect x="0" y="416.3" width="878.4" height="24.65"/>
|
|
101
|
+
</clipPath>
|
|
102
|
+
<clipPath id="terminal-2122747316-line-18">
|
|
103
|
+
<rect x="0" y="440.7" width="878.4" height="24.65"/>
|
|
104
|
+
</clipPath>
|
|
105
|
+
<clipPath id="terminal-2122747316-line-19">
|
|
106
|
+
<rect x="0" y="465.1" width="878.4" height="24.65"/>
|
|
107
|
+
</clipPath>
|
|
108
|
+
<clipPath id="terminal-2122747316-line-20">
|
|
109
|
+
<rect x="0" y="489.5" width="878.4" height="24.65"/>
|
|
110
|
+
</clipPath>
|
|
111
|
+
<clipPath id="terminal-2122747316-line-21">
|
|
112
|
+
<rect x="0" y="513.9" width="878.4" height="24.65"/>
|
|
113
|
+
</clipPath>
|
|
114
|
+
<clipPath id="terminal-2122747316-line-22">
|
|
115
|
+
<rect x="0" y="538.3" width="878.4" height="24.65"/>
|
|
116
|
+
</clipPath>
|
|
117
|
+
</defs>
|
|
118
|
+
|
|
119
|
+
<rect fill="#292929" stroke="rgba(255,255,255,0.35)" stroke-width="1" x="1" y="1" width="895" height="633.6" rx="8"/><text class="terminal-2122747316-title" fill="#c5c8c6" text-anchor="middle" x="447" y="27">dev-tip status</text>
|
|
120
|
+
<g transform="translate(26,22)">
|
|
121
|
+
<circle cx="0" cy="0" r="7" fill="#ff5f57"/>
|
|
122
|
+
<circle cx="22" cy="0" r="7" fill="#febc2e"/>
|
|
123
|
+
<circle cx="44" cy="0" r="7" fill="#28c840"/>
|
|
124
|
+
</g>
|
|
125
|
+
|
|
126
|
+
<g transform="translate(9, 41)" clip-path="url(#terminal-2122747316-clip-terminal)">
|
|
127
|
+
|
|
128
|
+
<g class="terminal-2122747316-matrix">
|
|
129
|
+
<text class="terminal-2122747316-r1" x="0" y="20" textLength="170.8" clip-path="url(#terminal-2122747316-line-0)">dev-tip status</text><text class="terminal-2122747316-r2" x="878.4" y="20" textLength="12.2" clip-path="url(#terminal-2122747316-line-0)">
|
|
130
|
+
</text><text class="terminal-2122747316-r2" x="878.4" y="44.4" textLength="12.2" clip-path="url(#terminal-2122747316-line-1)">
|
|
131
|
+
</text><text class="terminal-2122747316-r2" x="0" y="68.8" textLength="134.2" clip-path="url(#terminal-2122747316-line-2)">  Hook:    </text><text class="terminal-2122747316-r3" x="134.2" y="68.8" textLength="109.8" clip-path="url(#terminal-2122747316-line-2)">installed</text><text class="terminal-2122747316-r1" x="256.2" y="68.8" textLength="12.2" clip-path="url(#terminal-2122747316-line-2)">(</text><text class="terminal-2122747316-r2" x="268.4" y="68.8" textLength="73.2" clip-path="url(#terminal-2122747316-line-2)">.zshrc</text><text class="terminal-2122747316-r1" x="341.6" y="68.8" textLength="12.2" clip-path="url(#terminal-2122747316-line-2)">)</text><text class="terminal-2122747316-r2" x="878.4" y="68.8" textLength="12.2" clip-path="url(#terminal-2122747316-line-2)">
|
|
132
|
+
</text><text class="terminal-2122747316-r2" x="0" y="93.2" textLength="134.2" clip-path="url(#terminal-2122747316-line-3)">  Paused:  </text><text class="terminal-2122747316-r3" x="134.2" y="93.2" textLength="24.4" clip-path="url(#terminal-2122747316-line-3)">no</text><text class="terminal-2122747316-r2" x="878.4" y="93.2" textLength="12.2" clip-path="url(#terminal-2122747316-line-3)">
|
|
133
|
+
</text><text class="terminal-2122747316-r2" x="878.4" y="117.6" textLength="12.2" clip-path="url(#terminal-2122747316-line-4)">
|
|
134
|
+
</text><text class="terminal-2122747316-r1" x="0" y="142" textLength="97.6" clip-path="url(#terminal-2122747316-line-5)">  Config</text><text class="terminal-2122747316-r2" x="878.4" y="142" textLength="12.2" clip-path="url(#terminal-2122747316-line-5)">
|
|
135
|
+
</text><text class="terminal-2122747316-r2" x="0" y="166.4" textLength="244" clip-path="url(#terminal-2122747316-line-6)">    topic:          </text><text class="terminal-2122747316-r4" x="244" y="166.4" textLength="36.6" clip-path="url(#terminal-2122747316-line-6)">any</text><text class="terminal-2122747316-r2" x="878.4" y="166.4" textLength="12.2" clip-path="url(#terminal-2122747316-line-6)">
|
|
136
|
+
</text><text class="terminal-2122747316-r2" x="0" y="190.8" textLength="244" clip-path="url(#terminal-2122747316-line-7)">    level:          </text><text class="terminal-2122747316-r4" x="244" y="190.8" textLength="36.6" clip-path="url(#terminal-2122747316-line-7)">any</text><text class="terminal-2122747316-r2" x="878.4" y="190.8" textLength="12.2" clip-path="url(#terminal-2122747316-line-7)">
|
|
137
|
+
</text><text class="terminal-2122747316-r2" x="0" y="215.2" textLength="244" clip-path="url(#terminal-2122747316-line-8)">    every_commands: </text><text class="terminal-2122747316-r5" x="244" y="215.2" textLength="24.4" clip-path="url(#terminal-2122747316-line-8)">15</text><text class="terminal-2122747316-r2" x="878.4" y="215.2" textLength="12.2" clip-path="url(#terminal-2122747316-line-8)">
|
|
138
|
+
</text><text class="terminal-2122747316-r2" x="0" y="239.6" textLength="244" clip-path="url(#terminal-2122747316-line-9)">    every_minutes:  </text><text class="terminal-2122747316-r5" x="244" y="239.6" textLength="24.4" clip-path="url(#terminal-2122747316-line-9)">30</text><text class="terminal-2122747316-r2" x="878.4" y="239.6" textLength="12.2" clip-path="url(#terminal-2122747316-line-9)">
|
|
139
|
+
</text><text class="terminal-2122747316-r2" x="0" y="264" textLength="244" clip-path="url(#terminal-2122747316-line-10)">    quiet:          </text><text class="terminal-2122747316-r6" x="244" y="264" textLength="61" clip-path="url(#terminal-2122747316-line-10)">False</text><text class="terminal-2122747316-r2" x="878.4" y="264" textLength="12.2" clip-path="url(#terminal-2122747316-line-10)">
|
|
140
|
+
</text><text class="terminal-2122747316-r2" x="878.4" y="288.4" textLength="12.2" clip-path="url(#terminal-2122747316-line-11)">
|
|
141
|
+
</text><text class="terminal-2122747316-r1" x="0" y="312.8" textLength="48.8" clip-path="url(#terminal-2122747316-line-12)">  AI</text><text class="terminal-2122747316-r2" x="878.4" y="312.8" textLength="12.2" clip-path="url(#terminal-2122747316-line-12)">
|
|
142
|
+
</text><text class="terminal-2122747316-r2" x="0" y="337.2" textLength="244" clip-path="url(#terminal-2122747316-line-13)">    provider: gemini</text><text class="terminal-2122747316-r2" x="878.4" y="337.2" textLength="12.2" clip-path="url(#terminal-2122747316-line-13)">
|
|
143
|
+
</text><text class="terminal-2122747316-r2" x="0" y="361.6" textLength="170.8" clip-path="url(#terminal-2122747316-line-14)">    model:    </text><text class="terminal-2122747316-r4" x="170.8" y="361.6" textLength="85.4" clip-path="url(#terminal-2122747316-line-14)">default</text><text class="terminal-2122747316-r2" x="878.4" y="361.6" textLength="12.2" clip-path="url(#terminal-2122747316-line-14)">
|
|
144
|
+
</text><text class="terminal-2122747316-r2" x="0" y="386" textLength="219.6" clip-path="url(#terminal-2122747316-line-15)">    key:      AIza</text><text class="terminal-2122747316-r7" x="219.6" y="386" textLength="36.6" clip-path="url(#terminal-2122747316-line-15)">...</text><text class="terminal-2122747316-r2" x="256.2" y="386" textLength="48.8" clip-path="url(#terminal-2122747316-line-15)">X9kM</text><text class="terminal-2122747316-r2" x="878.4" y="386" textLength="12.2" clip-path="url(#terminal-2122747316-line-15)">
|
|
145
|
+
</text><text class="terminal-2122747316-r2" x="878.4" y="410.4" textLength="12.2" clip-path="url(#terminal-2122747316-line-16)">
|
|
146
|
+
</text><text class="terminal-2122747316-r1" x="0" y="434.8" textLength="85.4" clip-path="url(#terminal-2122747316-line-17)">  Cache</text><text class="terminal-2122747316-r2" x="878.4" y="434.8" textLength="12.2" clip-path="url(#terminal-2122747316-line-17)">
|
|
147
|
+
</text><text class="terminal-2122747316-r2" x="0" y="459.2" textLength="219.6" clip-path="url(#terminal-2122747316-line-18)">    cached keys:  </text><text class="terminal-2122747316-r5" x="219.6" y="459.2" textLength="12.2" clip-path="url(#terminal-2122747316-line-18)">2</text><text class="terminal-2122747316-r2" x="878.4" y="459.2" textLength="12.2" clip-path="url(#terminal-2122747316-line-18)">
|
|
148
|
+
</text><text class="terminal-2122747316-r2" x="0" y="483.6" textLength="219.6" clip-path="url(#terminal-2122747316-line-19)">    total tips:   </text><text class="terminal-2122747316-r5" x="219.6" y="483.6" textLength="24.4" clip-path="url(#terminal-2122747316-line-19)">20</text><text class="terminal-2122747316-r2" x="878.4" y="483.6" textLength="12.2" clip-path="url(#terminal-2122747316-line-19)">
|
|
149
|
+
</text><text class="terminal-2122747316-r2" x="0" y="508" textLength="244" clip-path="url(#terminal-2122747316-line-20)">    cooldown:     no</text><text class="terminal-2122747316-r2" x="878.4" y="508" textLength="12.2" clip-path="url(#terminal-2122747316-line-20)">
|
|
150
|
+
</text><text class="terminal-2122747316-r2" x="878.4" y="532.4" textLength="12.2" clip-path="url(#terminal-2122747316-line-21)">
|
|
151
|
+
</text><text class="terminal-2122747316-r1" x="0" y="556.8" textLength="109.8" clip-path="url(#terminal-2122747316-line-22)">  History</text><text class="terminal-2122747316-r2" x="878.4" y="556.8" textLength="12.2" clip-path="url(#terminal-2122747316-line-22)">
|
|
152
|
+
</text><text class="terminal-2122747316-r2" x="0" y="581.2" textLength="183" clip-path="url(#terminal-2122747316-line-23)">    tips seen: </text><text class="terminal-2122747316-r5" x="183" y="581.2" textLength="24.4" clip-path="url(#terminal-2122747316-line-23)">47</text><text class="terminal-2122747316-r2" x="878.4" y="581.2" textLength="12.2" clip-path="url(#terminal-2122747316-line-23)">
|
|
153
|
+
</text>
|
|
154
|
+
</g>
|
|
155
|
+
</g>
|
|
156
|
+
</svg>
|
|
@@ -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-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>
|
|
@@ -3,29 +3,8 @@ revision = 3
|
|
|
3
3
|
requires-python = ">=3.10"
|
|
4
4
|
|
|
5
5
|
[[package]]
|
|
6
|
-
name = "
|
|
7
|
-
version = "
|
|
8
|
-
source = { registry = "https://pypi.org/simple" }
|
|
9
|
-
dependencies = [
|
|
10
|
-
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
11
|
-
]
|
|
12
|
-
sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" }
|
|
13
|
-
wheels = [
|
|
14
|
-
{ url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" },
|
|
15
|
-
]
|
|
16
|
-
|
|
17
|
-
[[package]]
|
|
18
|
-
name = "colorama"
|
|
19
|
-
version = "0.4.6"
|
|
20
|
-
source = { registry = "https://pypi.org/simple" }
|
|
21
|
-
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
|
22
|
-
wheels = [
|
|
23
|
-
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
|
24
|
-
]
|
|
25
|
-
|
|
26
|
-
[[package]]
|
|
27
|
-
name = "dev-tip"
|
|
28
|
-
version = "0.1.0"
|
|
6
|
+
name = "cli-dev-tip"
|
|
7
|
+
version = "0.1.1"
|
|
29
8
|
source = { editable = "." }
|
|
30
9
|
dependencies = [
|
|
31
10
|
{ name = "pyyaml" },
|
|
@@ -48,6 +27,27 @@ requires-dist = [
|
|
|
48
27
|
[package.metadata.requires-dev]
|
|
49
28
|
dev = [{ name = "pytest" }]
|
|
50
29
|
|
|
30
|
+
[[package]]
|
|
31
|
+
name = "click"
|
|
32
|
+
version = "8.3.1"
|
|
33
|
+
source = { registry = "https://pypi.org/simple" }
|
|
34
|
+
dependencies = [
|
|
35
|
+
{ name = "colorama", marker = "sys_platform == 'win32'" },
|
|
36
|
+
]
|
|
37
|
+
sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" }
|
|
38
|
+
wheels = [
|
|
39
|
+
{ url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" },
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
[[package]]
|
|
43
|
+
name = "colorama"
|
|
44
|
+
version = "0.4.6"
|
|
45
|
+
source = { registry = "https://pypi.org/simple" }
|
|
46
|
+
sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" }
|
|
47
|
+
wheels = [
|
|
48
|
+
{ url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" },
|
|
49
|
+
]
|
|
50
|
+
|
|
51
51
|
[[package]]
|
|
52
52
|
name = "exceptiongroup"
|
|
53
53
|
version = "1.3.1"
|
|
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
|