unicon 3.2.0 → 3.4.0

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: e3bf03043df799333a2f3d7e255f0af0cf4344ccb508f7b5dd928cd61f7c9c87
4
- data.tar.gz: 80bfdd13500fdb60f40a85140358de20c891ebac6a0220b7073dfc3cc3dd3c23
3
+ metadata.gz: 9f115a5eb9dd95c343b08fbb5549d5d4f99bce263c966a04e9e4da6cf3400569
4
+ data.tar.gz: dfeb31049dcd97915c7e205cf43cde21b8840797d736c9586945ef9fc7365623
5
5
  SHA512:
6
- metadata.gz: 70ac223950c1c35c846e01dbb33a179f31e4b31765406fe02eda9671846071cb55cf6631d9e3bf55e6fe92d4436df896cead4d5be2807039ecebbe0ef8455b68
7
- data.tar.gz: c57e473c24dd5c954c69d43432f51144ecc8aba3cc669714e042748d504006715e55a7a487a40305216a7c1a17500c80810afa0166fc71d17b3e3f18a186942a
6
+ metadata.gz: 2318b81920c8d90aebcbce8fa5c34daee03c14839cec462a17bb084252213dc6e101c61ebe07fdca9d69e4f813aa3f7226ae55eb655b51b3b62a6b3df063dbb8
7
+ data.tar.gz: e5a09156f3864722accbfebc21fbeb7626a64a03a8d4a54637bfaceb587dee34f47a81f0bd8963e5438804df8de49e1d2cbe4306872fff966b00e6fc06787f5f
data/CHANGELOG.md CHANGED
@@ -5,6 +5,27 @@ what decides both whether a reader can take it and what the next version number
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [3.4.0] - 2026-08-20
9
+
10
+ - **Feature.** `:wand` is the wand throwing off stars, the nearest thing the three sets
11
+ publish to a crystal ball: none of them draws one, so a fortune teller's trade borrows
12
+ the magic instead. Bootstrap calls it `magic`, SF Symbols `wand.and.stars`, Material
13
+ `wand_stars` — one picture under three spellings, which is the whole reason this gem
14
+ exists. `:reading` and `:prediction` borrow it, naming what the sitting produces rather
15
+ than who produces it. 314 names now resolve, 139 of them aliases.
16
+
17
+ ## [3.3.0] - 2026-08-19
18
+
19
+ - **Feature.** `:checklist` is the list with ticks, the picture a warehouse pick list
20
+ wants and one `:clipboard` cannot stand in for: the clipboard is empty paperwork in all
21
+ three sets. `:pick` borrows it, beside the `:inventory`, `:shipment` and `:delivery` a
22
+ warehouse already looks up. iOS is `checklist.checked` rather than the plain
23
+ `checklist`, which `:task` has drawn since the first release — two concepts may not
24
+ draw the same picture, and the ticked box is the truer half of the pair anyway.
25
+ - **Feature.** `:boost` borrows the bolt. Promotion is a jolt of electricity in all three
26
+ sets and a rocket in only two, SF Symbols publishing none, so the rocket the word wants
27
+ is a concept this gem cannot list. 311 names now resolve, 137 of them aliases.
28
+
8
29
  ## [3.2.0] - 2026-08-19
9
30
 
10
31
  - **Feature.** `:drag` is the grip a row is taken hold of by, which every list that a
data/README.md CHANGED
@@ -63,9 +63,9 @@ blank. A concept may be given as a string, so `Unicon['contact']` works too.
63
63
  ## Three lists, and which one you want
64
64
 
65
65
  ```ruby
66
- Unicon.icons # => [:account, :airplane, :alarm, :archive, :award, :badge, ...] 129
67
- Unicon.names # => [:account, :add, :add_member, :address, :agent, ...] 306
68
- Unicon.actions # => [:add, :add_member, :close, :confirm, ...] 42
66
+ Unicon.icons # => [:account, :airplane, :alarm, :archive, :award, :badge, ...] 132
67
+ Unicon.names # => [:account, :add, :add_member, :address, :agent, ...] 314
68
+ Unicon.actions # => [:add, :add_member, :close, :confirm, ...] 43
69
69
  ```
70
70
 
71
71
  - `Unicon.icons` is **one name per distinct picture**. No two entries draw the same
@@ -87,7 +87,7 @@ caller who wants the pictures as well as the names.
87
87
  ## Model names
88
88
 
89
89
  A host app looks an icon up by the name of the model it is rendering, and the more names
