galaaz 2.1.10.pre.2 → 2.1.10.pre.4

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: c3ee446f657b5eac4bb8ef351c3a7adbe0246b8d750288bffab68c43e83e10bf
4
+ data.tar.gz: e00e643ae69cc1fae159706c6b06b8e9c291e4060814b5b3feafc4abb722454c
5
5
  SHA512:
6
- metadata.gz: 6bbfb2c3bc020ef0768d7ba55754b8371ffd996f08c84d68396c5584449be24537550495bf3925c8ab3dc47aafd9a208de45a998f5ceee4e36f8d87d2bcaea4f
7
- data.tar.gz: 5f7f357dc2e155e0934835d18aa5d6a2f8e61e985198ae39f6f4257d9073cb8cb91a3532ec3cccc9a687b3b4fa7f35696de2b51992cf3337ee0dc690469a8f00
6
+ metadata.gz: 7a6fac11ad1080ebb3d4161fb228f5c259dfe979562842d3284af368538fec452f2a3ee78074dcca444f9889f4f3808a86d4e4d9b616805ff4cc0281c9e7400c
7
+ data.tar.gz: 87e43043e7bc22a13e96a691c23e9b9410655ec3b4df22c99766177cf5c9b08961ade4b27e6894ee777c13113abeab23bbd27c719d785f7079091c5ff2b1f36c
data/CHANGELOG.md CHANGED
@@ -2,6 +2,23 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 2.1.10.pre.4
6
+
7
+ ### Fixed
8
+
9
+ - Omarchy brand icon moved from **U+E900 → U+E920**. E900–E90D belong to
10
+ Omarchy’s own private font (waybar `\ue900`); using E900 made the menu show
11
+ Omarchy’s mark whenever `iconFont: galaaz` failed to win.
12
+
13
+ ## 2.1.10.pre.3
14
+
15
+ ### Fixed
16
+
17
+ - Omarchy brand icon: hand-drawn R + oversized ruby cutout (no PNG auto-trace);
18
+ build fails if gem hole is too small; preview PNGs at 16/24/48px.
19
+ - Omarchy menu: brand icons use `\uE900` + `iconFont: galaaz`; remove separate
20
+ TeX menu row (Knit installs TinyTeX); remove Knit demo (oh_my).
21
+
5
22
  ## 2.1.10.pre.2
6
23
 
7
24
  ### Fixed
data/lib/galaaz/cli.rb CHANGED
@@ -268,7 +268,7 @@ module Galaaz
268
268
  FileUtils.mkdir_p(fonts)
269
269
  dest = File.join(fonts, 'galaaz.ttf')
270
270
  FileUtils.cp(src, dest)
271
- puts "galaaz omarchy: #{dest} (family #{OMARCHY_FONT_FAMILY}, U+E900)"
271
+ puts "galaaz omarchy: #{dest} (family #{OMARCHY_FONT_FAMILY}, U+E920)"
272
272
  if command_present?('fc-cache')
273
273
  system('fc-cache', '-r')
274
274
  system('fc-cache', '-f', fonts)
@@ -4,7 +4,10 @@ Private TrueType font (`family: galaaz`) with one private-use glyph:
4
4
 
5
5
  | Codepoint | Name | Role |
6
6
  |-----------|------|------|
7
- | `U+E900` | `galaaz` | Monochrome R + gem cutout for Install menu rows |
7
+ | `U+E920` | `galaaz` | Monochrome R + gem cutout for Install menu rows |
8
+
9
+ Do **not** reuse `U+E900` — Omarchy's private font already maps E900–E90D
10
+ (waybar logo is `\ue900`).
8
11
 
9
12
  ## Sources
10
13
 
@@ -18,10 +21,13 @@ Rebuild after editing the SVG:
18
21
 
19
22
  ```bash
20
23
  python3 -m venv /tmp/galaaz-font-venv
21
- /tmp/galaaz-font-venv/bin/pip install fonttools
24
+ /tmp/galaaz-font-venv/bin/pip install fonttools pillow
22
25
  /tmp/galaaz-font-venv/bin/python logos/icon-font/build_font.py
23
26
  ```
24
27
 
28
+ The build writes `preview/glyph_{16,24,48}.png` and **fails** if the gem
29
+ cutout is too small for menu size. Inspect those PNGs before shipping.
30
+
25
31
  `galaaz omarchy` installs the TTF to `~/.local/share/fonts/galaaz/` and the menu
26
32
  uses `"iconFont": "galaaz"`. Restart the Omarchy shell after install so Qt
