@marktiderman/genesis-support 0.0.0-stage → 0.2.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.
package/package.json CHANGED
@@ -1,6 +1,255 @@
1
1
  {
2
2
  "name": "@marktiderman/genesis-support",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "version": "0.2.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "description": "Support and feedback for Genesis apps, in the app's own Supabase: a feedback record (bug, idea, question, praise) with the app's context and screenshots, collector and sink seams with a Supabase sink, a web feedback panel and launcher, a native feedback screen with screenshot capture, annotation and shake to report, the person's reports with staff replies, and an idea board with votes and \"you asked, we shipped\". Declared as a defineBlock block. Part of the Genesis framework.",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/marktiderman/genesis.git",
11
+ "directory": "packages/support"
12
+ },
13
+ "license": "MIT",
14
+ "publishConfig": {
15
+ "access": "public",
16
+ "provenance": false
17
+ },
18
+ "main": "./dist/index.js",
19
+ "module": "./dist/index.js",
20
+ "types": "./dist/index.d.ts",
21
+ "exports": {
22
+ "./package.json": "./package.json",
23
+ ".": {
24
+ "types": "./dist/index.d.ts",
25
+ "import": "./dist/index.js"
26
+ },
27
+ "./web": {
28
+ "types": "./dist/web.d.ts",
29
+ "import": "./dist/web.js"
30
+ },
31
+ "./native": {
32
+ "types": "./dist/native.d.ts",
33
+ "import": "./dist/native.js"
34
+ }
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "README.md"
39
+ ],
40
+ "dependencies": {
41
+ "@marktiderman/genesis-features": "^0.3.0"
42
+ },
43
+ "peerDependencies": {
44
+ "@marktiderman/genesis-native": ">=0.1.0 <1.0.0",
45
+ "@marktiderman/genesis-ui": "^2.13.0",
46
+ "@marktiderman/genesis-ui-native": "^2.3.0",
47
+ "@supabase/supabase-js": "^2.118.0",
48
+ "@tanstack/react-query": "^5.0.0",
49
+ "react": "^19.0.0",
50
+ "react-dom": "^19.0.0",
51
+ "react-native": ">=0.76.0",
52
+ "react-native-safe-area-context": ">=4.0.0"
53
+ },
54
+ "peerDependenciesMeta": {
55
+ "@marktiderman/genesis-native": {
56
+ "optional": true
57
+ },
58
+ "@marktiderman/genesis-ui": {
59
+ "optional": true
60
+ },
61
+ "@marktiderman/genesis-ui-native": {
62
+ "optional": true
63
+ },
64
+ "@tanstack/react-query": {
65
+ "optional": true
66
+ },
67
+ "react": {
68
+ "optional": true
69
+ },
70
+ "react-dom": {
71
+ "optional": true
72
+ },
73
+ "react-native": {
74
+ "optional": true
75
+ },
76
+ "react-native-safe-area-context": {
77
+ "optional": true
78
+ },
79
+ "react-native-view-shot": {
80
+ "optional": true
81
+ },
82
+ "expo-sensors": {
83
+ "optional": true
84
+ }
85
+ },
86
+ "devDependencies": {
87
+ "@marktiderman/genesis-native": "^0.3.0",
88
+ "@marktiderman/genesis-ui": "^2.13.0",
89
+ "@marktiderman/genesis-ui-native": "^2.3.0",
90
+ "@supabase/supabase-js": "^2.118.0",
91
+ "@tanstack/react-query": "^5.75.0",
92
+ "@testing-library/react": "^16.3.2",
93
+ "@types/react": "^19.2.14",
94
+ "@types/react-dom": "^19.2.3",
95
+ "happy-dom": "^20.9.0",
96
+ "react": "^19.2.5",
97
+ "react-dom": "^19.2.5",
98
+ "tsup": "^8.3.0",
99
+ "typescript": "~6.0.3",
100
+ "vitest": "^4.1.12"
101
+ },
102
+ "genesis": {
103
+ "blocks": {
104
+ "support-feedback": {
105
+ "feature": {
106
+ "name": "Support and feedback",
107
+ "summary": "Send feedback with a marked-up screenshot (shake to report on native), read staff replies, and vote on an idea board, in the app's own Supabase.",
108
+ "keywords": [
109
+ "feedback",
110
+ "bug report",
111
+ "screenshot",
112
+ "shake to report",
113
+ "idea board",
114
+ "votes",
115
+ "help"
116
+ ],
117
+ "audience": [
118
+ "person"
119
+ ]
120
+ },
121
+ "requires": [
122
+ "account"
123
+ ],
124
+ "platforms": [
125
+ "web",
126
+ "native"
127
+ ],
128
+ "packages": [
129
+ "@marktiderman/genesis-support",
130
+ "@marktiderman/genesis-supabase"
131
+ ],
132
+ "install": [
133
+ "@supabase/supabase-js@^2.118.0"
134
+ ],
135
+ "migrations": [
136
+ {
137
+ "package": "@marktiderman/genesis-supabase",
138
+ "file": "migrations/0006_genesis_support.sql",
139
+ "test": "migrations/tests/0006_genesis_support.test.sql"
140
+ }
141
+ ],
142
+ "functions": [
143
+ {
144
+ "package": "@marktiderman/genesis-supabase",
145
+ "dir": "functions/genesis-support-cleanup",
146
+ "verifyJwt": false,
147
+ "secrets": [
148
+ "GENESIS_SUPPORT_CLEANUP_SECRET"
149
+ ]
150
+ },
151
+ {
152
+ "package": "@marktiderman/genesis-supabase",
153
+ "dir": "functions/genesis-support-notify",
154
+ "verifyJwt": false,
155
+ "secrets": [
156
+ "GENESIS_SUPPORT_WEBHOOK_SECRET",
157
+ "GITHUB_TOKEN",
158
+ "GITHUB_REPO",
159
+ "SUPPORT_WEBHOOK_URL",
160
+ "SUPPORT_WEBHOOK_SIGNING_SECRET"
161
+ ]
162
+ }
163
+ ],
164
+ "routes": [
165
+ {
166
+ "path": "/settings/support",
167
+ "description": "Help: the person's reports and staff replies",
168
+ "signedIn": true
169
+ },
170
+ {
171
+ "path": "/settings/support/new",
172
+ "description": "Send feedback, with a screenshot",
173
+ "signedIn": true
174
+ },
175
+ {
176
+ "path": "/settings/support/[id]",
177
+ "description": "One report's conversation",
178
+ "signedIn": true
179
+ },
180
+ {
181
+ "path": "/settings/support/ideas",
182
+ "description": "The idea board, with votes",
183
+ "signedIn": true
184
+ },
185
+ {
186
+ "path": "/settings/support/shipped",
187
+ "description": "Ideas the person asked for that shipped",
188
+ "signedIn": true
189
+ }
190
+ ],
191
+ "steps": [
192
+ "npx expo install react-native-view-shot expo-sensors (screenshots and shake to report; both optional).",
193
+ "Create the block with createSupport (@marktiderman/genesis-support/native), pass it to <GenesisNativeApp blocks> with appFeatures [\"account\"], and add the five route files (genesis-support README, Native).",
194
+ "Make someone staff: create private.genesis_support_staff(person uuid) returns boolean in a migration of your own, and revoke execute on it from public, anon, authenticated. Without it nobody is staff.",
195
+ "Optional: deploy genesis-support-cleanup on a schedule to remove deleted screenshots, and genesis-support-notify behind a Database Webhook for a GitHub issue or webhook per report."
196
+ ],
197
+ "privacy": {
198
+ "collects": [
199
+ {
200
+ "type": "user ID",
201
+ "purposes": [
202
+ "app functionality"
203
+ ],
204
+ "linked": true,
205
+ "tracking": false
206
+ },
207
+ {
208
+ "type": "customer support",
209
+ "purposes": [
210
+ "app functionality"
211
+ ],
212
+ "linked": true,
213
+ "tracking": false
214
+ },
215
+ {
216
+ "type": "other user content",
217
+ "purposes": [
218
+ "app functionality"
219
+ ],
220
+ "linked": true,
221
+ "tracking": false
222
+ },
223
+ {
224
+ "type": "photos or videos",
225
+ "purposes": [
226
+ "app functionality"
227
+ ],
228
+ "linked": true,
229
+ "tracking": false
230
+ },
231
+ {
232
+ "type": "other diagnostic data",
233
+ "purposes": [
234
+ "app functionality"
235
+ ],
236
+ "linked": true,
237
+ "tracking": false
238
+ }
239
+ ],
240
+ "notes": [
241
+ "Feedback is sent only when the person taps Send, and a screenshot only when they include it, after they can hide parts of it.",
242
+ "Reports, screenshots and replies are visible to the person and the app's support staff only, and go when the person deletes them or their account.",
243
+ "Feedback includes the app version, the screen's path (never its query string; private-looking segments are replaced), the platform and basic device facts."
244
+ ]
245
+ }
246
+ }
247
+ }
248
+ },
249
+ "scripts": {
250
+ "build": "tsup && node ../../scripts/check-exports-resolve.mjs",
251
+ "clean": "rm -rf dist",
252
+ "test": "vitest run",
253
+ "typecheck": "tsc --noEmit"
254
+ }
6
255
  }