90
- answer, the less any app has to declare. 131 of them borrow the icons of a concept —
90
+ answer, the less any app has to declare. 139 of them borrow the icons of a concept —
91
91
  `:user` takes the person, `:zip` takes the pin — and the Aliases column of the table below
92
92
  says which took which. They resolve without swelling the list a picker offers.
93
93
 
@@ -107,7 +107,7 @@ licenses them for developing applications for Apple-branded products, and this r
107
107
  is part of building one. They may not be redistributed for any other purpose, so anyone
108
108
  reusing this gem outside that context should show the names alone.
109
109
 
110
- The cells hold the icon and not its name, so the table stays readable at 129 rows. **The
110
+ The cells hold the icon and not its name, so the table stays readable at 132 rows. **The
111
111
  name each system uses is on the icon**: hover it, or reach it with a screen reader, and
112
112
  `Unicon[:search][:ios]` reads back as `magnifyingglass`.
113
113
 
@@ -131,7 +131,7 @@ drawn out. `Unicon.actions` names them all.
131
131
  | `:battery` | | ![battery](vendor/bootstrap-icons/battery.svg "battery") | ![battery.100](vendor/sf-symbols/battery.100.svg "battery.100") | ![battery_full](vendor/material-symbols/battery_full.svg "battery_full") |
132
132
  | `:bell` | `:notification` `:reminder` | ![bell](vendor/bootstrap-icons/bell.svg "bell") | ![bell](vendor/sf-symbols/bell.svg "bell") | ![notifications](vendor/material-symbols/notifications.svg "notifications") |
133
133
  | `:bicycle` | | ![bicycle](vendor/bootstrap-icons/bicycle.svg "bicycle") | ![bicycle](vendor/sf-symbols/bicycle.svg "bicycle") | ![directions_bike](vendor/material-symbols/directions_bike.svg "directions_bike") |
134
- | `:bolt` | | ![lightning](vendor/bootstrap-icons/lightning.svg "lightning") | ![bolt](vendor/sf-symbols/bolt.svg "bolt") | ![bolt](vendor/material-symbols/bolt.svg "bolt") |
134
+ | `:bolt` | `:boost` | ![lightning](vendor/bootstrap-icons/lightning.svg "lightning") | ![bolt](vendor/sf-symbols/bolt.svg "bolt") | ![bolt](vendor/material-symbols/bolt.svg "bolt") |
135
135
  | `:book` | | ![book](vendor/bootstrap-icons/book.svg "book") | ![book](vendor/sf-symbols/book.svg "book") | ![book](vendor/material-symbols/book.svg "book") |
136
136
  | `:bookmark` | | ![bookmark](vendor/bootstrap-icons/bookmark.svg "bookmark") | ![bookmark](vendor/sf-symbols/bookmark.svg "bookmark") | ![bookmark](vendor/material-symbols/bookmark.svg "bookmark") |
137
137
  | `:bookmarked` | | ![bookmark-fill](vendor/bootstrap-icons/bookmark-fill.svg "bookmark-fill") | ![bookmark.fill](vendor/sf-symbols/bookmark.fill.svg "bookmark.fill") | ![bookmark_added](vendor/material-symbols/bookmark_added.svg "bookmark_added") |
@@ -149,6 +149,7 @@ drawn out. `Unicon.actions` names them all.
149
149
  | `:cash` | `:cost` | ![cash](vendor/bootstrap-icons/cash.svg "cash") | ![banknote](vendor/sf-symbols/banknote.svg "banknote") | ![payments](vendor/material-symbols/payments.svg "payments") |
150
150
  | `:chat` | `:comment` `:conversation` `:message` | ![chat](vendor/bootstrap-icons/chat.svg "chat") | ![message](vendor/sf-symbols/message.svg "message") | ![chat](vendor/material-symbols/chat.svg "chat") |
151
151
  | `:check_circle` | | ![check-circle](vendor/bootstrap-icons/check-circle.svg "check-circle") | ![checkmark.circle](vendor/sf-symbols/checkmark.circle.svg "checkmark.circle") | ![check_circle](vendor/material-symbols/check_circle.svg "check_circle") |
152
+ | `:checklist` | `:pick` | ![card-checklist](vendor/bootstrap-icons/card-checklist.svg "card-checklist") | ![checklist.checked](vendor/sf-symbols/checklist.checked.svg "checklist.checked") | ![checklist](vendor/material-symbols/checklist.svg "checklist") |
152
153
  | `:circle` | | ![circle](vendor/bootstrap-icons/circle.svg "circle") | ![circle](vendor/sf-symbols/circle.svg "circle") | ![circle](vendor/material-symbols/circle.svg "circle") |
