galaaz 2.1.10.pre.2 → 2.1.10.pre.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d3daf3e8ef8a905c19d570fd83de8218821a904f02f7ac8adda498cb5c42a6a6
4
- data.tar.gz: 0d9071b1b04999a690cbb3d748a1e09d84a98b021f143d5fe950a9324a5daeb5
3
+ metadata.gz: 7404dd1ff8d30079d97b72d2b387a2ec61c616d1f16cc4c6a1222536d0db3808
4
+ data.tar.gz: 896ca5ffdc819f1ddf1429865522d73bad2c9228968d7f158f5fcfb2eb2690f4
5
5
  SHA512:
6
- metadata.gz: 6bbfb2c3bc020ef0768d7ba55754b8371ffd996f08c84d68396c5584449be24537550495bf3925c8ab3dc47aafd9a208de45a998f5ceee4e36f8d87d2bcaea4f
7
- data.tar.gz: 5f7f357dc2e155e0934835d18aa5d6a2f8e61e985198ae39f6f4257d9073cb8cb91a3532ec3cccc9a687b3b4fa7f35696de2b51992cf3337ee0dc690469a8f00
6
+ metadata.gz: 052c2da4bec2e9a6db9cb37d4eaf298d3096c43e3e73f6a84d39ff4c58dafb2aacb0d0ca648825254252d84796d2087c2eb9b59c671f2f2eca195791312bc868
7
+ data.tar.gz: 54221b60df36d3ca285a8c88ceb12d534ab6b56a3684531092f9aee6c7bb85b723c5e52618ca0357c58fe19f2ce70b47529bb0652e87703de5480f91a9f379ac
data/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 2.1.10.pre.3
6
+
7
+ ### Fixed
8
+
9
+ - Omarchy brand icon: hand-drawn R + oversized ruby cutout (no PNG auto-trace);
10
+ build fails if gem hole is too small; preview PNGs at 16/24/48px.
11
+ - Omarchy menu: brand icons use `\uE900` + `iconFont: galaaz`; remove separate
12
+ TeX menu row (Knit installs TinyTeX); remove Knit demo (oh_my).
13
+
5
14
  ## 2.1.10.pre.2
6
15
 
7
16
  ### Fixed
@@ -18,10 +18,13 @@ Rebuild after editing the SVG:
18
18
 
19
19
  ```bash
20
20
  python3 -m venv /tmp/galaaz-font-venv
21
- /tmp/galaaz-font-venv/bin/pip install fonttools
21
+ /tmp/galaaz-font-venv/bin/pip install fonttools pillow
22
22
  /tmp/galaaz-font-venv/bin/python logos/icon-font/build_font.py
23
23
  ```
24
24
 
25
+ The build writes `preview/glyph_{16,24,48}.png` and **fails** if the gem
26
+ cutout is too small for menu size. Inspect those PNGs before shipping.
27
+
25
28
  `galaaz omarchy` installs the TTF to `~/.local/share/fonts/galaaz/` and the menu
26
29
  uses `"iconFont": "galaaz"`. Restart the Omarchy shell after install so Qt
27
30
  reloads fonts (`omarchy menu refresh` alone is not enough for a new family).
@@ -13,12 +13,14 @@ from fontTools.svgLib.path import SVGPath
13
13
  from fontTools.ttLib import TTFont
14
14
  from fontTools.ttLib.tables._g_l_y_f import Glyph as TTGlyph
15
15
  from fontTools.ttLib.tables._g_l_y_f import GlyphCoordinates
16
- from fontTools.ttLib.tables._g_l_y_f import flagOnCurve
17
16
 
18
17
  ROOT = Path(__file__).resolve().parents[2]
19
18
  SVG = ROOT / "logos" / "icon-font" / "galaaz-mark.svg"
20
19
  OUT = ROOT / "script" / "omarchy" / "fonts" / "galaaz.ttf"
