DropletCategory

The shelf of the Store a droplet sits on.

enum DropletCategory

A closed set, and it is closed because it is not a label: it is the Store section the droplet appears under. category was a free String documented as "for example Productivity or Media", so a droplet could declare anything, pass validation, and then be filed under Productivity by a host that recognises three values — the author's choice disappearing without an error anywhere along the way.

Adding a case means adding a Store section in Droppy. A value the Store cannot show is a value that silently becomes Productivity again, which is the bug this type exists to close.

Cases

DropletCategory.productivity

case productivity

Getting work done: calendars, notes, timers, launchers, meetings.

DropletCategory.media

case media

Music, video and playback.

DropletCategory.ai

case ai

On-device models, transcription, generation, recognition.

DropletCategory.capture

case capture

The screen and the camera: capture, recognition of what is on it. Since 1.12.0.

DropletCategory.files

case files

Documents and transfers: converting, compressing, sharing files. Since 1.12.0.

DropletCategory.system

case system

The Mac itself: windows, the menu bar, input, notifications, stats. Since 1.12.0.

Initializers

init(rawValue:)

init?(rawValue: String)

Type properties

allowedValues

static var allowedValues: String { get }

The values a manifest may carry, for an error message that tells the author what to write instead.

Properties

catalogCategory

var catalogCategory: DropletCategory { get }

The value the Store catalog's category field carries for this category. That field is what every Droppy before 15.3 reads, and it knows only the first three; the catalog's section carries the category itself. Since 1.12.0.

Type methods

resolve(_:)

static func resolve(_ rawCategory: String) -> DropletCategory?

The category a manifest's raw string means, or nil when it names none of them.

Case-insensitive, because a manifest writes it the way it reads in the Store ("Productivity") and the Store matches it lowercased.