153
154
  | `:clipboard` | `:assessment` `:survey` | ![clipboard](vendor/bootstrap-icons/clipboard.svg "clipboard") | ![list.clipboard](vendor/sf-symbols/list.clipboard.svg "list.clipboard") | ![content_paste](vendor/material-symbols/content_paste.svg "content_paste") |
154
155
  | `:clock` | `:history` `:session` `:shift` | ![clock](vendor/bootstrap-icons/clock.svg "clock") | ![clock](vendor/sf-symbols/clock.svg "clock") | ![schedule](vendor/material-symbols/schedule.svg "schedule") |
@@ -243,13 +244,14 @@ drawn out. `Unicon.actions` names them all.
243
244
  | `:video` | `:movie` | ![camera-video](vendor/bootstrap-icons/camera-video.svg "camera-video") | ![video](vendor/sf-symbols/video.svg "video") | ![videocam](vendor/material-symbols/videocam.svg "videocam") |
244
245
  | `:volume` | | ![volume-up](vendor/bootstrap-icons/volume-up.svg "volume-up") | ![speaker.wave.2](vendor/sf-symbols/speaker.wave.2.svg "speaker.wave.2") | ![volume_up](vendor/material-symbols/volume_up.svg "volume_up") |
245
246
  | `:wallet` | | ![wallet](vendor/bootstrap-icons/wallet.svg "wallet") | ![wallet.pass](vendor/sf-symbols/wallet.pass.svg "wallet.pass") | ![wallet](vendor/material-symbols/wallet.svg "wallet") |
247
+ | `:wand` | `:prediction` `:reading` | ![magic](vendor/bootstrap-icons/magic.svg "magic") | ![wand.and.stars](assets/undrawn.svg "wand.and.stars") | ![wand_stars](vendor/material-symbols/wand_stars.svg "wand_stars") |
246
248
  | `:warning` | `:alert` `:issue` | ![exclamation-triangle](vendor/bootstrap-icons/exclamation-triangle.svg "exclamation-triangle") | ![exclamationmark.triangle](vendor/sf-symbols/exclamationmark.triangle.svg "exclamationmark.triangle") | ![warning](vendor/material-symbols/warning.svg "warning") |
247
249
  | `:waveform` | `:audio` `:echo` | ![soundwave](vendor/bootstrap-icons/soundwave.svg "soundwave") | ![waveform](vendor/sf-symbols/waveform.svg "waveform") | ![graphic_eq](vendor/material-symbols/graphic_eq.svg "graphic_eq") |
248
250
  | `:wifi` | | ![wifi](vendor/bootstrap-icons/wifi.svg "wifi") | ![wifi](vendor/sf-symbols/wifi.svg "wifi") | ![wifi](vendor/material-symbols/wifi.svg "wifi") |
249
251
  | `:window` | `:app` | ![window](vendor/bootstrap-icons/window.svg "window") | ![macwindow](vendor/sf-symbols/macwindow.svg "macwindow") | ![web_asset](vendor/material-symbols/web_asset.svg "web_asset") |
250
252
  | `:wrench` | | ![wrench](vendor/bootstrap-icons/wrench.svg "wrench") | ![wrench](vendor/sf-symbols/wrench.svg "wrench") | ![build](vendor/material-symbols/build.svg "build") |
251
253
 
252
- A dashed circle is a symbol newer than the macOS that drew this table, which knows the SF Symbols 5 set. Hover it for the name, which resolves in an app built against a newer SDK.
254
+ A dashed circle is a symbol the Mac that drew this table could not put an outline to: newer than the SF Symbols 5 set it knows, or one it draws but the renderer would name no glyph for. Hover it for the name, which resolves in an app all the same.
253
255
  <!-- concepts:end -->
254
256
 
255
257
  ## Where the names come from
@@ -284,9 +286,13 @@ gray and the same box.
284
286
  That rendering is done by the machine running `rake readme`, and a machine only knows the
285
287
  symbols its own system shipped with. Anything newer gets `assets/undrawn.svg` — a dashed
286
288
  circle of our own drawing, not Apple's — with the symbol's name still on it to hover.
