galaaz 2.1.10.pre.4 → 2.1.10.pre.6

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: c3ee446f657b5eac4bb8ef351c3a7adbe0246b8d750288bffab68c43e83e10bf
4
- data.tar.gz: e00e643ae69cc1fae159706c6b06b8e9c291e4060814b5b3feafc4abb722454c
3
+ metadata.gz: b1175b28a0271d54017f9688e6436c326da0305c6b383285d9a4adb11538018d
4
+ data.tar.gz: 43c3c80c7764e8a959d45b382a781c1a504e4ea7b3c7028dc3763e8c3493b04e
5
5
  SHA512:
6
- metadata.gz: 7a6fac11ad1080ebb3d4161fb228f5c259dfe979562842d3284af368538fec452f2a3ee78074dcca444f9889f4f3808a86d4e4d9b616805ff4cc0281c9e7400c
7
- data.tar.gz: 87e43043e7bc22a13e96a691c23e9b9410655ec3b4df22c99766177cf5c9b08961ade4b27e6894ee777c13113abeab23bbd27c719d785f7079091c5ff2b1f36c
6
+ metadata.gz: a038c5ac9ff9eaacd0cd85af5e8613675e27157e2eea28b006d15d6b9083f8059b65b45e5ad8eedacffba22b464c68e288c82f1c2cb2dbf0c3074526f16eaa2e
7
+ data.tar.gz: 4f2eb91d9ccf66c15ad503116a0e14602491b73623eca7395ca2a2dedc6342e900f34ba2d838405879660ff62a74b7fed62163658a6ea33ae0085108affc7149
data/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 2.1.10.pre.6
6
+
7
+ ### Changed
8
+
9
+ - Omarchy **Galaaz (core)** no longer runs `gem install` / uninstall. Flow is:
10
+ `gem install galaaz` → `galaaz omarchy install` → menu core (setup + blogs).
11
+ - `galaaz --version` / `-v` / `version` prints the installed gem version;
12
+ `galaaz doctor` shows `version:`.
13
+ - `galaaz blogs sync` refreshes sty + logo includes without wiping blogs;
14
+ core installer syncs on re-run; `galaaz add knit` refreshes brand assets.
15
+
16
+ ## 2.1.10.pre.5
17
+
18
+ ### Fixed
19
+
20
+ - Omarchy menu icons: use `"iconFont": "omarchy"` + **U+E90E** via shipped
21
+ `omarchy-with-galaaz.ttf` (Omarchy brand font + Galaaz R/gem). A custom
22
+ family `galaaz` alone rendered as missing-glyph tofu (`//'`) because Qt
23
+ does not load that family for the menu.
24
+
5
25
  ## 2.1.10.pre.4
6
26
 
7
27
  ### Fixed
data/lib/galaaz/cli.rb CHANGED
@@ -30,8 +30,12 @@ module Galaaz
30
30
  ['debug-galaaz.sh', 'omarchy-galaaz-debug', true]
31
31
  ].freeze
32
32
  OMARCHY_MENU_FILE = 'omarchy-menu.jsonc'
33
+ # Standalone family "galaaz" (debug). Menu uses the merged Omarchy brand font.
33
34
  OMARCHY_FONT_REL = File.join('fonts', 'galaaz.ttf')
34
- OMARCHY_FONT_FAMILY = 'galaaz'
35
+ OMARCHY_MERGED_FONT_REL = File.join('fonts', 'omarchy-with-galaaz.ttf')
36
+ # Menu rows use iconFont "omarchy" + U+E90E (Qt already loads family omarchy).
37
+ OMARCHY_MENU_FONT_FAMILY = 'omarchy'
38
+ OMARCHY_MENU_CODEPOINT = 0xE90E
35
39
  BLOGS_MARKER = '.galaaz-blogs'
36
40
  EXAMPLES_MARKER = '.galaaz-examples'
37
41
  CRAN = 'https://cloud.r-project.org'
@@ -44,12 +48,34 @@ module Galaaz
44
48
  File.expand_path('../..', __dir__)
45
49
  end
46
50
 
51
+ def gem_version
52
+ spec = Gem.loaded_specs['galaaz']
53
+ return spec.version.to_s if spec
54
+
55
+ begin
56
+ return Gem::Specification.find_by_name('galaaz').version.to_s
57
+ rescue LoadError, Gem::LoadError, NameError
58
+ # fall through to version.rb
59
+ end
60
+
61
+ version_rb = File.join(root, 'version.rb')
62
+ if File.file?(version_rb)
63
+ load version_rb
64
+ return $version.to_s if defined?($version) && $version
65
+ end
66
+
67
+ 'unknown'
68
+ end
69
+
47
70
  def run(argv)
48
71
  cmd = argv[0]
49
72
  case cmd
50
73
  when nil, '-h', '--help', 'help'
51
74
  print_help
52
75
  0
76
+ when '-v', '--version', 'version'
77
+ puts "galaaz #{gem_version}"
78
+ 0
53
79
  when 'setup'
54
80
  cmd_setup
55
81
  when 'blogs'
@@ -78,18 +104,21 @@ module Galaaz
78
104
  def print_help
79
105
  puts <<~HELP
80
106
  Usage: galaaz <command> [args]
107
+ galaaz --version
81
108
 
82
109
  Commands:
83
110
  setup Build the NewBridge gatekeeper; ensure Rcpp
84
111
  blogs init [DIR] Copy blog sources (default: ~/galaaz-blogs)
85
112
  and sty/galaaz.sty for PDF headers
86
113
  Options: --force
114
+ blogs sync [DIR] Refresh sty + logo includes without wiping blogs
87
115
  doctor Report Ruby, R, gatekeeper, Rcpp, sty, profiles
88
116
  add PROFILE Install an add-on (idempotent)
89
117
  Profiles: #{PROFILES.join(', ')}
90
118
  omarchy [install] Install Omarchy menu overlay (bundled in gem)
91
119
  Options: --from-git [--ref REF]
92
120
  omarchy status Show whether overlay helpers are installed