27
33
  reloads fonts (`omarchy menu refresh` alone is not enough for a new family).
@@ -13,12 +13,16 @@ 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"
21
- CODEPOINT = 0xE900
20
+ PREVIEW_DIR = ROOT / "logos" / "icon-font" / "preview"
21
+ # NOT U+E900: Omarchy's own brand font already owns E900–E90D (waybar logo).
22
+ # Using that slot makes fallback look like Omarchy's mark, not Galaaz.
23
+ CODEPOINT = 0xE920
24
+ # Gem cutout must stay visible at menu size (~16px). Tiny holes collapse.
25
+ MIN_HOLE_AREA_RATIO = 0.04
22
26
 
23
27
 
24
28
  def extract_path_d(svg_text: str) -> str:
@@ -69,6 +73,31 @@ def fix_hole_windings(glyph: TTGlyph) -> None:
69
73
  glyph.numberOfContours = len(new_ends)
70
74
 
71
75
 
76
+ def write_previews(ttf_path: Path) -> None:
77
+ """Write menu-size PNG previews next to the SVG (requires Pillow)."""
78
+ try:
79
+ from PIL import Image, ImageDraw, ImageFont
80
+ except ImportError:
81
+ print(" preview: skipped (pip install pillow)")
82
+ return
83
+
84
+ PREVIEW_DIR.mkdir(parents=True, exist_ok=True)
85
+ for size in (16, 24, 48):
86
+ canvas = max(64, size * 2)
87
+ img = Image.new("RGBA", (canvas, canvas), (30, 30, 30, 255))
88
+ draw = ImageDraw.Draw(img)
89
+ font = ImageFont.truetype(str(ttf_path), size)
90
+ ch = chr(CODEPOINT)
91
+ bbox = draw.textbbox((0, 0), ch, font=font)
92
+ w, h = bbox[2] - bbox[0], bbox[3] - bbox[1]
93
+ x = (canvas - w) // 2 - bbox[0]
94
+ y = (canvas - h) // 2 - bbox[1]
95
+ draw.text((x, y), ch, font=font, fill=(230, 230, 230, 255))
96
+ out = PREVIEW_DIR / f"glyph_{size}.png"
97
+ img.save(out)
98
+ print(f" preview: {out}")
99
+
100
+
72
101
  def main() -> int:
73
102
  d = extract_path_d(SVG.read_text(encoding="utf-8"))
74
103
  transform = Transform(1, 0, 0, -1, 0, 1000)
@@ -100,12 +129,12 @@ def main() -> int:
100
129
  {
101
130
  "familyName": "galaaz",
102
131
  "styleName": "Regular",
103
- "uniqueFontIdentifier": "galaaz Regular",
132
+ "uniqueFontIdentifier": "galaaz Regular 1.002 U+E920",
104
133
  "fullName": "galaaz Regular",
105
134
  "psName": "galaaz-Regular",
106
- "version": "Version 1.000",
135
+ "version": "Version 1.002",
107
136
  "manufacturer": "Galaaz",
108
- "description": "Monochrome Galaaz mark for Omarchy menu rows (U+E900).",
137
+ "description": "Monochrome Galaaz mark for Omarchy menu rows (U+E920).",
109
138
  }
110
139
  )
111
140
  OUT.parent.mkdir(parents=True, exist_ok=True)
@@ -117,12 +146,26 @@ def main() -> int:
117
146
  coords = list(g.coordinates)
118
147
  ends = list(g.endPtsOfContours)
119
148
  start = 0
149
+ areas = []
120
150
  for i, end in enumerate(ends):
121
151
  pts = coords[start : end + 1]
122
152
  a = signed_area(pts)
153
+ areas.append(a)
123
154
  print(f" contour {i}: {'CW' if a < 0 else 'CCW'} area={a:.0f}")
124
155
  start = end + 1
156
+ if len(areas) < 2:
157
+ raise SystemExit("expected outer + gem hole contours")
158
+ outer = abs(areas[0])
159
+ hole = abs(areas[1])
160
+ ratio = hole / outer if outer else 0.0
161
+ print(f" hole/outer area ratio: {ratio:.3f} (min {MIN_HOLE_AREA_RATIO})")
162
+ if ratio < MIN_HOLE_AREA_RATIO:
163
+ raise SystemExit(
164
+ f"gem cutout too small for menu size ({ratio:.3f} < {MIN_HOLE_AREA_RATIO}); "
165
+ "enlarge the hole in galaaz-mark.svg"
166
+ )
125
167
  print(f"wrote {OUT} glyph U+{CODEPOINT:04X} family=galaaz")