287
- One row is in that state today: `:receipt`, whose SF symbol arrived in iOS 18.2, drawn on
288
- a Mac running macOS 14.3. `rake validate` has already proved every name real, which is
289
- why a symbol this Mac cannot draw is reported rather than fatal.
289
+ Three rows are in that state today, the table having been drawn on a Mac running macOS
290
+ 14.3: `:receipt`, whose SF symbol arrived in iOS 18.2 and so is newer than that Mac, and
291
+ `:franchise` and `:wand`, whose symbols it does draw but whose outline the renderer would
292
+ not commit to — it matches the picture the system draws against every glyph in Apple's
293
+ fallback font, and a wrong glyph is worse than a missing one. `rake validate` has already
294
+ proved every name real, which is why a symbol this Mac cannot draw is reported rather
295
+ than fatal.
290
296
 
291
297
  ## License
292
298
 
@@ -5,7 +5,7 @@ module Unicon
5
5
  answer: :question, api: :terminal, app: :window, appointment: :calendar_check,
6
6
  area: :map, assessment: :clipboard, attachment: :paperclip, audio: :waveform,
7
7
  author: :account, avatar: :account, backup: :cloud, banner: :image, bill: :invoice,
8
- booking: :calendar_check, business: :building, call: :phone,
8
+ booking: :calendar_check, boost: :bolt, business: :building, call: :phone,
9
9
  campaign: :megaphone, category: :tag, charge: :credit_card, city: :building,
10
10
  client: :person, comment: :chat, company: :building, configuration: :gear,
11
11
  contract: :signature, conversation: :chat, cost: :cash, country: :globe,
@@ -23,11 +23,11 @@ module Unicon
23
23
  optimization: :sliders,
24
24
  order: :cart, organization: :building, package: :box, page: :document,
25
25
  password: :lock, payment: :credit_card, permission: :key, photo: :image,
26
- picture: :image, plan: :calendar, platform: :puzzle, plugin: :puzzle,
27
- post: :document, preference: :sliders, price: :tag, product: :box, profile: :account,
28
- project: :folder, prompt: :terminal, provider: :briefcase, purchase: :cart,
29
- rating: :star, recording: :microphone, region: :map, reminder: :bell,
30
- review: :star, ride: :car, role: :badge, route: :signpost,
26
+ pick: :checklist, picture: :image, plan: :calendar, platform: :puzzle, plugin: :puzzle,
27
+ post: :document, prediction: :wand, preference: :sliders, price: :tag, product: :box,
28
+ profile: :account, project: :folder, prompt: :terminal, provider: :briefcase,
29
+ purchase: :cart, rating: :star, reading: :wand, recording: :microphone, region: :map,
30
+ reminder: :bell, review: :star, ride: :car, role: :badge, route: :signpost,
31
31
  schedule: :calendar, screen: :display, sector: :pie_chart, session: :clock, setting: :gear,
32
32
  shift: :clock, shipment: :truck, site: :globe, source: :signpost,
33
33
  specialty: :award, staff: :people, state: :map, subscription: :repeat,
@@ -5,6 +5,7 @@ module Unicon
5
5
  folder: { bootstrap: 'folder', ios: 'folder', android: 'folder' },
6
6
  archive: { bootstrap: 'archive', ios: 'archivebox', android: 'archive' },
7
7
  clipboard: { bootstrap: 'clipboard', ios: 'list.clipboard', android: 'content_paste' },
8
+ checklist: { bootstrap: 'card-checklist', ios: 'checklist.checked', android: 'checklist' },
8
9
  book: { bootstrap: 'book', ios: 'book', android: 'book' },
9
10
  note: { bootstrap: 'sticky', ios: 'note.text', android: 'sticky_note_2' },
10
11
  paperclip: { bootstrap: 'paperclip', ios: 'paperclip', android: 'attach_file' },
@@ -7,6 +7,7 @@ module Unicon
7
7
  hammer: { bootstrap: 'hammer', ios: 'hammer', android: 'hardware' },
8
8
  wrench: { bootstrap: 'wrench', ios: 'wrench', android: 'build' },
9
9
  ruler: { bootstrap: 'rulers', ios: 'ruler', android: 'straighten' },
10
+ wand: { bootstrap: 'magic', ios: 'wand.and.stars', android: 'wand_stars' },
10
11
  puzzle: { bootstrap: 'puzzle', ios: 'puzzlepiece', android: 'extension' },
11
12
  briefcase: { bootstrap: 'briefcase', ios: 'briefcase', android: 'work' },
12
13
  task: { bootstrap: 'check2-square', ios: 'checklist', android: 'task_alt' },
@@ -1,4 +1,4 @@
1
1
  module Unicon
2
2
  # Version of the gem, read by the gemspec and by hosts checking compatibility.
3
- VERSION = '3.2.0'
3
+ VERSION = '3.4.0'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unicon
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - claudiob