121
+ --version, -v Print installed gem version (#{gem_version})
93
122
 
94
123
  Legacy: any other argument is passed to rake in the Galaaz root
95
124
  (e.g. galaaz master_list:scatter_plot).
@@ -152,7 +181,8 @@ module Galaaz
152
181
  Writes:
153
182
  ~/.local/bin/omarchy-install-galaaz (and add/remove/guide/gknit/debug)
154
183
  ~/.config/omarchy/extensions/omarchy-menu.jsonc
155
- ~/.local/share/fonts/galaaz/galaaz.ttf (menu brand mark)
184
+ ~/.local/share/fonts/galaaz/galaaz.ttf
185
+ ~/.local/share/fonts/omarchy-with-galaaz.ttf (family omarchy + U+E90E)
156
186
 
157
187
  Then: Super+Space → Install → Development → Galaaz
158
188
  HELP
@@ -199,7 +229,9 @@ module Galaaz
199
229
  end
200
230
  puts " menu: #{File.file?(menu) ? menu : 'MISSING'}"
201
231
  font = File.expand_path('~/.local/share/fonts/galaaz/galaaz.ttf')
202
- puts " font: #{File.file?(font) ? font : 'MISSING'}"
232
+ puts " font galaaz: #{File.file?(font) ? font : 'MISSING'}"
233
+ merged = File.expand_path('~/.local/share/fonts/omarchy-with-galaaz.ttf')
234
+ puts " font omarchy+galaaz: #{File.file?(merged) ? merged : 'MISSING'}"
203
235
  bundled = File.join(root, 'script', 'omarchy')
204
236
  puts " gem overlay: #{File.directory?(bundled) ? bundled : 'MISSING (reinstall gem)'}"
205
237
  0
@@ -211,7 +243,8 @@ module Galaaz
211
243
  abort_unless(
212
244
  File.file?(File.join(d, 'install-galaaz.sh')) &&
213
245
  File.file?(File.join(d, OMARCHY_MENU_FILE)) &&
214
- File.file?(File.join(d, OMARCHY_FONT_REL)),
246
+ File.file?(File.join(d, OMARCHY_FONT_REL)) &&
247
+ File.file?(File.join(d, OMARCHY_MERGED_FONT_REL)),
215
248
  "incomplete Omarchy overlay in gem (#{d})"
216
249
  )
217
250
  d
@@ -222,7 +255,7 @@ module Galaaz
222
255
  tmp = Dir.mktmpdir('galaaz-omarchy-')
223
256
  base = "https://raw.githubusercontent.com/#{OMARCHY_GITHUB_REPO}/#{ref}/script/omarchy"
224
257
  puts "galaaz omarchy: fetching #{base}/…"
225
- names = OMARCHY_BIN_FILES.map(&:first) + [OMARCHY_MENU_FILE, OMARCHY_FONT_REL]
258
+ names = OMARCHY_BIN_FILES.map(&:first) + [OMARCHY_MENU_FILE, OMARCHY_FONT_REL, OMARCHY_MERGED_FONT_REL]
226
259
  names.uniq.each do |name|
227
260
  url = "#{base}/#{name}"
228
261
  dest = File.join(tmp, name)
@@ -262,18 +295,53 @@ module Galaaz
262
295
  end
263
296
 
264
297
  def install_omarchy_font_from!(src_dir)
298
+ # 1) Standalone galaaz.ttf (family galaaz) — debugging / fc-list checks.
265
299
  src = File.join(src_dir, OMARCHY_FONT_REL)
266
300
  abort_unless(File.file?(src), "missing #{src} (rebuild with logos/icon-font/build_font.py)")
267
301
  fonts = File.expand_path('~/.local/share/fonts/galaaz')
268
302
  FileUtils.mkdir_p(fonts)
269
303
  dest = File.join(fonts, 'galaaz.ttf')
270
304
  FileUtils.cp(src, dest)
271
- puts "galaaz omarchy: #{dest} (family #{OMARCHY_FONT_FAMILY}, U+E920)"
305
+ puts "galaaz omarchy: #{dest} (family galaaz, debug)"
306
+
307
+ # 2) Merged Omarchy brand font with Galaaz at U+E90E. Menu uses
308
+ # iconFont "omarchy" — the same family Cursor/Grok icons use, which Qt
309
+ # already loads. A custom family "galaaz" alone shows missing-glyph tofu.
310
+ merged_src = File.join(src_dir, OMARCHY_MERGED_FONT_REL)
311
+ abort_unless(
312
+ File.file?(merged_src),
313
+ "missing #{merged_src} (rebuild with logos/icon-font/build_font.py)"
314
+ )
315
+ # Prefer user font over /usr/share/fonts/**/omarchy.ttf
316
+ user_fonts = File.expand_path('~/.local/share/fonts')
317
+ FileUtils.mkdir_p(user_fonts)
318
+ merged_dest = File.join(user_fonts, 'omarchy-with-galaaz.ttf')
319
+ FileUtils.cp(merged_src, merged_dest)
320
+ puts "galaaz omarchy: #{merged_dest} (family #{OMARCHY_MENU_FONT_FAMILY}, U+#{OMARCHY_MENU_CODEPOINT.to_s(16).upcase})"
321
+
322
+ conf_dir = File.expand_path('~/.config/fontconfig/conf.d')
323
+ FileUtils.mkdir_p(conf_dir)
324
+ conf = File.join(conf_dir, '99-galaaz-omarchy-brand.conf')
325
+ File.write(conf, <<~XML)
326
+ <?xml version="1.0"?>
327
+ <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
328
+ <fontconfig>
329
+ <!-- Prefer Galaaz-extended Omarchy brand font (adds U+E90E). -->
330
+ <selectfont>
331
+ <rejectfont>
332
+ <glob>*/omarchy/omarchy.ttf</glob>
333
+ </rejectfont>
334
+ </selectfont>
335
+ </fontconfig>
336
+ XML
337
+ puts "galaaz omarchy: #{conf}"
338
+
272
339
  if command_present?('fc-cache')
273
340
  system('fc-cache', '-r')
274
341
  system('fc-cache', '-f', fonts)
342
+ system('fc-cache', '-f', user_fonts)
275
343
  end
276
- warn 'galaaz omarchy: restart the Omarchy shell so Qt picks up the galaaz font' \
344
+ warn 'galaaz omarchy: logout/reboot required for Qt to reload brand fonts (killall omarchy-shell is often not enough)' \
277
345
  if ENV['OMARCHY_PATH'] || File.directory?(File.expand_path('~/.config/omarchy'))
278
346
  end
279
347
 
@@ -284,11 +352,14 @@ module Galaaz
284
352
  case sub
285
353
  when 'init'
286
354
  blogs_init(argv[1..])
355
+ when 'sync'
356
+ blogs_sync(argv[1..])
287
357
  when nil, '-h', '--help'
288
358
  puts 'Usage: galaaz blogs init [DIR] [--force]'
359
+ puts ' galaaz blogs sync [DIR] # refresh sty + logo includes (no wipe)'
289
360
  0
290
361
  else
291
- raise CliError, "unknown blogs subcommand: #{sub.inspect} (try: init)"
362
+ raise CliError, "unknown blogs subcommand: #{sub.inspect} (try: init|sync)"
292
363
  end
293
364
  end
294
365
 
@@ -301,7 +372,7 @@ module Galaaz
301
372
  if File.exist?(dest)
302
373
  entries = Dir.children(dest).reject { |n| n.start_with?('.') }
303
374
  if !entries.empty? && !force
304
- raise CliError, "#{dest} exists and is not empty (use --force to replace)"
375
+ raise CliError, "#{dest} exists and is not empty (use --force to replace, or: galaaz blogs sync)"
305
376
  end
306
377
  FileUtils.rm_rf(dest) if force
307
378
  end
@@ -316,16 +387,28 @@ module Galaaz
316
387
  end
317
388
 
318
389
  File.write(File.join(dest, BLOGS_MARKER), "galaaz blogs init\n")
319
- install_galaaz_sty_for_blogs!(dest)
390
+ ensure_blog_knit_assets!(dest)
320
391
  puts "galaaz blogs init: #{dest}"
321
392
  puts "You can now knit with gknit (after: galaaz add knit)"
322
393
  0
323
394
  end
324
395
 
396
+ # Refresh sty + per-blog logo includes without wiping ~/galaaz-blogs.
397
+ # Needed after gem upgrades that ship new branding assets (pandoc error 99
398
+ # when _logo_before_body.html / lockup PNG / sty were missing from an older init).
399
+ def blogs_sync(argv)
400
+ dest = File.expand_path(argv[0] || detect_blogs_dir || DEFAULT_BLOGS_DIR)
401
+ abort_unless(File.directory?(dest), "blogs dir missing: #{dest} (run: galaaz blogs init)")
402
+ n = ensure_blog_knit_assets!(dest)
403
+ puts "galaaz blogs sync: #{dest} (#{n} brand files refreshed)"
404
+ 0
405
+ end
406
+
325
407
  # ---- doctor ----
326
408
 
327
409
  def cmd_doctor
328
410
  puts "galaaz doctor"
411
+ puts " version: #{gem_version}"
329
412
  puts " root: #{root}"
330
413
  print_ruby_engines
331
414
 
@@ -508,6 +591,11 @@ module Galaaz
508
591
  end
509
592
  mark_profile!('knit')
510
593
  puts 'galaaz add knit: OK'
594
+ blogs = detect_blogs_dir
595
+ if blogs
596
+ ensure_blog_knit_assets!(blogs)
597
+ puts 'galaaz add knit: refreshed blog brand assets (sty + logos)'
598
+ end
511
599
  puts 'Example knits (after blogs init → ~/galaaz-blogs):'
512
600
  puts ' gknit ~/galaaz-blogs/oh_my/oh_my.Rmd'
513
601
  puts ' gknit ~/galaaz-blogs/galaaz_ggplot/galaaz_ggplot.Rmd'
@@ -874,6 +962,35 @@ module Galaaz
874
962
  dest
875
963
  end
876
964
 
965
+ # Copy/overwrite brand includes required by blog YAML (pandoc before_body + PDF splash).
966
+ # Returns number of files written.
967
+ def ensure_blog_knit_assets!(blogs_dest)
968
+ blogs_dest = File.expand_path(blogs_dest)
969
+ install_galaaz_sty_for_blogs!(blogs_dest)
970
+ written = 0
971
+ BLOG_NAMES.each do |name|
972
+ src_blog = File.join(root, 'blogs', name)
973
+ dest_blog = File.join(blogs_dest, name)
974
+ next unless File.directory?(src_blog) && File.directory?(dest_blog)
975
+
976
+ logo_html = '_logo_before_body.html'
977
+ src_html = File.join(src_blog, logo_html)
978
+ if File.file?(src_html)
979
+ FileUtils.cp(src_html, File.join(dest_blog, logo_html))
980
+ written += 1
981
+ end
982
+
983
+ lockup = File.join('images', 'galaaz-lockup-stacked.png')
984
+ src_png = File.join(src_blog, lockup)
985
+ if File.file?(src_png)
986
+ FileUtils.mkdir_p(File.join(dest_blog, 'images'))
987
+ FileUtils.cp(src_png, File.join(dest_blog, lockup))
988
+ written += 1
989
+ end
990
+ end
991
+ written
992
+ end
993
+
877
994
  # TinyTeX installs to ~/.TinyTeX and often ~/bin; Omarchy PATH prefers ~/.local/bin.
878
995
  def ensure_pdflatex_on_path!
879
996
  return if command_present?('pdflatex')
@@ -4,9 +4,12 @@ Private TrueType font (`family: galaaz`) with one private-use glyph:
4
4
 
5
5
  | Codepoint | Name | Role |
6
6
  |-----------|------|------|
7
- | `U+E920` | `galaaz` | Monochrome R + gem cutout for Install menu rows |
7
+ | `U+E90E` | `galaaz` | R + gem in **family omarchy** (`omarchy-with-galaaz.ttf`) |
8
8
 
9
- Do **not** reuse `U+E900` Omarchy's private font already maps E900–E90D
9
+ Menu rows must use `"iconFont": "omarchy"` (not `"galaaz"`). Qt already loads
10
+ the Omarchy brand family; a custom family alone renders as missing-glyph tofu.
11
+
12
+ Do **not** reuse `U+E900`–`U+E90D` — Omarchy's private font already maps those
10
13
  (waybar logo is `\ue900`).
11
14
 
12
15
  ## Sources
@@ -1,9 +1,18 @@
1
1
  #!/usr/bin/env python3
2
- """Build script/omarchy/fonts/galaaz.ttf from logos/icon-font/galaaz-mark.svg."""
2
+ """Build Galaaz Omarchy menu fonts from logos/icon-font/galaaz-mark.svg.
3
+
4
+ Produces:
5
+ script/omarchy/fonts/galaaz.ttf
6
+ Standalone family "galaaz" (previews / debugging).
7
+ script/omarchy/fonts/omarchy-with-galaaz.ttf
8
+ Omarchy brand font + Galaaz glyph at U+E90E (family still "omarchy").
9
+ Menu rows must use iconFont "omarchy" — Qt already loads that family.
10
+ """
3
11
  from __future__ import annotations
4
12
 
5
13
  import re
6
14
  import sys
15
+ import urllib.request
7
16
  from pathlib import Path
8
17
 
9
18
  from fontTools.fontBuilder import FontBuilder
@@ -17,11 +26,17 @@ from fontTools.ttLib.tables._g_l_y_f import GlyphCoordinates
17
26
  ROOT = Path(__file__).resolve().parents[2]
18
27
  SVG = ROOT / "logos" / "icon-font" / "galaaz-mark.svg"
19
28
  OUT = ROOT / "script" / "omarchy" / "fonts" / "galaaz.ttf"
29
+ OUT_MERGED = ROOT / "script" / "omarchy" / "fonts" / "omarchy-with-galaaz.ttf"
20
30
  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.
31
+ OMARCHY_TTF_URL = (
32
+ "https://raw.githubusercontent.com/basecamp/omarchy/quattro/"
33
+ "default/fonts/omarchy/omarchy.ttf"
34
+ )
35
+ # Standalone family uses E920 (outside Omarchy E900–E90D).
36
+ STANDALONE_CODEPOINT = 0xE920
37
+ # Merged into family "omarchy" at first free slot after Omarchy's E90D.
38
+ OMARCHY_CODEPOINT = 0xE90E
39
+ GLYPH_NAME = "galaaz"
25
40
  MIN_HOLE_AREA_RATIO = 0.04
26
41
 
27
42
 
@@ -57,7 +72,6 @@ def fix_hole_windings(glyph: TTGlyph) -> None:
57
72
  pts = coords[start : end + 1]
58
73
  fl = flags[start : end + 1]
59
74
  area = signed_area(pts)
60
- # Contour 0 = outer (CW); contour 1 = gem hole (CCW). Extra contours = CW fills.
61
75
  want_cw = i != 1
62
76
  is_cw = area < 0
63
77
  if want_cw != is_cw:
@@ -73,8 +87,41 @@ def fix_hole_windings(glyph: TTGlyph) -> None:
73
87
  glyph.numberOfContours = len(new_ends)
74
88
 
75
89
 
76
- def write_previews(ttf_path: Path) -> None:
77
- """Write menu-size PNG previews next to the SVG (requires Pillow)."""
90
+ def build_glyph() -> TTGlyph:
91
+ d = extract_path_d(SVG.read_text(encoding="utf-8"))
92
+ transform = Transform(1, 0, 0, -1, 0, 1000)
93
+ pen = TTGlyphPen(glyphSet=None)
94
+ SVGPath.fromstring(
95
+ f'<path d="{d}" fill-rule="evenodd"/>', transform=transform
96
+ ).draw(pen)
97
+ glyph = pen.glyph()
98
+ fix_hole_windings(glyph)
99
+ return glyph
100
+
101
+
102
+ def assert_hole_ok(glyph: TTGlyph) -> None:
103
+ coords = list(glyph.coordinates)
104
+ ends = list(glyph.endPtsOfContours)
105
+ start = 0
106
+ areas = []
107
+ for i, end in enumerate(ends):
108
+ pts = coords[start : end + 1]
109
+ a = signed_area(pts)
110
+ areas.append(a)
111
+ print(f" contour {i}: {'CW' if a < 0 else 'CCW'} area={a:.0f}")
112
+ start = end + 1
113
+ if len(areas) < 2:
114
+ raise SystemExit("expected outer + gem hole contours")
115
+ ratio = abs(areas[1]) / abs(areas[0]) if areas[0] else 0.0
116
+ print(f" hole/outer area ratio: {ratio:.3f} (min {MIN_HOLE_AREA_RATIO})")
117
+ if ratio < MIN_HOLE_AREA_RATIO:
118
+ raise SystemExit(
119
+ f"gem cutout too small for menu size ({ratio:.3f} < {MIN_HOLE_AREA_RATIO}); "
120
+ "enlarge the hole in galaaz-mark.svg"
121
+ )
122
+
123
+
124
+ def write_previews(ttf_path: Path, codepoint: int) -> None:
78
125
  try:
79
126
  from PIL import Image, ImageDraw, ImageFont
80
127
  except ImportError:
@@ -87,7 +134,7 @@ def write_previews(ttf_path: Path) -> None:
87
134
  img = Image.new("RGBA", (canvas, canvas), (30, 30, 30, 255))
88
135
  draw = ImageDraw.Draw(img)
89
136
  font = ImageFont.truetype(str(ttf_path), size)
90
- ch = chr(CODEPOINT)
137
+ ch = chr(codepoint)
91
138
  bbox = draw.textbbox((0, 0), ch, font=font)
92
139
  w, h = bbox[2] - bbox[0], bbox[3] - bbox[1]
93
140
  x = (canvas - w) // 2 - bbox[0]
@@ -98,22 +145,12 @@ def write_previews(ttf_path: Path) -> None:
98
145
  print(f" preview: {out}")
99
146
 
100
147
 
101
- def main() -> int:
102
- d = extract_path_d(SVG.read_text(encoding="utf-8"))
103
- transform = Transform(1, 0, 0, -1, 0, 1000)
104
-
105
- pen = TTGlyphPen(glyphSet=None)
106
- SVGPath.fromstring(
107
- f'<path d="{d}" fill-rule="evenodd"/>', transform=transform
108
- ).draw(pen)
109
- glyph = pen.glyph()
110
- fix_hole_windings(glyph)
111
-
148
+ def build_standalone(glyph: TTGlyph) -> None:
112
149
  fb = FontBuilder(1000, isTTF=True)
113
- fb.setupGlyphOrder([".notdef", "galaaz"])
114
- fb.setupCharacterMap({CODEPOINT: "galaaz"})
115
- fb.setupGlyf({".notdef": TTGlyph(), "galaaz": glyph})
116
- fb.setupHorizontalMetrics({".notdef": (600, 0), "galaaz": (1000, 0)})
150
+ fb.setupGlyphOrder([".notdef", GLYPH_NAME])
151
+ fb.setupCharacterMap({STANDALONE_CODEPOINT: GLYPH_NAME})
152
+ fb.setupGlyf({".notdef": TTGlyph(), GLYPH_NAME: glyph})
153
+ fb.setupHorizontalMetrics({".notdef": (600, 0), GLYPH_NAME: (1000, 0)})
117
154
  fb.setupHorizontalHeader(ascent=1000, descent=0)
118
155
  fb.setupOS2(
119
156
  sTypoAscender=1000,
@@ -129,43 +166,87 @@ def main() -> int:
129
166
  {
130
167
  "familyName": "galaaz",
131
168
  "styleName": "Regular",
132
- "uniqueFontIdentifier": "galaaz Regular 1.002 U+E920",
133
- "fullName": "galaaz Regular",
134
- "psName": "galaaz-Regular",
135
- "version": "Version 1.002",
169
+ "uniqueFontIdentifier": "galaaz",
170
+ "fullName": "galaaz",
171
+ "psName": "galaaz",
172
+ "version": "Version 1.003",
136
173
  "manufacturer": "Galaaz",
137
- "description": "Monochrome Galaaz mark for Omarchy menu rows (U+E920).",
174
+ "description": "Standalone Galaaz mark (U+E920). Menu uses omarchy-with-galaaz.ttf.",
138
175
  }
139
176
  )
140
177
  OUT.parent.mkdir(parents=True, exist_ok=True)
141
178
  fb.save(OUT)
179
+ assert TTFont(OUT).getBestCmap().get(STANDALONE_CODEPOINT) == GLYPH_NAME
180
+ print(f"wrote {OUT} glyph U+{STANDALONE_CODEPOINT:04X} family=galaaz")
181
+ write_previews(OUT, STANDALONE_CODEPOINT)
142
182
 
143
- tt = TTFont(OUT)
144
- assert tt["cmap"].getBestCmap().get(CODEPOINT) == "galaaz"
145
- g = tt["glyf"]["galaaz"]
146
- coords = list(g.coordinates)
147
- ends = list(g.endPtsOfContours)
148
- start = 0
149
- areas = []
150
- for i, end in enumerate(ends):
151
- pts = coords[start : end + 1]
152
- a = signed_area(pts)
153
- areas.append(a)
154
- print(f" contour {i}: {'CW' if a < 0 else 'CCW'} area={a:.0f}")
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
- )
167
- print(f"wrote {OUT} glyph U+{CODEPOINT:04X} family=galaaz")
168
- write_previews(OUT)
183
+
184
+ def scale_glyph(glyph: TTGlyph, factor: float) -> TTGlyph:
185
+ if glyph.numberOfContours <= 0:
186
+ return glyph
187
+ coords = GlyphCoordinates(list(glyph.coordinates))
188
+ coords.scale((factor, factor))
189
+ glyph.coordinates = coords
190
+ if hasattr(glyph, "xMin"):
191
+ glyph.recalcBounds(glyph)
192
+ return glyph
193
+
194
+
195
+ def fetch_omarchy_ttf() -> Path:
196
+ cache = Path("/tmp/omarchy-brand.ttf")
197
+ if cache.is_file() and cache.stat().st_size > 1000:
198
+ return cache
199
+ print(f" fetching {OMARCHY_TTF_URL}")
200
+ urllib.request.urlretrieve(OMARCHY_TTF_URL, cache)
201
+ return cache
202
+
203
+
204
+ def build_merged(glyph_1000: TTGlyph) -> None:
205
+ from copy import deepcopy
206
+
207
+ base_path = fetch_omarchy_ttf()
208
+ base = TTFont(str(base_path))
209
+ upem = base["head"].unitsPerEm
210
+ glyph = deepcopy(glyph_1000)
211
+ scale = upem / 1000.0
212
+ if scale != 1.0:
213
+ scale_glyph(glyph, scale)
214
+ advance = int(round(1000 * scale))
215
+
216
+ order = list(base.getGlyphOrder())
217
+ if GLYPH_NAME in order:
218
+ order.remove(GLYPH_NAME)
219
+ order.append(GLYPH_NAME)
220
+ base.setGlyphOrder(order)
221
+ base["glyf"][GLYPH_NAME] = glyph
222
+ base["hmtx"][GLYPH_NAME] = (advance, 0)
223
+
224
+ for table in base["cmap"].tables:
225
+ if table.isUnicode():
226
+ table.cmap[OMARCHY_CODEPOINT] = GLYPH_NAME
227
+
228
+ for rec in base["name"].names:
229
+ if rec.nameID == 5: # version
230
+ rec.string = "Version 1.2+galaaz"
231
+ if rec.nameID == 3: # unique
232
+ rec.string = "omarchy+galaaz"
233
+
234
+ OUT_MERGED.parent.mkdir(parents=True, exist_ok=True)
235
+ base.save(OUT_MERGED)
236
+ merged = TTFont(OUT_MERGED)
237
+ assert merged.getBestCmap().get(OMARCHY_CODEPOINT) == GLYPH_NAME
238
+ assert merged["name"].getDebugName(1) == "omarchy"
239
+ print(
240
+ f"wrote {OUT_MERGED} glyph U+{OMARCHY_CODEPOINT:04X} family=omarchy "
241
+ f"(from {base_path.name}, upem={upem})"
242
+ )
243
+
244
+
245
+ def main() -> int:
246
+ glyph = build_glyph()
247
+ assert_hole_ok(glyph)
248
+ build_standalone(glyph)
249
+ build_merged(glyph)
169
250
  return 0