20
+ PREVIEW_DIR = ROOT / "logos" / "icon-font" / "preview"
21
21
  CODEPOINT = 0xE900
22
+ # Gem cutout must stay visible at menu size (~16px). Tiny holes collapse.
23
+ MIN_HOLE_AREA_RATIO = 0.04
22
24
 
23
25
 
24
26
  def extract_path_d(svg_text: str) -> str:
@@ -69,6 +71,30 @@ def fix_hole_windings(glyph: TTGlyph) -> None:
69
71
  glyph.numberOfContours = len(new_ends)
70
72
 
71
73
 
74
+ def write_previews(ttf_path: Path) -> None:
75
+ """Write menu-size PNG previews next to the SVG (requires Pillow)."""
76
+ try:
77
+ from PIL import Image, ImageDraw, ImageFont
78
+ except ImportError:
79
+ print(" preview: skipped (pip install pillow)")
80
+ return
81
+
82
+ PREVIEW_DIR.mkdir(parents=True, exist_ok=True)
83
+ for size in (16, 24, 48):
84
+ canvas = max(64, size * 2)
85
+ img = Image.new("RGBA", (canvas, canvas), (30, 30, 30, 255))
86
+ draw = ImageDraw.Draw(img)
87
+ font = ImageFont.truetype(str(ttf_path), size)
88
+ bbox = draw.textbbox((0, 0), "\uE900", font=font)
89
+ w, h = bbox[2] - bbox[0], bbox[3] - bbox[1]
90
+ x = (canvas - w) // 2 - bbox[0]
91
+ y = (canvas - h) // 2 - bbox[1]
92
+ draw.text((x, y), "\uE900", font=font, fill=(230, 230, 230, 255))
93
+ out = PREVIEW_DIR / f"glyph_{size}.png"
94
+ img.save(out)
95
+ print(f" preview: {out}")
96
+
97
+
72
98
  def main() -> int:
73
99
  d = extract_path_d(SVG.read_text(encoding="utf-8"))
74
100
  transform = Transform(1, 0, 0, -1, 0, 1000)
@@ -103,7 +129,7 @@ def main() -> int:
103
129
  "uniqueFontIdentifier": "galaaz Regular",
104
130
  "fullName": "galaaz Regular",
105
131
  "psName": "galaaz-Regular",
106
- "version": "Version 1.000",
132
+ "version": "Version 1.001",
107
133
  "manufacturer": "Galaaz",
108
134
  "description": "Monochrome Galaaz mark for Omarchy menu rows (U+E900).",
109
135
  }
@@ -117,12 +143,26 @@ def main() -> int:
117
143
  coords = list(g.coordinates)
118
144
  ends = list(g.endPtsOfContours)
119
145
  start = 0
146
+ areas = []
120
147
  for i, end in enumerate(ends):
121
148
  pts = coords[start : end + 1]
122
149
  a = signed_area(pts)
150
+ areas.append(a)
123
151
  print(f" contour {i}: {'CW' if a < 0 else 'CCW'} area={a:.0f}")
124
152
  start = end + 1
153
+ if len(areas) < 2:
154
+ raise SystemExit("expected outer + gem hole contours")
155
+ outer = abs(areas[0])
156
+ hole = abs(areas[1])
157
+ ratio = hole / outer if outer else 0.0
158
+ print(f" hole/outer area ratio: {ratio:.3f} (min {MIN_HOLE_AREA_RATIO})")
159
+ if ratio < MIN_HOLE_AREA_RATIO:
160
+ raise SystemExit(
161
+ f"gem cutout too small for menu size ({ratio:.3f} < {MIN_HOLE_AREA_RATIO}); "
162
+ "enlarge the hole in galaaz-mark.svg"
163
+ )
125
164
  print(f"wrote {OUT} glyph U+{CODEPOINT:04X} family=galaaz")
165
+ write_previews(OUT)
126
166
  return 0
127
167
 
128
168
 
