@stacksjs/defaults 0.75.41 → 0.75.43

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.
Files changed (98) hide show
  1. package/ai/skills/stacks-actions/SKILL.md +1 -1
  2. package/ai/skills/stacks-auto-imports/SKILL.md +1 -1
  3. package/ai/skills/stacks-chat/SKILL.md +51 -1
  4. package/ai/skills/stacks-cloud/SKILL.md +36 -0
  5. package/ai/skills/stacks-dashboard/SKILL.md +16 -2
  6. package/ai/skills/stacks-database/SKILL.md +24 -3
  7. package/ai/skills/stacks-deploy/SKILL.md +7 -1
  8. package/ai/skills/stacks-desktop/SKILL.md +10 -0
  9. package/ai/skills/stacks-development/SKILL.md +1 -1
  10. package/ai/skills/stacks-migrations/SKILL.md +2 -2
  11. package/ai/skills/stacks-models/SKILL.md +38 -2
  12. package/ai/skills/stacks-orm/SKILL.md +2 -2
  13. package/ai/skills/stacks-security/SKILL.md +28 -1
  14. package/app/Actions/Auth/DataExportAction.test.ts +84 -0
  15. package/app/Actions/Auth/DataExportAction.ts +40 -0
  16. package/app/Actions/Dashboard/Content/FileReprocessAction.ts +1 -1
  17. package/app/Actions/Dashboard/Content/file-manager.ts +120 -8
  18. package/app/Actions/Dashboard/Content/file-metadata.ts +108 -12
  19. package/app/Actions/Dashboard/Content/file-pipeline.test.ts +13 -9
  20. package/app/Actions/Dashboard/Content/file-preview.test.ts +487 -0
  21. package/app/Actions/Dashboard/Content/file-preview.ts +548 -0
  22. package/app/Jobs/GenerateStoragePreviewJob.ts +47 -0
  23. package/app/Jobs/OptimizeStorageImageJob.ts +7 -3
  24. package/app/Jobs/PruneRetainedDataJob.ts +46 -0
  25. package/app/Models/Activity.ts +2 -0
  26. package/app/Models/CampaignSend.ts +2 -0
  27. package/app/Models/Card.ts +1 -0
  28. package/app/Models/CardComment.ts +1 -0
  29. package/app/Models/Comment.ts +5 -0
  30. package/app/Models/CommunicationSuppression.ts +2 -1
  31. package/app/Models/ConsentEvent.ts +4 -3
  32. package/app/Models/Content/Author.ts +5 -0
  33. package/app/Models/EmailListSubscriber.ts +1 -0
  34. package/app/Models/EmailSuppression.ts +2 -0
  35. package/app/Models/Forms/FormSubmission.ts +5 -0
  36. package/app/Models/GdprRequest.ts +77 -0
  37. package/app/Models/MagicLinkToken.ts +2 -0
  38. package/app/Models/Notification.ts +2 -0
  39. package/app/Models/NotificationDelivery.ts +4 -0
  40. package/app/Models/PaymentMethod.ts +5 -0
  41. package/app/Models/PaymentTransaction.ts +1 -0
  42. package/app/Models/PersonalAccessToken.ts +3 -0
  43. package/app/Models/Referral.ts +4 -1
  44. package/app/Models/ReferralCode.ts +4 -1
  45. package/app/Models/Request.ts +3 -0
  46. package/app/Models/SmsOptOut.ts +2 -0
  47. package/app/Models/SocialAccount.ts +3 -0
  48. package/app/Models/SocialPost.ts +2 -0
  49. package/app/Models/StorageItemTask.ts +14 -8
  50. package/app/Models/Subscriber.ts +2 -0
  51. package/app/Models/SubscriberEmail.ts +2 -0
  52. package/app/Models/Subscription.ts +1 -0
  53. package/app/Models/TeamInvitation.ts +2 -0
  54. package/app/Models/TeamMember.ts +1 -0
  55. package/app/Models/User.ts +5 -0
  56. package/app/Models/commerce/Bid.ts +3 -0
  57. package/app/Models/commerce/Cart.ts +2 -0
  58. package/app/Models/commerce/Courier.ts +7 -0
  59. package/app/Models/commerce/CourierPing.ts +3 -0
  60. package/app/Models/commerce/Customer.ts +5 -0
  61. package/app/Models/commerce/DeliveryStop.ts +7 -0
  62. package/app/Models/commerce/GiftCard.ts +4 -0
  63. package/app/Models/commerce/Order.ts +5 -0
  64. package/app/Models/commerce/OrderItem.ts +2 -0
  65. package/app/Models/commerce/Payment.ts +5 -0
  66. package/app/Models/commerce/Pledge.ts +3 -0
  67. package/app/Models/commerce/Transaction.ts +2 -0
  68. package/app/Models/commerce/WaitlistProduct.ts +5 -0
  69. package/app/Models/commerce/WaitlistRestaurant.ts +4 -0
  70. package/ide/vscode/.vscode/extensions.json +1 -1
  71. package/ide/vscode/.vscode/settings.json +8 -149
  72. package/ide/vscode/README.md +48 -23
  73. package/ide/vscode/build.ts +43 -0
  74. package/ide/vscode/package.json +305 -56
  75. package/ide/vscode/scripts/stx-contributes.ts +66 -0
  76. package/ide/vscode/src/env-file.ts +103 -0
  77. package/ide/vscode/src/env.ts +241 -0
  78. package/ide/vscode/src/extension.ts +120 -26
  79. package/ide/vscode/src/pickier-protocol.ts +51 -0
  80. package/ide/vscode/src/pickier-worker.ts +92 -0
  81. package/ide/vscode/src/pickier.ts +433 -0
  82. package/ide/vscode/src/project.ts +14 -4
  83. package/ide/vscode/src/stacks.ts +18 -11
  84. package/ide/vscode/tests/build.test.ts +58 -0
  85. package/ide/vscode/tests/env.test.ts +166 -0
  86. package/ide/vscode/tests/extension.test.ts +8 -0
  87. package/ide/vscode/tests/fake-vscode.ts +228 -0
  88. package/ide/vscode/tests/manifest.test.ts +88 -0
  89. package/ide/vscode/tests/pickier.test.ts +202 -0
  90. package/ide/vscode/tsconfig.json +2 -2
  91. package/package.json +2 -2
  92. package/resources/components/Dashboard/Content/FileManagerDashboard.stx +2 -0
  93. package/resources/components/Dashboard/FileViewer/MediaCard.stx +14 -3
  94. package/routes/auth.ts +4 -0
  95. package/vcs/github/workflows/buddy-bot.yml +2 -2
  96. package/vcs/github/workflows/ci.yml +3 -3
  97. package/vcs/github/workflows/release.yml +1 -1
  98. package/ide/vscode/src/vscode.d.ts +0 -181