168
+ write_previews(OUT)
126
169
  return 0
127
170
 
128
171
 
@@ -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>
@@ -31,7 +31,7 @@ Then Super+Space → Install → Development → **Galaaz**.
31
31
  | `debug-galaaz.sh` | Snapshot doctor/PATH/gem/bridge |
32
32
  | `remove-galaaz.sh` | Uninstall gem + marked blogs; leave R |
33
33
  | `omarchy-menu.jsonc` | Menu overlay submenu under Install → Development |
34
- | `fonts/galaaz.ttf` | Monochrome brand mark (`iconFont: galaaz`, U+E900) |
34
+ | `fonts/galaaz.ttf` | Monochrome brand mark (`iconFont: galaaz`, U+E920; not E900) |
35
35
 
36
36
  Menu rows use the Galaaz icon font (not the Ruby-on-Rails Nerd Font gem). Source SVG
37
37
  and rebuild script live under `logos/icon-font/`.
Binary file
@@ -5,17 +5,20 @@
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"
9
- // (script/omarchy/fonts/galaaz.ttf → ~/.local/share/fonts/galaaz/).
8
+ // Brand mark: U+E920 (\uE920) + iconFont "galaaz".
9
+ // Do NOT use U+E900 — that slot is Omarchy's own logo (waybar \ue900,
10
+ // private font family "omarchy", range E900–E90D). Fallback without our
11
+ // font then shows Omarchy's mark, not Galaaz.
12
+ // TTF: script/omarchy/fonts/galaaz.ttf → ~/.local/share/fonts/galaaz/
10
13
 
11
14
  "install.development.galaaz": {
12
- "icon": "",
15
+ "icon": "\uE920",
13
16
  "iconFont": "galaaz",
14
17
  "label": "Galaaz",
15
18
  "description": "R on Rails"
16
19
  },
17
20
  "install.development.galaaz.core": {
18
- "icon": "",
21
+ "icon": "\uE920",
19
22
  "iconFont": "galaaz",
20
23
  "label": "Galaaz (core)",
21
24
  "description": "gem + setup + blogs (not just gem install)",
@@ -44,7 +47,7 @@
44
47
  "when": "test -f ~/.config/galaaz/profiles/core"
45
48
  },
46
49
  "install.development.galaaz.knit": {
47
- "icon": "",
50
+ "icon": "\uE920",
48
51
  "iconFont": "galaaz",
49
52
  "label": "Knit (HTML + PDF blogs)",
50
53
  "description": "pandoc + knitr/rmarkdown + TinyTeX",
@@ -52,35 +55,28 @@
52
55
  "disabled": "test -f ~/.config/galaaz/profiles/knit"
53
56
  },
54
57
  "install.development.galaaz.arrow": {
55
- "icon": "",
58
+ "icon": "\uE920",
56
59
  "iconFont": "galaaz",
57
60
  "label": "Arrow",
58
61
  "action": "omarchy-launch-tui omarchy-galaaz-add arrow",
59
62
  "disabled": "test -f ~/.config/galaaz/profiles/arrow"
60
63
  },
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
64
  "install.development.galaaz.bio": {
69
- "icon": "",
65
+ "icon": "\uE920",
70
66
  "iconFont": "galaaz",
71
67
  "label": "Bioconductor (DESeq2)",
72
68
  "action": "omarchy-launch-tui omarchy-galaaz-add bio",
73
69
  "disabled": "test -f ~/.config/galaaz/profiles/bio"
74
70
  },
75
71
  "install.development.galaaz.examples": {
76
- "icon": "",
72
+ "icon": "\uE920",
77
73
  "iconFont": "galaaz",
78
74
  "label": "Examples",
79
75
  "action": "omarchy-launch-tui omarchy-galaaz-add examples",
80
76
  "disabled": "test -f ~/.config/galaaz/profiles/examples"
81
77
  },
82
78
  "install.development.galaaz.ledger": {
83
- "icon": "",
79
+ "icon": "\uE920",
84
80
  "iconFont": "galaaz",
85
81
  "label": "Ledger (R-on-Rails demo)",
86
82
  "description": "Clone app, seed, bin/dev",
@@ -88,7 +84,7 @@
88
84
  "disabled": "test -f ~/.config/galaaz/profiles/ledger"
89
85
  },
90
86
  "remove.development.galaaz": {
91
- "icon": "",
87
+ "icon": "\uE920",
92
88
  "iconFont": "galaaz",
93
89
  "label": "Galaaz",
94
90
  "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.4"
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.4
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