@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/LICENSE +21 -0
- package/README.md +130 -2
- package/dist/block-fZjTS2sY.d.ts +39 -0
- package/dist/chunk-4VFYVQUF.js +278 -0
- package/dist/chunk-4VFYVQUF.js.map +1 -0
- package/dist/chunk-ZV4KJBUF.js +284 -0
- package/dist/chunk-ZV4KJBUF.js.map +1 -0
- package/dist/copy-CuTArBFg.d.ts +477 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/native.d.ts +207 -0
- package/dist/native.js +722 -0
- package/dist/native.js.map +1 -0
- package/dist/web.d.ts +137 -0
- package/dist/web.js +484 -0
- package/dist/web.js.map +1 -0
- package/package.json +252 -3
package/package.json
CHANGED
|
@@ -1,6 +1,255 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@marktiderman/genesis-support",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
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
|
}
|