@@ -25,6 +25,7 @@ export default defineModel({
25
25
  ownership: selfOwnership(),
26
26
 
27
27
  traits: {
28
+ gdpr: { erasure: 'anonymize', basis: 'contract', purpose: 'User account and sign-in' },
28
29
  useAuth: {
29
30
  usePasskey: true,
30
31
  },
@@ -72,6 +73,7 @@ export default defineModel({
72
73
 
73
74
  attributes: {
74
75
  name: {
76
+ personal: true,
75
77
  order: 2,
76
78
  fillable: true,
77
79
  validation: {
@@ -86,6 +88,7 @@ export default defineModel({
86
88
  },
87
89
 
88
90
  email: {
91
+ personal: true,
89
92
  unique: true,
90
93
  order: 1,
91
94
  fillable: true,
@@ -100,6 +103,7 @@ export default defineModel({
100
103
  factory: faker => faker.internet.email(),
101
104
  },
102
105
  password: {
106
+ personal: { export: false },
103
107
  order: 3,
104
108
  hidden: true,
105
109
  fillable: true,
@@ -118,6 +122,7 @@ export default defineModel({
118
122
  },
119
123
 
120
124
  avatar: {
125
+ personal: true,
121
126
  order: 4,
122
127
  fillable: true,
123
128
  validation: {
@@ -21,6 +21,7 @@ export default defineModel({
21
21
  autoIncrement: true,
22
22
 
23
23
  traits: {
24
+ gdpr: { subject: { email: 'bidder_email' }, erasure: 'anonymize', basis: 'contract', purpose: 'Auction bids' },
24
25
  useUuid: true,
25
26
  useTimestamps: true,
26
27
 
@@ -54,6 +55,7 @@ export default defineModel({
54
55
 
55
56
  attributes: {
56
57
  bidderName: {
58
+ personal: true,
57
59
  order: 1,
58
60
  fillable: true,
59
61
  validation: {
@@ -66,6 +68,7 @@ export default defineModel({
66
68
  },
67
69
 
68
70
  bidderEmail: {
71
+ personal: true,
69
72
  order: 2,
70
73
  fillable: true,
71
74
  validation: {
@@ -13,6 +13,7 @@ export default defineModel({
13
13
  ownership: customerOwnership(),
14
14
 
15
15
  traits: {
16
+ gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'contract', purpose: 'Shopping cart' },
16
17
  useUuid: true,
17
18
  useTimestamps: true,
18
19
  useSearch: {
@@ -122,6 +123,7 @@ export default defineModel({
122
123
  },
123
124
 
124
125
  notes: {
126
+ personal: true,
125
127
  order: 9,
126
128
  fillable: true,
127
129
  validation: {
@@ -11,6 +11,7 @@ export default defineModel({
11
11
  hasMany: ['DeliveryRoute', 'CourierPing'],
12
12
 
13
13
  traits: {
14
+ gdpr: { erasure: 'anonymize', basis: 'contract', purpose: 'Courier profile and live position for deliveries' },
14
15
  useUuid: true,
15
16
  useTimestamps: true,
16
17
  useSearch: {
@@ -34,6 +35,7 @@ export default defineModel({
34
35
 
35
36
  attributes: {
36
37
  name: {
38
+ personal: true,
37
39
  order: 1,
38
40
  fillable: true,
39
41
  validation: {
@@ -46,6 +48,7 @@ export default defineModel({
46
48
  },
47
49
 
48
50
  phone: {
51
+ personal: true,
49
52
  order: 2,
50
53
  fillable: true,
51
54
  validation: {
@@ -58,6 +61,7 @@ export default defineModel({
58
61
  },
59
62
 
60
63
  vehicleNumber: {
64
+ personal: true,
61
65
  order: 3,
62
66
  fillable: true,
63
67
  validation: {
@@ -70,6 +74,7 @@ export default defineModel({
70
74
  },
71
75
 
72
76
  license: {
77
+ personal: true,
73
78
  order: 4,
74
79
  fillable: true,
75
80
  validation: {
@@ -101,6 +106,7 @@ export default defineModel({
101
106
  * the history; these three columns are the present.
102
107
  */
103
108
  latitude: {
109
+ personal: true,
104
110
  order: 6,
105
111
  fillable: true,
106
112
  validation: {
@@ -114,6 +120,7 @@ export default defineModel({
114
120
  },
115
121
 
116
122
  longitude: {
123
+ personal: true,
117
124
  order: 7,
118
125
  fillable: true,
119
126
  validation: {
@@ -22,6 +22,7 @@ export default defineModel({
22
22
  autoIncrement: true,
23
23
 
24
24
  traits: {
25
+ gdpr: { subject: { via: 'Courier' }, erasure: 'delete', basis: 'contract', purpose: 'Courier location history' },
25
26
  useUuid: true,
26
27
  useTimestamps: true,
27
28
  useSeeder: { count: 0 },
@@ -31,6 +32,7 @@ export default defineModel({
31
32
 
32
33
  attributes: {
33
34
  latitude: {
35
+ personal: true,
34
36
  order: 1,
35
37
  required: true,
36
38
  fillable: true,
@@ -45,6 +47,7 @@ export default defineModel({
45
47
  },
46
48
 
47
49
  longitude: {
50
+ personal: true,
48
51
  order: 2,
49
52
  required: true,
50
53
  fillable: true,
@@ -9,6 +9,7 @@ export default defineModel({
9
9
  autoIncrement: true,
10
10
 
11
11
  traits: {
12
+ gdpr: { erasure: 'anonymize', basis: 'contract', purpose: 'Customer record behind orders and payments' },
12
13
  useUuid: true,
13
14
  useTimestamps: true,
14
15
  useSearch: {
@@ -35,6 +36,7 @@ export default defineModel({
35
36
 
36
37
  attributes: {
37
38
  name: {
39
+ personal: true,
38
40
  order: 1,
39
41
  fillable: true,
40
42
  validation: {
@@ -48,6 +50,7 @@ export default defineModel({
48
50
  },
49
51
 
50
52
  email: {
53
+ personal: true,
51
54
  unique: true,
52
55
  order: 2,
53
56
  fillable: true,
@@ -61,6 +64,7 @@ export default defineModel({
61
64
  },
62
65
 
63
66
  phone: {
67
+ personal: true,
64
68
  order: 3,
65
69
  fillable: true,
66
70
  validation: {
@@ -109,6 +113,7 @@ export default defineModel({
109
113
  },
110
114
 
111
115
  avatar: {
116
+ personal: true,
112
117
  order: 8,
113
118
  fillable: true,
114
119
  validation: {
@@ -24,6 +24,7 @@ export default defineModel({
24
24
  ownership: parentOwnership('Order', 'order_id'),
25
25
 
26
26
  traits: {
27
+ gdpr: { subject: { via: 'Order' }, erasure: 'anonymize', basis: 'contract', purpose: 'Delivering an order' },
27
28
  useUuid: true,
28
29
  useTimestamps: true,
29
30
 
@@ -78,6 +79,7 @@ export default defineModel({
78
79
  },
79
80
 
80
81
  address: {
82
+ personal: true,
81
83
  order: 3,
82
84
  required: true,
83
85
  fillable: true,
@@ -91,6 +93,7 @@ export default defineModel({
91
93
  * complete; it just cannot be drawn.
92
94
  */
93
95
  latitude: {
96
+ personal: true,
94
97
  order: 4,
95
98
  fillable: true,
96
99
  validation: { rule: schema.number().min(-90).max(90) },
@@ -98,6 +101,7 @@ export default defineModel({
98
101
  },
99
102
 
100
103
  longitude: {
104
+ personal: true,
101
105
  order: 5,
102
106
  fillable: true,
103
107
  validation: { rule: schema.number().min(-180).max(180) },
@@ -105,6 +109,7 @@ export default defineModel({
105
109
  },
106
110
 
107
111
  recipientName: {
112
+ personal: true,
108
113
  order: 6,
109
114
  fillable: true,
110
115
  validation: { rule: schema.string().max(255) },
@@ -112,6 +117,7 @@ export default defineModel({
112
117
  },
113
118
 
114
119
  recipientPhone: {
120
+ personal: true,
115
121
  order: 7,
116
122
  fillable: true,
117
123
  validation: { rule: schema.string().max(40) },
@@ -158,6 +164,7 @@ export default defineModel({
158
164
 
159
165
  /** Why a stop failed, or anything the courier needs to record. */
160
166
  notes: {
167
+ personal: true,
161
168
  order: 12,
162
169
  fillable: true,
163
170
  validation: { rule: schema.string().max(1000) },
@@ -13,6 +13,7 @@ export default defineModel({
13
13
  ownership: customerOwnership(),
14
14
 
15
15
  traits: {
16
+ gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'contract', purpose: 'Gift cards bought by the customer' },
16
17
  useUuid: true,
17
18
  useTimestamps: true,
18
19
  useSearch: {
@@ -101,6 +102,7 @@ export default defineModel({
101
102
  },
102
103
 
103
104
  recipient_email: {
105
+ personal: true,
104
106
  order: 7,
105
107
  fillable: true,
106
108
  validation: {
@@ -110,6 +112,7 @@ export default defineModel({
110
112
  },
111
113
 
112
114
  recipientName: {
115
+ personal: true,
113
116
  order: 8,
114
117
  fillable: true,
115
118
  validation: {
@@ -119,6 +122,7 @@ export default defineModel({
119
122
  },
120
123
 
121
124
  personalMessage: {
125
+ personal: true,
122
126
  order: 9,
123
127
  fillable: true,
124
128
  validation: {
@@ -13,6 +13,7 @@ export default defineModel({
13
13
  ownership: customerOwnership(),
14
14
 
15
15
  traits: {
16
+ gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Order fulfilment, kept for tax and accounting' },
16
17
  useUuid: true,
17
18
  useTimestamps: true,
18
19
  useSearch: {
@@ -128,6 +129,7 @@ export default defineModel({
128
129
  },
129
130
 
130
131
  deliveryAddress: {
132
+ personal: true,
131
133
  order: 10,
132
134
  fillable: true,
133
135
  validation: {
@@ -137,6 +139,7 @@ export default defineModel({
137
139
  },
138
140
 
139
141
  specialInstructions: {
142
+ personal: true,
140
143
  order: 11,
141
144
  fillable: true,
142
145
  validation: {
@@ -175,6 +178,7 @@ export default defineModel({
175
178
 
176
179
  /** Geocoded delivery destination, so the map has somewhere to point. */
177
180
  deliveryLatitude: {
181
+ personal: true,
178
182
  order: 14,
179
183
  fillable: true,
180
184
  validation: { rule: schema.number().min(-90).max(90) },
@@ -182,6 +186,7 @@ export default defineModel({
182
186
  },
183
187
 
184
188
  deliveryLongitude: {
189
+ personal: true,
185
190
  order: 15,
186
191
  fillable: true,
187
192
  validation: { rule: schema.number().min(-180).max(180) },
@@ -8,6 +8,7 @@ export default defineModel({
8
8
  autoIncrement: true,
9
9
 
10
10
  traits: {
11
+ gdpr: { subject: { via: 'Order' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Order lines, kept for tax and accounting' },
11
12
  useTimestamps: true,
12
13
  },
13
14
 
@@ -41,6 +42,7 @@ export default defineModel({
41
42
  },
42
43
 
43
44
  special_instructions: {
45
+ personal: true,
44
46
  order: 5,
45
47
  fillable: true,
46
48
  validation: {
@@ -13,6 +13,7 @@ export default defineModel({
13
13
  ownership: customerOwnership(),
14
14
 
15
15
  traits: {
16
+ gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Payment records, kept for tax and accounting' },
16
17
  useUuid: true,
17
18
  useTimestamps: true,
18
19
  useSearch: {
@@ -116,6 +117,7 @@ export default defineModel({
116
117
  },
117
118
 
118
119
  cardLastFour: {
120
+ personal: true,
119
121
  order: 9,
120
122
  fillable: true,
121
123
  validation: {
@@ -125,6 +127,7 @@ export default defineModel({
125
127
  },
126
128
 
127
129
  cardBrand: {
130
+ personal: true,
128
131
  order: 10,
129
132
  fillable: true,
130
133
  validation: {
@@ -134,6 +137,7 @@ export default defineModel({
134
137
  },
135
138
 
136
139
  billingEmail: {
140
+ personal: true,
137
141
  order: 11,
138
142
  fillable: true,
139
143
  validation: {
@@ -172,6 +176,7 @@ export default defineModel({
172
176
  },
173
177
 
174
178
  notes: {
179
+ personal: true,
175
180
  order: 15,
176
181
  fillable: true,
177
182
  validation: {
@@ -16,6 +16,7 @@ export default defineModel({
16
16
  autoIncrement: true,
17
17
 
18
18
  traits: {
19
+ gdpr: { subject: { via: 'Customer' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Donation pledges, kept for receipts' },
19
20
  useUuid: true,
20
21
  useTimestamps: true,
21
22
 
@@ -50,6 +51,7 @@ export default defineModel({
50
51
 
51
52
  attributes: {
52
53
  donorName: {
54
+ personal: true,
53
55
  order: 1,
54
56
  fillable: true,
55
57
  validation: {
@@ -62,6 +64,7 @@ export default defineModel({
62
64
  },
63
65
 
64
66
  donorEmail: {
67
+ personal: true,
65
68
  order: 2,
66
69
  fillable: true,
67
70
  validation: {
@@ -13,6 +13,7 @@ export default defineModel({
13
13
  ownership: parentOwnership('Order', 'order_id'),
14
14
 
15
15
  traits: {
16
+ gdpr: { subject: { via: 'Order' }, erasure: 'anonymize', basis: 'legal_obligation', purpose: 'Payment transactions, kept for tax and accounting' },
16
17
  useUuid: true,
17
18
  useTimestamps: true,
18
19
  useSearch: {
@@ -66,6 +67,7 @@ export default defineModel({
66
67
  },
67
68
 
68
69
  paymentDetails: {
70
+ personal: true,
69
71
  order: 5,
70
72
  fillable: true,
71
73
  hidden: true,
@@ -13,6 +13,7 @@ export default defineModel({
13
13
  ownership: customerOwnership(),
14
14
 
15
15
  traits: {
16
+ gdpr: { subject: { via: 'Customer' }, erasure: 'delete', basis: 'consent', purpose: 'Back-in-stock waitlist' },
16
17
  useUuid: true,
17
18
  useTimestamps: true,
18
19
  useSearch: {
@@ -37,6 +38,7 @@ export default defineModel({
37
38
 
38
39
  attributes: {
39
40
  name: {
41
+ personal: true,
40
42
  order: 1,
41
43
  fillable: true,
42
44
  validation: {
@@ -49,6 +51,7 @@ export default defineModel({
49
51
  },
50
52
 
51
53
  email: {
54
+ personal: true,
52
55
  order: 2,
53
56
  fillable: true,
54
57
  validation: {
@@ -61,6 +64,7 @@ export default defineModel({
61
64
  },
62
65
 
63
66
  phone: {
67
+ personal: true,
64
68
  order: 3,
65
69
  fillable: true,
66
70
  validation: {
@@ -106,6 +110,7 @@ export default defineModel({
106
110
  },
107
111
 
108
112
  notes: {
113
+ personal: true,
109
114
  order: 7,
110
115
  fillable: true,
111
116
  validation: {
@@ -13,6 +13,7 @@ export default defineModel({
13
13
  ownership: customerOwnership(),
14
14
 
15
15
  traits: {
16
+ gdpr: { subject: { via: 'Customer' }, erasure: 'delete', basis: 'contract', purpose: 'Restaurant waitlist' },
16
17
  useUuid: true,
17
18
  useTimestamps: true,
18
19
  useSearch: {
@@ -37,6 +38,7 @@ export default defineModel({
37
38
 
38
39
  attributes: {
39
40
  name: {
41
+ personal: true,
40
42
  order: 1,
41
43
  fillable: true,
42
44
  validation: {
@@ -49,6 +51,7 @@ export default defineModel({
49
51
  },
50
52
 
51
53
  email: {
54
+ personal: true,
52
55
  order: 2,
53
56
  fillable: true,
54
57
  validation: {
@@ -61,6 +64,7 @@ export default defineModel({
61
64
  },
62
65
 
63
66
  phone: {
67
+ personal: true,
64
68
  order: 3,
65
69
  fillable: true,
66
70
  validation: {
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "recommendations": [
3
- "stacks.vscode-stacks"
3
+ "Stacks.vscode-stacks"
4
4
  ]
5
5
  }
@@ -1,137 +1,23 @@
1
1
  {
2
- // Disable the default formatter, use eslint instead
3
- "prettier.enable": false,
4
- "biome.enabled": false,
2
+ // Pickier lints and formats Stacks projects, built into the Stacks extension
3
+ // (Stacks.vscode-stacks) - the same pickier and config `./buddy lint` uses.
4
+ "editor.defaultFormatter": "Stacks.vscode-stacks",
5
5
  "editor.formatOnSave": false,
6
- // Auto fix
7
6
  "editor.codeActionsOnSave": {
8
- "source.fixAll.eslint": "explicit",
7
+ "source.fixAll.pickier": "explicit",
9
8
  "source.organizeImports": "never"
10
9
  },
11
- // Silent the stylistic rules in you IDE, but still auto fix them
12
- "eslint.rules.customizations": [
13
- {
14
- "rule": "style/*",
15
- "severity": "off",
16
- "fixable": true
17
- },
18
- {
19
- "rule": "format/*",
20
- "severity": "off",
21
- "fixable": true
22
- },
23
- {
24
- "rule": "*-indent",
25
- "severity": "off",
26
- "fixable": true
27
- },
28
- {
29
- "rule": "*-spacing",
30
- "severity": "off",
31
- "fixable": true
32
- },
33
- {
34
- "rule": "*-spaces",
35
- "severity": "off",
36
- "fixable": true
37
- },
38
- {
39
- "rule": "*-order",
40
- "severity": "off",
41
- "fixable": true
42
- },
43
- {
44
- "rule": "*-dangle",
45
- "severity": "off",
46
- "fixable": true
47
- },
48
- {
49
- "rule": "*-newline",
50
- "severity": "off",
51
- "fixable": true
52
- },
53
- {
54
- "rule": "*quotes",
55
- "severity": "off",
56
- "fixable": true
57
- },
58
- {
59
- "rule": "*semi",
60
- "severity": "off",
61
- "fixable": true
62
- }
63
- ],
64
- // Enable eslint for all supported languages
65
- "eslint.validate": [
66
- "javascript",
67
- "typescript",
68
- "html",
69
- "html",
70
- "markdown",
71
- "json",
72
- "jsonc",
73
- "yaml",
74
- "toml",
75
- "xml",
76
- "gql",
77
- "graphql",
78
- "css",
79
- "less",
80
- "scss",
81
- "pcss",
82
- "postcss"
83
- ],
84
- "[stx]": {
85
- "editor.defaultFormatter": "dbaeumer.vscode-eslint"
86
- },
87
10
  // TypeScript
88
11
  "typescript.tsdk": "${workspaceFolder}/node_modules/typescript/lib",
89
- // Shell
90
- "[shellscript]": {
91
- "editor.defaultFormatter": "foxundermoon.shell-format"
92
- },
93
- // Markdown
94
- "[markdown]": {
95
- "editor.defaultFormatter": "DavidAnson.vscode-markdownlint",
96
- "editor.formatOnSave": true
97
- },
98
- "[dockerfile]": {
99
- "editor.defaultFormatter": "foxundermoon.shell-format"
100
- },
101
- "markdownlint.config": {
102
- "default": false,
103
- // "MD033": {
104
- // "allowed_elements": [
105
- // "h3",
106
- // "div",
107
- // "details",
108
- // "summary",
109
- // "VPTeamPage",
110
- // "VPTeamPageTitle",
111
- // "VPTeamMembers",
112
- // "script"
113
- // ]
114
- // },
115
- "MD041": false
116
- },
117
- // Stacks
118
12
  "typescript.preferGoToSourceDefinition": true,
13
+ // `.stx` files get the `stx` language from the Stacks extension. Mapping
14
+ // them to `html` here would override it.
119
15
  "files.associations": {
120
- "buddy": "shellscript",
121
- "*.stx": "html"
16
+ "buddy": "shellscript"
122
17
  },
123
18
  "editor.quickSuggestions": {
124
19
  "strings": true
125
20
  },
126
- "vsicons.associations.files": [
127
- {
128
- "icon": "${workspaceFolder}/public/favicon.svg",
129
- "extensions": [
130
- "stx"
131
- ],
132
- "format": "svg"
133
- }
134
- ],
135
21
  "git.enableSmartCommit": true,
136
22
  "npm.enableRunFromFolder": true,
137
23
  "npm.packageManager": "bun",
@@ -145,32 +31,5 @@
145
31
  "CHANGELOG.md": true
146
32
  },
147
33
  "explorer.confirmDragAndDrop": false,
148
- "todo-tree.highlights.enabled": true,
149
- "cSpell.ignorePaths": [
150
- "cdk.out",
151
- "node_modules",
152
- "lang/de.yml"
153
- ],
154
- "cSpell.dictionaries": [
155
- "stacks-dictionary"
156
- ],
157
- "cSpell.diagnosticLevel": "Hint",
158
- "cSpell.customDictionaries": {
159
- "stacks": {
160
- "name": "stacks-dictionary",
161
- "path": "./storage/framework/defaults/ide/dictionary.txt",
162
- "scope": "user",
163
- "addWords": true
164
- },
165
- "custom": true // enable the `custom` dictionary
166
- },
167
- "terminal.integrated.scrollback": 10000,
168
- "grammarly.files.include": [
169
- "**/README.md",
170
- "**/readme.md",
171
- "**/*.txt"
172
- ],
173
- "grammarly.files.exclude": [
174
- "**/dictionary.txt"
175
- ],
34
+ "terminal.integrated.scrollback": 10000
176
35
  }