@@ -1,7 +1,32 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <!-- From logos/galaaz-minimum-size.png — solid R + ruby cutout (Omarchy menu glyph). -->
2
+ <!--
3
+ Monochrome Galaaz mark for Omarchy menu (family galaaz, U+E900).
4
+ Hand-drawn for ~16–24px: bold R + oversized hexagonal ruby cutout.
5
+ Do NOT auto-trace the PNG — stair-step traces collapse into "COBOL" blobs.
6
+ -->
3
7
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" fill="#000">
4
8
  <path fill-rule="evenodd" d="
5
- M 457.1 672.3 L 390.1 672.1 L 390.1 654.5 L 381.1 654.2 L 381.1 614.2 L 390.1 613.8 L 390.1 587.3 L 483.9 587.2 L 504.1 606.9 L 618.9 494.0 L 567.2 401.3 L 441.0 401.3 L 424.6 430.4 L 390.3 430.4 L 390.1 354.4 L 582.5 354.2 L 582.9 363.2 L 609.4 363.2 L 609.7 372.2 L 627.3 372.2 L 627.5 380.9 L 636.2 381.1 L 636.4 389.9 L 645.2 390.1 L 645.4 398.8 L 654.3 399.2 L 654.3 416.8 L 663.3 417.1 L 663.3 443.6 L 672.3 444.0 L 672.3 492.9 L 663.3 493.3 L 663.3 519.8 L 654.3 520.2 L 654.3 537.7 L 645.6 537.9 L 645.4 546.7 L 636.6 546.8 L 636.4 555.6 L 627.5 556.0 L 627.5 578.0 L 636.2 578.2 L 636.4 587.0 L 645.4 587.3 L 645.4 604.9 L 654.2 605.1 L 654.3 613.8 L 663.1 614.0 L 663.3 622.8 L 672.3 623.2 L 672.3 640.7 L 681.0 640.9 L 681.2 649.7 L 690.2 650.1 L 690.2 663.1 L 587.3 663.3 L 587.2 654.5 L 578.4 654.3 L 578.2 645.6 L 569.4 645.4 L 569.1 636.4 L 466.4 636.4 L 466.2 663.1 L 457.4 663.3 L 457.1 672.3 Z M 470.1 573.7 L 390.3 573.7 L 390.1 515.7 L 411.2 515.5 L 470.1 573.7 Z
9
+ M 180 120
10
+ H 560
11
+ L 700 120
12
+ L 800 230
13
+ L 820 380
14
+ L 740 530
15
+ L 580 590
16
+ L 840 880
17
+ H 620
18
+ L 400 610
19
+ H 320
20
+ V 880
21
+ H 180
22
+ V 120
23
+ Z
24
+
25
+ M 340 250
26
+ L 580 250
27
+ L 660 360
28
+ L 460 530
29
+ L 260 360
30
+ Z
6
31
  "/>
7
32
  </svg>
Binary file
@@ -5,17 +5,19 @@
5
5
  // Use ~/.local/bin/galaaz (installer wrapper). Do not quote the whole
6
6
  // "galaaz add …" as one word — omarchy-launch-tui then does nothing useful.
7
7
  //
8
- // Brand mark: private-use U+E900 in family "galaaz"
8
+ // Brand mark: icon is private-use U+E900 (\uE900). That codepoint is empty
9
+ // in Nerd Fonts / Cursor — Omarchy draws it with iconFont "galaaz"
9
10
  // (script/omarchy/fonts/galaaz.ttf → ~/.local/share/fonts/galaaz/).
11
+ // Do not paste a visible letter here; use the escape so the source stays clear.
10
12
 
11
13
  "install.development.galaaz": {
12
- "icon": "",
14
+ "icon": "\uE900",
13
15
  "iconFont": "galaaz",
14
16
  "label": "Galaaz",
15
17
  "description": "R on Rails"
16
18
  },