170
251
 
171
252
 
@@ -6,16 +6,15 @@ or a real Omarchy install. Works **with or without** an upstream Omarchy PR.
6
6
  ## Recommended: `galaaz omarchy` (gem-bundled)
7
7
 
8
8
  ```bash
9
- gem install galaaz
10
- galaaz setup
11
- galaaz omarchy # A: copy overlay from this gem
9
+ gem install galaaz # choose version yourself (stable or .pre.N)
10
+ galaaz omarchy install # menu overlay + helpers (no second gem install)
12
11
  # optional, newer overlay than the gem:
13
12
  # galaaz omarchy install --from-git
14
- # galaaz omarchy install --from-git --ref galaaz2_0
15
13
  galaaz omarchy status
16
14
  ```
17
15
 
18
- Then Super+Space → Install → Development → **Galaaz**.
16
+ Then Super+Space → Install → Development → **Galaaz** → **Galaaz (core)**
17
+ (core configures R/gatekeeper/blogs using the **already-installed** gem).
19
18
 
20
19
  **Important:** `gem install galaaz` alone does **not** add an Omarchy menu until you run
21
20
  `galaaz omarchy` (or an upstream catalog row exists).
@@ -24,14 +23,15 @@ Then Super+Space → Install → Development → **Galaaz**.
24
23
 
