diff --git a/interject/.Interject!.xcodeproj.icloud b/interject/.Interject!.xcodeproj.icloud
new file mode 100755
index 0000000..329da9a
Binary files /dev/null and b/interject/.Interject!.xcodeproj.icloud differ
diff --git a/interject/.Interject--Info.plist.icloud b/interject/.Interject--Info.plist.icloud
new file mode 100644
index 0000000..6462eee
Binary files /dev/null and b/interject/.Interject--Info.plist.icloud differ
diff --git a/interject/Interject! Watch Watch App/Assets.xcassets/AppIcon.appiconset/1024 copy.png b/interject/Interject! Watch Watch App/Assets.xcassets/AppIcon.appiconset/1024 copy.png
new file mode 100644
index 0000000..8f4e0bd
Binary files /dev/null and b/interject/Interject! Watch Watch App/Assets.xcassets/AppIcon.appiconset/1024 copy.png differ
diff --git a/interject/Interject! Watch Watch App/Interject! Watch Watch App.entitlements b/interject/Interject! Watch Watch App/Interject! Watch Watch App.entitlements
new file mode 100644
index 0000000..b592a66
--- /dev/null
+++ b/interject/Interject! Watch Watch App/Interject! Watch Watch App.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.us.hinnen.Interject-
+
+
+
diff --git a/interject/Interject! Watch Watch App/WatchStore.swift b/interject/Interject! Watch Watch App/WatchStore.swift
new file mode 100644
index 0000000..1e9a959
--- /dev/null
+++ b/interject/Interject! Watch Watch App/WatchStore.swift
@@ -0,0 +1,48 @@
+//
+// WatchStore.swift
+// Interject! Watch Watch App
+//
+
+import Foundation
+import Observation
+
+private let appGroupID = "group.us.hinnen.Interject-"
+
+@Observable
+class WatchStore {
+ var phrase: Sentence
+ var sfw: Bool
+
+ init() {
+ let local = UserDefaults.standard
+ sfw = local.object(forKey: "watchSFW") as? Bool ?? true
+
+ if let data = local.data(forKey: "watchPhrase"),
+ let saved = try? PropertyListDecoder().decode(Sentence.self, from: data) {
+ phrase = saved
+ } else if let shared = UserDefaults(suiteName: appGroupID),
+ let data = shared.data(forKey: "currentPhrase"),
+ let seeded = try? PropertyListDecoder().decode(Sentence.self, from: data) {
+ phrase = seeded
+ } else {
+ let seed = Sentence()
+ phrase = seed.new(current: seed)
+ }
+ }
+
+ func nextPhrase() {
+ phrase = phrase.new(current: phrase)
+ persist()
+ }
+
+ func toggleSFW() {
+ sfw.toggle()
+ UserDefaults.standard.set(sfw, forKey: "watchSFW")
+ }
+
+ private func persist() {
+ if let data = try? PropertyListEncoder().encode(phrase) {
+ UserDefaults.standard.set(data, forKey: "watchPhrase")
+ }
+ }
+}
diff --git a/interject/Interject! Watch Watch App/words.json b/interject/Interject! Watch Watch App/words.json
new file mode 100644
index 0000000..789e2ed
--- /dev/null
+++ b/interject/Interject! Watch Watch App/words.json
@@ -0,0 +1,241 @@
+{
+ "first": [
+ {"word": "absolute", "meaning": "The most extreme example"},
+ {"word": "complete", "meaning": "The most extreme example"},
+ {"word": "utter", "meaning": "The most extreme example"}
+ ],
+ "adjectives": [
+ {"word": "artless", "meaning": "Without craft or intelligence"},
+ {"word": "base-court", "meaning": "From the lower English court, common"},
+ {"word": "bat-fowling", "meaning": "An archaic method of bird hunting, like fishing from a barrel"},
+ {"word": "bawdy", "meaning": "Humorously indecent"},
+ {"word": "bawheeded", "meaning": "A person who speaks nonsense"},
+ {"word": "beef-witted", "meaning": "Brainless, a meat head"},
+ {"word": "beetle-headed", "meaning": "Witless"},
+ {"word": "beslubbering", "meaning": "Drooling"},
+ {"word": "bloomin'", "meaning": "For emphasis"},
+ {"word": "boil-brained", "meaning": "Filled with thoughts of pestilence and misery"},
+ {"word": "bootless", "meaning": "Common, or poor"},
+ {"word": "cat grabbing", "meaning": "A man who respects women, and is always concerned for their well being", "nsfw": "pussy grabbing", "nsfwMeaning": "A conman"},
+ {"word": "churlish", "meaning": "Intentionally rude"},
+ {"word": "clapper-clawed", "meaning": "Brutish, all hands"},
+ {"word": "clarted", "meaning": "Mud covered"},
+ {"word": "clatty", "meaning": "Dirty, slovely, cluttered"},
+ {"word": "clay-brained", "meaning": "Rock head"},
+ {"word": "clouted", "meaning": "Senseless, reeling from being beat"},
+ {"word": "cockered", "meaning": "Spoiled"},
+ {"word": "couch-loving", "meaning": "The amourous intention of a rural poet", "nsfw": "couch-fucking", "nsfwMeaning": "The sexual target of a rural poet"},
+ {"word": "common-kissing", "meaning": "Rogue, a rascal, grabs others without permission"},
+ {"word": "craven", "meaning": "Cowardly"},
+ {"word": "crook-pated", "meaning": "A thug, a thief who takes by violence"},
+ {"word": "currish", "meaning": "Like a feral dog, wild and snappish"},
+ {"word": "daft", "meaning": "Silly, foolish"},
+ {"word": "dankish", "meaning": "Dark, damp, humid"},
+ {"word": "dismal-dreaming", "meaning": "A person with foul and depressing dreams or goals"},
+ {"word": "dissembling", "meaning": "A rambling liar"},
+ {"word": "dizzy-eyed", "meaning": "Easily distracted"},
+ {"word": "doaty", "meaning": "A malingerer, one who obsesses over unimportant things"},
+ {"word": "doddering", "meaning": "Someone who rambles on, complaining of witchhunts and fake news"},
+ {"word": "dog loving", "meaning": "Low standards", "nsfw": "dog fucking"},
+ {"word": "doghearted", "meaning": "Inhuman, cruel"},
+ {"word": "door knobbing", "meaning": "Dickish", "nsfw": "knobdobbing"},
+ {"word": "dread-bolted", "meaning": "Frightning, terrifying"},
+ {"word": "droning", "meaning": "One who goes on and on, monotonous, boring and obsessive"},
+ {"word": "earth-vexing", "meaning": "Causes pain to all around"},
+ {"word": "elf-skinned", "meaning": "Shrunken, tiny, a mere nothing"},
+ {"word": "errant", "meaning": "One who wanders from what is right"},
+ {"word": "fat-kidneyed", "meaning": "Gross, clumsy"},
+ {"word": "fawning", "meaning": "Obsequious"},
+ {"word": "fen-sucked", "meaning": "Rising from the marshes"},
+ {"word": "fly-bitten", "meaning": "Marked by fly bites, wild and unkempt"},
+ {"word": "fobbing", "meaning": "A con man, a cheat"},
+ {"word": "folly-fallen", "meaning": "Stooping to foolishness"},
+ {"word": "fool-born", "meaning": "A second-generation fool"},
+ {"word": "freaking", "meaning": "A bad word", "nsfw": "fucking", "nsfwMeaning": "An old germanic word"},
+ {"word": "frothy", "meaning": "Of little substance, foolish"},
+ {"word": "froward", "meaning": "A contrary person, difficult to deal with"},
+ {"word": "fuddy", "meaning": "Stuffy and old fashioned"},
+ {"word": "full-gorged", "meaning": "Well fed"},
+ {"word": "glaikit", "meaning": "Foolish, giddy"},
+ {"word": "glakit", "meaning": "Unsightly and stupid"},
+ {"word": "gleeking", "meaning": "Spitting"},
+ {"word": "goatish", "meaning": "Goatlike in manners"},
+ {"word": "gommy", "meaning": "Idiotic, mammering"},
+ {"word": "gorbellied", "meaning": "Corpulent"},
+ {"word": "gormless", "meaning": "Stupid or dull, lacking in gorm"},
+ {"word": "guts-griping", "meaning": "Belly aching"},
+ {"word": "hackit", "meaning": "Ugly"},
+ {"word": "half-faced", "meaning": "Imperfect, incomplete, defective"},
+ {"word": "hasty-witted", "meaning": "Shallow"},
+ {"word": "hedge-born", "meaning": "Of low birth"},
+ {"word": "hell-hated", "meaning": "Even despised by the Devil"},
+ {"word": "howlin'", "meaning": "Complaining, waling"},
+ {"word": "idle-headed", "meaning": "Stupid"},
+ {"word": "ill-bred", "meaning": "Lacking class"},
+ {"word": "ill-nurtured", "meaning": "Ill bred, raised common"},
+ {"word": "impertinent", "meaning": "Not respectful, rude"},
+ {"word": "infectious", "meaning": "Likely to spread infection"},
+ {"word": "jakey", "meaning": "A drunken tramp"},
+ {"word": "jarring", "meaning": "Incongruous, ill fitting"},
+ {"word": "knotty-pated", "meaning": "Easily distracted"},
+ {"word": "lavvy-heided", "meaning": "Toilet headed"},
+ {"word": "loggerheaded", "meaning": "Block headed"},
+ {"word": "loofa-faced", "meaning": "Pale and pocked", "nsfwMeaning": "Orange, and pocked"},
+ {"word": "lumpish", "meaning": "Roughly or crudely formed"},
+ {"word": "malodorous", "meaning": "Bad smelling"},
+ {"word": "mammering", "meaning": "To mumble endlessly without point"},
+ {"word": "mangled", "meaning": "Disfigured"},
+ {"word": "mewling", "meaning": "Whimpering"},
+ {"word": "milk-livered", "meaning": "Gutless, cowardly"},
+ {"word": "mingin'", "meaning": "Foul smelling"},
+ {"word": "motley minded", "meaning": "Foolish"},
+ {"word": "naffy", "meaning": "Self centered fop"},
+ {"word": "onion-eyed", "meaning": "One so ugly they make your eyes water"},
+ {"word": "paunchy", "meaning": "Pot bellied"},
+ {"word": "pencil-necked", "meaning": "Skinny, useless, annoying, weak"},
+ {"word": "plume-plucked", "meaning": "Humbled"},
+ {"word": "pottle-deep", "meaning": "Drunken, one who has emptied the dregs of his drink"},
+ {"word": "pox-marked", "meaning": "Pitted skin, marked with pox"},
+ {"word": "pribbling", "meaning": "A quibbler who argues just to argue"},
+ {"word": "puking", "meaning": "Nauseating"},
+ {"word": "puny", "meaning": "Small and weak"},
+ {"word": "qualling", "meaning": "Quail like, cowardly"},
+ {"word": "rank", "meaning": "Low or vile, stinking"},
+ {"word": "reeky", "meaning": "Stinky"},
+ {"word": "reeling-ripe", "meaning": "Smelly"},
+ {"word": "roguish", "meaning": "Loutish, and not in a good way"},
+ {"word": "rooster juggling", "meaning": "A fowl manager", "nsfw": "cock-juggling", "nsfwMeaning": "A promiscous person"},
+ {"word": "rude-growing", "meaning": "Rough and wild"},
+ {"word": "rump-fed", "meaning": "Pampered"},
+ {"word": "ruttish", "meaning": "Salacious, lascivious"},
+ {"word": "saucy", "meaning": "Lascivious, salacious"},
+ {"word": "scabby", "meaning": "Covered in scars, ugly"},
+ {"word": "shard borne", "meaning": "Born in dung"},
+ {"word": "sheep-biting", "meaning": "A person who preys on the defenseless"},
+ {"word": "small-handed", "meaning": "An observation regarding one's manliness", "nsfwMeaning": "Refering to the size of one's third leg"},
+ {"word": "spleeny", "meaning": "Having a lot of spleen"},
+ {"word": "spongy", "meaning": "Soft headed"},
+ {"word": "spur-galled", "meaning": "Ridden hard, put away wet, worn out"},
+ {"word": "straw-headed", "meaning": "A numpty"},
+ {"word": "surly", "meaning": "One of the dwarfs"},
+ {"word": "swag-bellied", "meaning": "Well fed, a golf course owner"},
+ {"word": "swollen", "meaning": "Distended, fat, puffy"},
+ {"word": "tardy-gaited", "meaning": "Sluggish"},
+ {"word": "three-inched", "meaning": "An observation regarding one's manliness", "nsfwMeaning": "As reported by Stormy Daniels"},
+ {"word": "tickle-brained", "meaning": "Flighty, unreliable, probably a drunk"},
+ {"word": "toad-spotted", "meaning": "Spotted like a toad"},
+ {"word": "toffee-nosed", "meaning": "Having a soft, brown nose"},
+ {"word": "tottering", "meaning": "Doddering"},
+ {"word": "unchin-snouted", "meaning": "A face like a hedgehog"},
+ {"word": "unmuzzled", "meaning": "Unrestrained, obnoxiously capricious"},
+ {"word": "vacuous", "meaning": "Empty headed"},
+ {"word": "vain", "meaning": "Self obsessed"},
+ {"word": "venomed", "meaning": "Poisonous"},
+ {"word": "villianous", "meaning": "Evil"},
+ {"word": "warped", "meaning": "Bent, bad"},
+ {"word": "wayward", "meaning": "Errant"},
+ {"word": "weapons-grade", "meaning": "The most extreme example of"},
+ {"word": "weather-bitten", "meaning": "Scarred by a life outside"},
+ {"word": "weedy", "meaning": "Thin"},
+ {"word": "witless", "meaning": "Uhh.."},
+ {"word": "yeasty", "meaning": "Pale and soft"}
+ ],
+ "nouns": [
+ {"word": "apple john", "meaning": "Withered"},
+ {"word": "arse", "meaning": "That thing you sit on"},
+ {"word": "babysplat", "meaning": "Everywhere. Just everywhere", "nsfw": "cocksplat", "nsfwMeaning": "The money shot"},
+ {"word": "baggage", "meaning": "A person you would rather not carry"},
+ {"word": "bampot", "meaning": "An idiot"},
+ {"word": "barnacle", "meaning": "A clingy person"},
+ {"word": "bassa", "meaning": "Bastard"},
+ {"word": "bawbag", "meaning": "An annoying person, a sack"},
+ {"word": "bladder", "meaning": "A bag of urine"},
+ {"word": "boaby", "meaning": "Penis"},
+ {"word": "boar-pig", "meaning": "A pig"},
+ {"word": "bugbear", "meaning": "A hobgoblin bogeyman"},
+ {"word": "bull's pizzle", "meaning": "Pizzle from a bull"},
+ {"word": "bum-ailey", "meaning": "A bad cop"},
+ {"word": "canker blossom", "meaning": "A common person"},
+ {"word": "clack-dish", "meaning": "A beggars bowl"},
+ {"word": "clawbaw", "meaning": "A person who keeps their hands in thier pockets"},
+ {"word": "clotpole", "meaning": "A foolish person"},
+ {"word": "cockwomble", "meaning": "A foolish or obnoxious person"},
+ {"word": "codpiece", "meaning": "A flap of cloth covering one's cod"},
+ {"word": "coxcomb", "meaning": "A dandy, vain and conceited"},
+ {"word": "death-token", "meaning": "A sign of impending death"},
+ {"word": "dewberry", "meaning": "A species of berry"},
+ {"word": "diddy", "meaning": "A tit"},
+ {"word": "dobber", "meaning": "A tool, a member"},
+ {"word": "dog-lover", "meaning": "An individual of low standards", "nsfw": "dog-fucker", "nsfwMeaning": "A classless heel"},
+ {"word": "doiley", "meaning": "A foolish old person"},
+ {"word": "dorkweed", "meaning": "Not a swearword", "nsfw": "dickweed"},
+ {"word": "dottard", "meaning": "A decript senior as identified by the Leader of North Korea"},
+ {"word": "doughnut", "meaning": "A person with a hole in their head, witless"},
+ {"word": "eejit", "meaning": "An idiot"},
+ {"word": "fannybaws", "meaning": "A twat"},
+ {"word": "flap-dragon", "meaning": "A raisin floating in a lit glass of rum"},
+ {"word": "flax-wench", "meaning": "A prostitute"},
+ {"word": "flirt gill", "meaning": "A wanton person"},
+ {"word": "foot-licker", "meaning": "A syncophant"},
+ {"word": "fud", "meaning": "Female genitalia, but more likely a person who does blindingly stupid things"},
+ {"word": "fudge-nugget", "meaning": "Mmmm. Fudge", "nsfw": "fucknugget", "nsfwMeaning": "The consequences of sex"},
+ {"word": "fustilarian", "meaning": "A scoundrel, but not a space smuggler"},
+ {"word": "geek", "meaning": "Not athletic, a programmer"},
+ {"word": "gibbon", "meaning": "A monkey", "nsfw": "shit-gibbon", "nsfwMeaning": "A monkey who flings shit"},
+ {"word": "giglet", "meaning": "A lascivious girl"},
+ {"word": "gobshite", "meaning": "A natterer, one who doesn't know how to shut"},
+ {"word": "gowk", "meaning": "An awkward or foolish person"},
+ {"word": "gudgeon", "meaning": "A foolish person, gullible"},
+ {"word": "haggard", "meaning": "A worn out person"},
+ {"word": "harpy", "meaning": "Virginia Woolf"},
+ {"word": "hedge-pig", "meaning": "Hedgehog, prickly"},
+ {"word": "horn-beast", "meaning": "Easily enraged, bestial"},
+ {"word": "hugger mugger", "meaning": "A pretender"},
+ {"word": "jazztrumpet", "meaning": "Not Miles Davis", "nsfw": "jizztrumpet", "nsfwMeaning": "Someone who plays a trumpet of jizz"},
+ {"word": "jobby", "meaning": "Feces, junk"},
+ {"word": "joithead", "meaning": "A hothead"},
+ {"word": "lewdster", "meaning": "A lecher, a lewd person"},
+ {"word": "lickspittle", "meaning": "A weak-willed flatterer"},
+ {"word": "lout", "meaning": "An uncouth, aggressive man"},
+ {"word": "maggot-pie", "meaning": "A pie of maggots"},
+ {"word": "malt-worm", "meaning": "A drunkard"},
+ {"word": "mammet", "meaning": "A scarecrow"},
+ {"word": "measle", "meaning": "A leper"},
+ {"word": "midden", "meaning": "A trash heap, a dung hill"},
+ {"word": "minnow", "meaning": "A small fish in a big pond"},
+ {"word": "miscreant", "meaning": "A wicked, sinful person"},
+ {"word": "moldwarp", "meaning": "A mud thrower, a politician"},
+ {"word": "moron", "meaning": "Intentionally ignorant"},
+ {"word": "mumble-news", "meaning": "A gossiper, a tattler"},
+ {"word": "nimrod", "meaning": "A mighty hunter. Not what you expected, is it?"},
+ {"word": "numpty", "meaning": "A stupid, useless person"},
+ {"word": "nut-hook", "meaning": "A constable, an officer"},
+ {"word": "nyaff", "meaning": "A stupid, irritating person"},
+ {"word": "pervert", "meaning": "Deviant sexual standards"},
+ {"word": "pigeon-egg", "meaning": "A small useless thing"},
+ {"word": "pignut", "meaning": "An ugly tuber"},
+ {"word": "plamf", "meaning": "An underwear sniffer"},
+ {"word": "plum", "meaning": "A person who says or does stupid things"},
+ {"word": "pumpion", "meaning": "A person who makes a fool of themselves"},
+ {"word": "puttock", "meaning": "A greedy, rapacious person"},
+ {"word": "ratsbane", "meaning": "Rat poisioner"},
+ {"word": "roaster", "meaning": "A person who makes a fool of themselves"},
+ {"word": "rocket", "meaning": "An idiot"},
+ {"word": "scunner", "meaning": "Disgusting, unlikeable"},
+ {"word": "scut", "meaning": "A foolish or contemptible person"},
+ {"word": "skainsmate", "meaning": "A shipboard companion"},
+ {"word": "strumpet", "meaning": "A promiscuous person, a prostitute"},
+ {"word": "thundercat", "meaning": "A cartoon from the 70's", "nsfw": "thundercunt", "nsfwMeaning": "Queefing genitalia"},
+ {"word": "tube", "meaning": "The cave where you conquer the fear"},
+ {"word": "turd-tobogganist", "meaning": "A person who likes to create discord", "nsfw": "shit-tobogganist", "nsfwMeaning": "A person who creates chaos just because they fucking love it"},
+ {"word": "twally-washer", "meaning": "Someone who cleans twallies orally"},
+ {"word": "twit", "meaning": "A annoying, stupid person. Oliver St. John-Mollusc"},
+ {"word": "twonk", "meaning": "A stupid person"},
+ {"word": "varlot", "meaning": "A punk"},
+ {"word": "vassal", "meaning": "A subordinant, servile"},
+ {"word": "wagtail", "meaning": "A syncophant"},
+ {"word": "walloper", "meaning": "A male member"},
+ {"word": "whalluper", "meaning": "A male member"},
+ {"word": "whey-face", "meaning": "Pale of face, sickly"}
+ ]
+}
diff --git a/interject/Interject!/.Products.plist.icloud b/interject/Interject!/.Products.plist.icloud
new file mode 100644
index 0000000..3ad0ef8
Binary files /dev/null and b/interject/Interject!/.Products.plist.icloud differ
diff --git a/interject/Interject!/.adjective.strings.icloud b/interject/Interject!/.adjective.strings.icloud
new file mode 100644
index 0000000..d58c29e
Binary files /dev/null and b/interject/Interject!/.adjective.strings.icloud differ
diff --git a/interject/Interject!/Interject!.entitlements b/interject/Interject!/Interject!.entitlements
new file mode 100644
index 0000000..b592a66
--- /dev/null
+++ b/interject/Interject!/Interject!.entitlements
@@ -0,0 +1,10 @@
+
+
+
+
+ com.apple.security.application-groups
+
+ group.us.hinnen.Interject-
+
+
+