DropletCreator

Who made a droplet.

struct DropletCreator

Every droplet carries one, and every surface that lists droplets shows it: the Store's rows, the droplet's detail page, and the cards on getdroppy.app/droplets. A user should never have to guess whether something came from Droppy or from the community.

Cases

DropletCreator.Kind.droppy

case droppy

Published by Droppy itself.

DropletCreator.Kind.community

case community

Published by a third-party developer.

Initializers

init(from:)

init(from decoder: any Decoder) throws

init(name:kind:url:avatar:)

init(name: String, kind: Kind, url: URL? = nil, avatar: String)

init(name:kind:url:avatar:gitlab:)

init(name: String, kind: Kind, url: URL? = nil, avatar: String, gitlab: String?)

Creates a creator with a GitLab username. (DroppyKit 1.11.0)

init(rawValue:)

init?(rawValue: String)

Properties

avatar

let avatar: String

Filename of the creator's avatar, relative to the droplet's Assets/ directory. Required.

A square PNG, at least 256×256, with no built-in rounding: every surface clips it to a circle itself, so a pre-rounded image ends up rounded twice and the corners go muddy. Transparency is allowed.

This is the small round mark beside the droplet's name in the Store, so it has to read at 20 points. A wordmark will not; a monogram, a face, or a symbol will.

gitlab

let gitlab: String?

The maker's GitLab username, without the @. (DroppyKit 1.11.0)

Required by the Droplet Store repository (gitlab.com/droppyformac1/droplets): it generates CODEOWNERS from this field, which is what gets the maker asked before someone else's change to their droplet merges. Optional in the manifest itself, so a droplet built elsewhere still decodes.

kind

let kind: Kind

Whether this is a first-party or community droplet. Community submissions are always published as .community; the review tool refuses a submission that claims .droppy.

name

let name: String

Display name of the person or company, as it should appear in the Store. Sentence case, no marketing suffixes.

url

let url: URL?

A page the user can visit to learn who you are. Optional, but shown as a link on the detail page when present.

Methods

encode(to:)

func encode(to encoder: any Encoder) throws