25
24
  | File | Role |
26
25
  |------|------|
27
- | `install-galaaz.sh` | Core install; always writes `~/.local/share/galaaz/install-core.log` |
26
+ | `install-galaaz.sh` | Core configure (R/setup/blogs); uses installed gem; log `~/.local/share/galaaz/install-core.log` |
28
27
  | `galaaz-guide.sh` | Guide / docs / knit-demo helper (`omarchy-galaaz-guide`) |
29
28
  | `galaaz-add.sh` | Add-on wrapper (`omarchy-galaaz-add`) — pandoc without Arch Haskell stack |
30
29
  | `galaaz-gknit.sh` | Safe HTML gknit helper |
31
30
  | `debug-galaaz.sh` | Snapshot doctor/PATH/gem/bridge |
32
31
  | `remove-galaaz.sh` | Uninstall gem + marked blogs; leave R |
33
32
  | `omarchy-menu.jsonc` | Menu overlay submenu under Install → Development |
34
- | `fonts/galaaz.ttf` | Monochrome brand mark (`iconFont: galaaz`, U+E920; not E900) |
33
+ | `fonts/galaaz.ttf` | Standalone family `galaaz` (debug/previews) |
34
+ | `fonts/omarchy-with-galaaz.ttf` | Omarchy brand font + Galaaz at U+E90E (`iconFont: omarchy`) |
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/`.
@@ -66,10 +66,12 @@ chmod +x ~/.local/bin/omarchy-*
66
66
  ## TryOmarchy steps
67
67
 
68
68
  1. Install → Development → Ruby on Rails (mise Ruby).
69
- 2. `gem install galaaz && galaaz setup && galaaz omarchy`
70
- 3. Super+Space → search **Galaaz**, or Install → Development → **Galaaz** → **Galaaz (core)**.
69
+ 2. `gem install galaaz && galaaz omarchy install`
70
+ 3. Super+Space → Install → Development → **Galaaz** → **Galaaz (core)**.
71
71
 
72
- That action must finish **gem + setup + blogs + doctor**. It fails if the gatekeeper `.so` is missing — “gem installed” alone is not success.
72
+ Core configures **setup + blogs + doctor** using the gem you already installed
73
+ (it does **not** run `gem install` again). It fails if the gatekeeper `.so` is
74
+ missing — “gem installed” alone is not success.
73
75
 
74
76
  4. After core finishes, the same submenu shows Knit / Arrow / TeX / Bio / Examples / Ledger.
75
77
 
Binary file
@@ -1,15 +1,17 @@
1
1
  #!/bin/bash
2
2
  # Omarchy-shaped core installer for Galaaz (R-on-Rails).
3
- # omarchy:summary=Install Galaaz (R-on-Rails)
3
+ # omarchy:summary=Configure Galaaz (R-on-Rails)
4
4
  # omarchy:name=galaaz
5
5
  #
6
+ # Prerequisite (do this yourself first — this script does NOT gem install):
7
+ # gem install galaaz # or: gem install galaaz -v x.y.z / .pre.N
8
+ # galaaz omarchy install # menu overlay + helpers
9
+ # Then: Super+Space → Install → Development → Galaaz → Galaaz (core)
10
+ #
6
11
  # Debug log (always written, even if TUI tee fails):
7
12
  # ~/.local/share/galaaz/install-core.log
8
13
  set -euo pipefail
9
14
 
10
- # Optional pin: GALAAZ_GEM_VERSION=2.1.2 omarchy-install-galaaz
11
- # Default: latest from RubyGems (Omarchy/Rails shape).
12
- GALAAZ_GEM_VERSION="${GALAAZ_GEM_VERSION:-}"
13
15
  LOG_DIR="${HOME}/.local/share/galaaz"
14
16
  LOG="${LOG_DIR}/install-core.log"
15
17
  mkdir -p "${LOG_DIR}"
@@ -45,13 +47,13 @@ on_err() {
45
47
  }
46
48
  trap on_err ERR
47
49
 
48
- log "=== galaaz core install $(date -Iseconds) ==="
50
+ log "=== galaaz core configure $(date -Iseconds) ==="
49
51
  log "log file: ${LOG}"
50
52
  log "script: ${BASH_SOURCE[0]}"
51
53
  log "pwd: $(pwd)"
52
54
  log "user: $(id -un) home=${HOME}"
53
55
  log "PATH: ${PATH}"
54
- log "GALAAZ_GEM_VERSION=${GALAAZ_GEM_VERSION:-latest}"
56
+ log "(uses already-installed galaaz gem — does not gem install)"
55
57
  log ""
56
58
 
57
59
  pkg_add() {
@@ -167,35 +169,21 @@ WRAP
167
169
  log "wrapper: ${HOME}/.local/bin/galaaz"
168
170
  }
169
171
 
170
- run_ruby gem uninstall galaaz -x -a --ignore-dependencies >>"${LOG}" 2>&1 || true
171
- if [[ -n "${GALAAZ_GEM_VERSION}" ]]; then
172
- log "==> gem install galaaz -v ${GALAAZ_GEM_VERSION}"
173
- set +e
174
- run_ruby gem install galaaz -v "${GALAAZ_GEM_VERSION}" --no-document --source https://rubygems.org 2>&1 | tee -a "${LOG}"
175
- st=${PIPESTATUS[0]}
176
- set -e
177
- [[ ${st} -eq 0 ]] || exit "${st}"
178
- else
179
- LATEST="$(curl -fsSL https://rubygems.org/api/v1/versions/galaaz/latest.json 2>/dev/null \
180
- | sed -n 's/.*"version":"\([^"]*\)".*/\1/p' || true)"
181
- if [[ -n "${LATEST}" ]]; then
182
- log "==> gem install galaaz ${LATEST} (latest on RubyGems)"
183
- else
184
- log "==> gem install galaaz (latest on RubyGems)"
185
- fi
186
- set +e
187
- run_ruby gem install galaaz --no-document --source https://rubygems.org 2>&1 | tee -a "${LOG}"
188
- st=${PIPESTATUS[0]}
189
- set -e
190
- [[ ${st} -eq 0 ]] || exit "${st}"
172
+ # Gem must already be installed (user: gem install galaaz [ -v ]).
173
+ # Do NOT gem install/uninstall here — that pulled stable latest over prereleases.
174
+ log "==> require installed galaaz gem"
175
+ if ! ROOT="$(gem_root 2>/dev/null)" || [[ -z "${ROOT}" || ! -d "${ROOT}" ]]; then
176
+ log "ERROR: galaaz gem not found under this Ruby."
177
+ log "Install first, then re-run core configure:"
178
+ log " gem install galaaz # or gem install galaaz -v <version>"
179
+ log " galaaz omarchy install"
180
+ exit 1
191
181
  fi
192
-
193
182
  INSTALLED="$(run_ruby ruby -e "puts Gem::Specification.find_by_name('galaaz').version")"
194
- log "installed galaaz ${INSTALLED}"
183
+ log "using galaaz ${INSTALLED}"
184
+ log "gem root: ${ROOT}"
195
185
 
196
- ROOT="$(gem_root)"
197
186
  BRIDGE="${ROOT}/ext/new_bridge"
198
- log "gem root: ${ROOT}"
199
187
  log "bridge: ${BRIDGE}"
200
188
  ls -la "${BRIDGE}" >>"${LOG}" 2>&1 || true
201
189
  if [[ ! -f "${BRIDGE}/Makefile" ]]; then
@@ -254,8 +242,14 @@ log "gatekeeper OK: ${SO}"
254
242
  log "==> galaaz setup (CLI)"
255
243
  galaaz_cli setup >>"${LOG}" 2>&1 || log "WARN: galaaz setup non-zero (so exists; continuing)"
256
244
 
257
- log "==> galaaz blogs init"
258
- galaaz_cli blogs init "${HOME}/galaaz-blogs" >>"${LOG}" 2>&1
245
+ log "==> galaaz blogs init/sync"
246
+ # Fresh machine: init. Upgrade / re-run: sync brand assets without wiping blogs
247
+ # (older gems omitted _logo_before_body.html → pandoc error 99).
248
+ if [[ -f "${HOME}/galaaz-blogs/.galaaz-blogs" ]]; then
249
+ galaaz_cli blogs sync "${HOME}/galaaz-blogs" >>"${LOG}" 2>&1 || log "WARN: blogs sync non-zero"
250
+ else
251
+ galaaz_cli blogs init "${HOME}/galaaz-blogs" >>"${LOG}" 2>&1 || log "WARN: blogs init non-zero"
252
+ fi
259
253
 
260
254
  install_wrapper
261
255
 
@@ -276,12 +270,30 @@ if [[ -f "${SCRIPT_DIR}/omarchy-menu.jsonc" ]]; then
276
270
  cp "${SCRIPT_DIR}/omarchy-menu.jsonc" "${HOME}/.config/omarchy/extensions/omarchy-menu.jsonc"
277
271
  fi
278
272
  if [[ -f "${SCRIPT_DIR}/fonts/galaaz.ttf" ]]; then
273
+ mkdir -p "${HOME}/.local/share/fonts/galaaz"
279
274
  cp "${SCRIPT_DIR}/fonts/galaaz.ttf" "${HOME}/.local/share/fonts/galaaz/galaaz.ttf"
280
- if command -v fc-cache >/dev/null 2>&1; then
281
- fc-cache -r >/dev/null 2>&1 || true
282
- fc-cache -f "${HOME}/.local/share/fonts/galaaz" >/dev/null 2>&1 || true
283
- fi
284
- log "menu font: ${HOME}/.local/share/fonts/galaaz/galaaz.ttf"
275
+ log "menu font (debug family galaaz): ${HOME}/.local/share/fonts/galaaz/galaaz.ttf"
276
+ fi
277
+ if [[ -f "${SCRIPT_DIR}/fonts/omarchy-with-galaaz.ttf" ]]; then
278
+ mkdir -p "${HOME}/.local/share/fonts" "${HOME}/.config/fontconfig/conf.d"
279
+ cp "${SCRIPT_DIR}/fonts/omarchy-with-galaaz.ttf" "${HOME}/.local/share/fonts/omarchy-with-galaaz.ttf"
280
+ cat >"${HOME}/.config/fontconfig/conf.d/99-galaaz-omarchy-brand.conf" <<'XML'
281
+ <?xml version="1.0"?>
282
+ <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
283
+ <fontconfig>
284
+ <!-- Prefer Galaaz-extended Omarchy brand font (adds U+E90E). -->
285
+ <selectfont>
286
+ <rejectfont>
287
+ <glob>*/omarchy/omarchy.ttf</glob>
288
+ </rejectfont>
289
+ </selectfont>
290
+ </fontconfig>
291
+ XML
292
+ log "menu font (family omarchy + U+E90E): ${HOME}/.local/share/fonts/omarchy-with-galaaz.ttf"
293
+ fi
294
+ if command -v fc-cache >/dev/null 2>&1; then
295
+ fc-cache -r >/dev/null 2>&1 || true
296
+ fc-cache -f "${HOME}/.local/share/fonts" >/dev/null 2>&1 || true
285
297
  fi
286
298
  cp "${BASH_SOURCE[0]}" "${HOME}/.local/bin/omarchy-install-galaaz"
287
299
  chmod +x "${HOME}/.local/bin/omarchy-install-galaaz"
@@ -309,7 +321,7 @@ mkdir -p "${HOME}/.config/galaaz/profiles"
309
321
  date -Iseconds >"${HOME}/.config/galaaz/profiles/core"
310
322
 
311
323
  log ""
312
- log "Core install complete."
324
+ log "Core configure complete."
313
325
  log "Next: Super+Space → Install → Development → Galaaz → Guide (what's next)"
314
326
  log "Docs: https://rbotafogo.github.io/galaaz/"
315
327
  log "FULL LOG: ${LOG}"
@@ -5,23 +5,23 @@
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: 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/
8
+ // Brand mark: U+E90E in family "omarchy" (same iconFont Cursor/Grok use).
9
+ // Omarchy's stock font owns E900–E90D; we ship omarchy-with-galaaz.ttf which
10
+ // is that font plus our R+gem at E90E, installed to
11
+ // ~/.local/share/fonts/omarchy-with-galaaz.ttf. A separate family "galaaz"
12
+ // alone shows missing-glyph tofu in Qt — do not use iconFont "galaaz" here.
13
13
 
14
14
  "install.development.galaaz": {
15
- "icon": "\uE920",
16
- "iconFont": "galaaz",
15
+ "icon": "\uE90E",
16
+ "iconFont": "omarchy",
17
17
  "label": "Galaaz",
18
18
  "description": "R on Rails"
19
19
  },
20
20
  "install.development.galaaz.core": {
21
- "icon": "\uE920",
22
- "iconFont": "galaaz",
21
+ "icon": "\uE90E",
22
+ "iconFont": "omarchy",
23
23
  "label": "Galaaz (core)",
24
- "description": "gem + setup + blogs (not just gem install)",
24
+ "description": "setup + blogs (gem already installed)",
25
25
  "action": "omarchy-launch-tui omarchy-install-galaaz",
26
26
  "disabled": "test -f ~/.config/galaaz/profiles/core"
27
27
  },
@@ -47,45 +47,45 @@
47
47
  "when": "test -f ~/.config/galaaz/profiles/core"
48
48
  },
49
49
  "install.development.galaaz.knit": {
50
- "icon": "\uE920",
51
- "iconFont": "galaaz",
50
+ "icon": "\uE90E",
51
+ "iconFont": "omarchy",
52
52
  "label": "Knit (HTML + PDF blogs)",
53
53
  "description": "pandoc + knitr/rmarkdown + TinyTeX",
54
54
  "action": "omarchy-launch-tui omarchy-galaaz-add knit",
55
55
  "disabled": "test -f ~/.config/galaaz/profiles/knit"
56
56
  },
57
57
  "install.development.galaaz.arrow": {
58
- "icon": "\uE920",
59
- "iconFont": "galaaz",
58
+ "icon": "\uE90E",
59
+ "iconFont": "omarchy",
60
60
  "label": "Arrow",
61
61
  "action": "omarchy-launch-tui omarchy-galaaz-add arrow",
62
62
  "disabled": "test -f ~/.config/galaaz/profiles/arrow"
63
63
  },
64
64
  "install.development.galaaz.bio": {
65
- "icon": "\uE920",
66
- "iconFont": "galaaz",
65
+ "icon": "\uE90E",
66
+ "iconFont": "omarchy",
67
67
  "label": "Bioconductor (DESeq2)",
68
68
  "action": "omarchy-launch-tui omarchy-galaaz-add bio",
69
69
  "disabled": "test -f ~/.config/galaaz/profiles/bio"
70
70
  },
71
71
  "install.development.galaaz.examples": {
72
- "icon": "\uE920",
73
- "iconFont": "galaaz",
72
+ "icon": "\uE90E",
73
+ "iconFont": "omarchy",
74
74
  "label": "Examples",
75
75
  "action": "omarchy-launch-tui omarchy-galaaz-add examples",
76
76
  "disabled": "test -f ~/.config/galaaz/profiles/examples"
77
77
  },
78
78
  "install.development.galaaz.ledger": {
79
- "icon": "\uE920",
80
- "iconFont": "galaaz",
79
+ "icon": "\uE90E",
80
+ "iconFont": "omarchy",
81
81
  "label": "Ledger (R-on-Rails demo)",
82
82
  "description": "Clone app, seed, bin/dev",
83
83
  "action": "omarchy-launch-tui omarchy-galaaz-add ledger",
84
84
  "disabled": "test -f ~/.config/galaaz/profiles/ledger"
85
85
  },
86
86
  "remove.development.galaaz": {
87
- "icon": "\uE920",
88
- "iconFont": "galaaz",
87
+ "icon": "\uE90E",
88
+ "iconFont": "omarchy",
89
89
  "label": "Galaaz",
90
90
  "description": "Core gem (add-on R packages stay)",
91
91
  "action": "omarchy-launch-tui omarchy-remove-galaaz"
data/version.rb CHANGED
@@ -1,2 +1,2 @@
1
1
  $gem_name = "galaaz"
2
- $version="2.1.10.pre.4"
2
+ $version="2.1.10.pre.6"
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.4
4
+ version: 2.1.10.pre.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rodrigo Botafogo
@@ -444,6 +444,7 @@ files:
444
444
  - script/omarchy/README.md
445
445
  - script/omarchy/debug-galaaz.sh
446
446
  - script/omarchy/fonts/galaaz.ttf
447
+ - script/omarchy/fonts/omarchy-with-galaaz.ttf
447
448
  - script/omarchy/galaaz-add.sh
448
449
  - script/omarchy/galaaz-gknit.sh
449
450
  - script/omarchy/galaaz-guide.sh