17
19
  "install.development.galaaz.core": {
18
- "icon": "",
20
+ "icon": "\uE900",
19
21
  "iconFont": "galaaz",
20
22
  "label": "Galaaz (core)",
21
23
  "description": "gem + setup + blogs (not just gem install)",
@@ -44,7 +46,7 @@
44
46
  "when": "test -f ~/.config/galaaz/profiles/core"
45
47
  },
46
48
  "install.development.galaaz.knit": {
47
- "icon": "",
49
+ "icon": "\uE900",
48
50
  "iconFont": "galaaz",
49
51
  "label": "Knit (HTML + PDF blogs)",
50
52
  "description": "pandoc + knitr/rmarkdown + TinyTeX",
@@ -52,35 +54,28 @@
52
54
  "disabled": "test -f ~/.config/galaaz/profiles/knit"
53
55
  },
54
56
  "install.development.galaaz.arrow": {
55
- "icon": "",
57
+ "icon": "\uE900",
56
58
  "iconFont": "galaaz",
57
59
  "label": "Arrow",
58
60
  "action": "omarchy-launch-tui omarchy-galaaz-add arrow",
59
61
  "disabled": "test -f ~/.config/galaaz/profiles/arrow"
60
62
  },
61
- "install.development.galaaz.tex": {
62
- "icon": "",
63
- "iconFont": "galaaz",
64
- "label": "TeX (PDF blogs)",
65
- "action": "omarchy-launch-tui omarchy-galaaz-add tex",
66
- "disabled": "test -f ~/.config/galaaz/profiles/tex"
67
- },
68
63
  "install.development.galaaz.bio": {
69
- "icon": "",
64
+ "icon": "\uE900",
70
65
  "iconFont": "galaaz",
71
66
  "label": "Bioconductor (DESeq2)",
72
67
  "action": "omarchy-launch-tui omarchy-galaaz-add bio",
73
68
  "disabled": "test -f ~/.config/galaaz/profiles/bio"
74
69
  },
75
70
  "install.development.galaaz.examples": {
76
- "icon": "",
71
+ "icon": "\uE900",
77
72
  "iconFont": "galaaz",
78
73
  "label": "Examples",
79
74
  "action": "omarchy-launch-tui omarchy-galaaz-add examples",
80
75
  "disabled": "test -f ~/.config/galaaz/profiles/examples"
81
76
  },
82
77
  "install.development.galaaz.ledger": {
83
- "icon": "",
78
+ "icon": "\uE900",
84
79
  "iconFont": "galaaz",
85
80
  "label": "Ledger (R-on-Rails demo)",
86
81
  "description": "Clone app, seed, bin/dev",
@@ -88,7 +83,7 @@
88
83
  "disabled": "test -f ~/.config/galaaz/profiles/ledger"
89
84
  },
90
85
  "remove.development.galaaz": {
91
- "icon": "",
86
+ "icon": "\uE900",
92
87
  "iconFont": "galaaz",
93
88
  "label": "Galaaz",
94
89
  "description": "Core gem (add-on R packages stay)",
data/version.rb CHANGED
@@ -1,2 +1,2 @@
1
1
  $gem_name = "galaaz"
2
- $version="2.1.10.pre.2"
2
+ $version="2.1.10.pre.3"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: galaaz
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.10.pre.2
4
+ version: 2.1.10.pre.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Botafogo
@@ -405,6 +405,9 @@ files:
405
405
  - logos/icon-font/README.md
406
406
  - logos/icon-font/build_font.py
407
407
  - logos/icon-font/galaaz-mark.svg
408
+ - logos/icon-font/preview/glyph_16.png
409
+ - logos/icon-font/preview/glyph_24.png
410
+ - logos/icon-font/preview/glyph_48.png
408
411
  - new_bridge_specs/arrow_ipc_async_spec.rb
409
412
  - new_bridge_specs/arrow_ipc_export_async_spec.rb
410
413
  - new_bridge_specs/benchmark_phase5_5_unboxing_spec.rb