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.
Files changed (34) hide show
  1. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/PKG-INFO +10 -2
  2. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/README.md +9 -1
  3. cli_dev_tip-0.1.3/assets/enable.svg +80 -0
  4. cli_dev_tip-0.1.3/assets/header.png +0 -0
  5. cli_dev_tip-0.1.3/assets/tip.svg +87 -0
  6. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/hook.py +1 -1
  7. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/pyproject.toml +1 -1
  8. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/uv.lock +1 -1
  9. cli_dev_tip-0.1.1/assets/enable.svg +0 -82
  10. cli_dev_tip-0.1.1/assets/tip.svg +0 -87
  11. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/.gitignore +0 -0
  12. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/LICENSE +0 -0
  13. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/assets/pause.svg +0 -0
  14. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/assets/status.svg +0 -0
  15. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/__init__.py +0 -0
  16. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/__init__.py +0 -0
  17. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/cache.py +0 -0
  18. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/gemini.py +0 -0
  19. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/openrouter.py +0 -0
  20. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/prompt.py +0 -0
  21. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/ai/provider.py +0 -0
  22. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/cli.py +0 -0
  23. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/config.py +0 -0
  24. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/data/tips.yaml +0 -0
  25. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/history.py +0 -0
  26. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/prefetch.py +0 -0
  27. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/dev_tip/tips.py +0 -0
  28. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/conftest.py +0 -0
  29. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_cache.py +0 -0
  30. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_cli.py +0 -0
  31. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_config.py +0 -0
  32. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_history.py +0 -0
  33. {cli_dev_tip-0.1.1 → cli_dev_tip-0.1.3}/tests/test_hook.py +0 -0
  34. {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.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/tip.svg" width="600" alt="dev-tip showing a Python tip">
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/tip.svg" width="600" alt="dev-tip showing a Python tip">
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&#160;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)">$&#160;</text><text class="terminal-3667420291-r2" x="24.4" y="20" textLength="524.6" clip-path="url(#terminal-3667420291-line-0)">dev-tip&#160;enable&#160;--provider&#160;gemini&#160;--key&#160;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&#160;AI&#160;tips&#160;in&#160;the&#160;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&#160;installed&#160;in&#160;</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&#160;will&#160;appear&#160;every&#160;</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)">&#160;commands&#160;or&#160;</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)">&#160;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&#160;your&#160;shell:&#160;</text><text class="terminal-3667420291-r7" x="231.8" y="117.6" textLength="97.6" clip-path="url(#terminal-3667420291-line-4)">exec&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;🔀&#160;git&#160;·&#160;intermediate&#160;·&#160;Use&#160;rebase&#160;for&#160;clean&#160;linear&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Instead&#160;of&#160;git&#160;merge&#160;main&#160;on&#160;your&#160;feature&#160;branch,&#160;use&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;rebase&#160;main.&#160;It&#160;replays&#160;your&#160;commits&#160;on&#160;top&#160;of&#160;main,&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;history&#160;linear&#160;and&#160;easy&#160;to&#160;follow.&#160;Save&#160;merge&#160;commits&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;PRs&#160;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"Restart your {shell} or run: [bold]source {rc_file}[/bold]")
171
+ console.print(f"Reload your shell: [bold]exec {shell}[/bold]")
172
172
 
173
173
 
174
174
  def disable() -> None:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cli-dev-tip"
3
- version = "0.1.1"
3
+ version = "0.1.3"
4
4
  description = "Bite-sized developer tips in your terminal"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -4,7 +4,7 @@ requires-python = ">=3.10"
4
4
 
5
5
  [[package]]
6
6
  name = "cli-dev-tip"
7
- version = "0.1.1"
7
+ version = "0.1.2"
8
8
  source = { editable = "." }
9
9
  dependencies = [
10
10
  { name = "pyyaml" },
@@ -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&#160;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)">$&#160;</text><text class="terminal-1566548822-r2" x="24.4" y="20" textLength="524.6" clip-path="url(#terminal-1566548822-line-0)">dev-tip&#160;enable&#160;--provider&#160;gemini&#160;--key&#160;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&#160;AI&#160;tips&#160;in&#160;the&#160;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&#160;installed&#160;in&#160;</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&#160;will&#160;appear&#160;every&#160;</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)">&#160;commands&#160;or&#160;</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)">&#160;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&#160;your&#160;zsh&#160;or&#160;run:&#160;</text><text class="terminal-1566548822-r7" x="305" y="117.6" textLength="97.6" clip-path="url(#terminal-1566548822-line-4)">source&#160;~</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>
@@ -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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;🐍&#160;python&#160;·&#160;beginner&#160;·&#160;Use&#160;enumerate()&#160;instead&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Instead&#160;of&#160;`for&#160;i&#160;in&#160;range(len(items))`,&#160;use&#160;`for&#160;i,&#160;item&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;enumerate(items)`.&#160;It&#x27;s&#160;more&#160;Pythonic&#160;and&#160;gives&#160;you&#160;both&#160;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)">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;index&#160;and&#160;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