@epic-web/workshop-presence 6.48.2 → 6.49.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.
@@ -38,6 +38,26 @@ export declare const LocationSchema: z.ZodObject<{
38
38
  } | null | undefined;
39
39
  }>;
40
40
  export type Location = z.infer<typeof LocationSchema>;
41
+ export declare const RepoStatusSchema: z.ZodObject<{
42
+ updatesAvailable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
43
+ commitsAhead: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
44
+ commitsBehind: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
45
+ localCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ remoteCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
47
+ }, "strip", z.ZodTypeAny, {
48
+ updatesAvailable?: boolean | null | undefined;
49
+ commitsAhead?: number | null | undefined;
50
+ commitsBehind?: number | null | undefined;
51
+ localCommit?: string | null | undefined;
52
+ remoteCommit?: string | null | undefined;
53
+ }, {
54
+ updatesAvailable?: boolean | null | undefined;
55
+ commitsAhead?: number | null | undefined;
56
+ commitsBehind?: number | null | undefined;
57
+ localCommit?: string | null | undefined;
58
+ remoteCommit?: string | null | undefined;
59
+ }>;
60
+ export type RepoStatus = z.infer<typeof RepoStatusSchema>;
41
61
  export declare const UserSchema: z.ZodObject<{
42
62
  id: z.ZodString;
43
63
  hasAccess: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
@@ -119,6 +139,26 @@ export declare const UserSchema: z.ZodObject<{
119
139
  stepNumber?: number | null | undefined;
120
140
  } | null | undefined;
121
141
  }>, "many">>>;
142
+ epicshopVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
143
+ repoStatus: z.ZodOptional<z.ZodNullable<z.ZodObject<{
144
+ updatesAvailable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
145
+ commitsAhead: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
146
+ commitsBehind: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
147
+ localCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
148
+ remoteCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
149
+ }, "strip", z.ZodTypeAny, {
150
+ updatesAvailable?: boolean | null | undefined;
151
+ commitsAhead?: number | null | undefined;
152
+ commitsBehind?: number | null | undefined;
153
+ localCommit?: string | null | undefined;
154
+ remoteCommit?: string | null | undefined;
155
+ }, {
156
+ updatesAvailable?: boolean | null | undefined;
157
+ commitsAhead?: number | null | undefined;
158
+ commitsBehind?: number | null | undefined;
159
+ localCommit?: string | null | undefined;
160
+ remoteCommit?: string | null | undefined;
161
+ }>>>;
122
162
  }, "strip", z.ZodTypeAny, {
123
163
  id: string;
124
164
  hasAccess?: boolean | null | undefined;
@@ -148,6 +188,14 @@ export declare const UserSchema: z.ZodObject<{
148
188
  stepNumber?: number | null | undefined;
149
189
  } | null | undefined;
150
190
  }[] | null | undefined;
191
+ epicshopVersion?: string | null | undefined;
192
+ repoStatus?: {
193
+ updatesAvailable?: boolean | null | undefined;
194
+ commitsAhead?: number | null | undefined;
195
+ commitsBehind?: number | null | undefined;
196
+ localCommit?: string | null | undefined;
197
+ remoteCommit?: string | null | undefined;
198
+ } | null | undefined;
151
199
  }, {
152
200
  id: string;
153
201
  hasAccess?: boolean | null | undefined;
@@ -177,6 +225,14 @@ export declare const UserSchema: z.ZodObject<{
177
225
  stepNumber?: number | null | undefined;
178
226
  } | null | undefined;
179
227
  }[] | null | undefined;
228
+ epicshopVersion?: string | null | undefined;
229
+ repoStatus?: {
230
+ updatesAvailable?: boolean | null | undefined;
231
+ commitsAhead?: number | null | undefined;
232
+ commitsBehind?: number | null | undefined;
233
+ localCommit?: string | null | undefined;
234
+ remoteCommit?: string | null | undefined;
235
+ } | null | undefined;
180
236
  }>;
181
237
  export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
182
238
  type: z.ZodLiteral<"remove-user">;
@@ -280,6 +336,26 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
280
336
  stepNumber?: number | null | undefined;
281
337
  } | null | undefined;
282
338
  }>, "many">>>;
339
+ epicshopVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
340
+ repoStatus: z.ZodOptional<z.ZodNullable<z.ZodObject<{
341
+ updatesAvailable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
342
+ commitsAhead: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
343
+ commitsBehind: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
344
+ localCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
345
+ remoteCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
346
+ }, "strip", z.ZodTypeAny, {
347
+ updatesAvailable?: boolean | null | undefined;
348
+ commitsAhead?: number | null | undefined;
349
+ commitsBehind?: number | null | undefined;
350
+ localCommit?: string | null | undefined;
351
+ remoteCommit?: string | null | undefined;
352
+ }, {
353
+ updatesAvailable?: boolean | null | undefined;
354
+ commitsAhead?: number | null | undefined;
355
+ commitsBehind?: number | null | undefined;
356
+ localCommit?: string | null | undefined;
357
+ remoteCommit?: string | null | undefined;
358
+ }>>>;
283
359
  }, "strip", z.ZodTypeAny, {
284
360
  id: string;
285
361
  hasAccess?: boolean | null | undefined;
@@ -309,6 +385,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
309
385
  stepNumber?: number | null | undefined;
310
386
  } | null | undefined;
311
387
  }[] | null | undefined;
388
+ epicshopVersion?: string | null | undefined;
389
+ repoStatus?: {
390
+ updatesAvailable?: boolean | null | undefined;
391
+ commitsAhead?: number | null | undefined;
392
+ commitsBehind?: number | null | undefined;
393
+ localCommit?: string | null | undefined;
394
+ remoteCommit?: string | null | undefined;
395
+ } | null | undefined;
312
396
  }, {
313
397
  id: string;
314
398
  hasAccess?: boolean | null | undefined;
@@ -338,6 +422,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
338
422
  stepNumber?: number | null | undefined;
339
423
  } | null | undefined;
340
424
  }[] | null | undefined;
425
+ epicshopVersion?: string | null | undefined;
426
+ repoStatus?: {
427
+ updatesAvailable?: boolean | null | undefined;
428
+ commitsAhead?: number | null | undefined;
429
+ commitsBehind?: number | null | undefined;
430
+ localCommit?: string | null | undefined;
431
+ remoteCommit?: string | null | undefined;
432
+ } | null | undefined;
341
433
  }>;
342
434
  }, "strip", z.ZodTypeAny, {
343
435
  type: "add-user";
@@ -370,6 +462,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
370
462
  stepNumber?: number | null | undefined;
371
463
  } | null | undefined;
372
464
  }[] | null | undefined;
465
+ epicshopVersion?: string | null | undefined;
466
+ repoStatus?: {
467
+ updatesAvailable?: boolean | null | undefined;
468
+ commitsAhead?: number | null | undefined;
469
+ commitsBehind?: number | null | undefined;
470
+ localCommit?: string | null | undefined;
471
+ remoteCommit?: string | null | undefined;
472
+ } | null | undefined;
373
473
  };
374
474
  }, {
375
475
  type: "add-user";
@@ -402,6 +502,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
402
502
  stepNumber?: number | null | undefined;
403
503
  } | null | undefined;
404
504
  }[] | null | undefined;
505
+ epicshopVersion?: string | null | undefined;
506
+ repoStatus?: {
507
+ updatesAvailable?: boolean | null | undefined;
508
+ commitsAhead?: number | null | undefined;
509
+ commitsBehind?: number | null | undefined;
510
+ localCommit?: string | null | undefined;
511
+ remoteCommit?: string | null | undefined;
512
+ } | null | undefined;
405
513
  };
406
514
  }>]>, z.ZodObject<{
407
515
  type: z.ZodLiteral<"presence">;
@@ -487,6 +595,26 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
487
595
  stepNumber?: number | null | undefined;
488
596
  } | null | undefined;
489
597
  }>, "many">>>;
598
+ epicshopVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
599
+ repoStatus: z.ZodOptional<z.ZodNullable<z.ZodObject<{
600
+ updatesAvailable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
601
+ commitsAhead: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
602
+ commitsBehind: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
603
+ localCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
604
+ remoteCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
605
+ }, "strip", z.ZodTypeAny, {
606
+ updatesAvailable?: boolean | null | undefined;
607
+ commitsAhead?: number | null | undefined;
608
+ commitsBehind?: number | null | undefined;
609
+ localCommit?: string | null | undefined;
610
+ remoteCommit?: string | null | undefined;
611
+ }, {
612
+ updatesAvailable?: boolean | null | undefined;
613
+ commitsAhead?: number | null | undefined;
614
+ commitsBehind?: number | null | undefined;
615
+ localCommit?: string | null | undefined;
616
+ remoteCommit?: string | null | undefined;
617
+ }>>>;
490
618
  }, "strip", z.ZodTypeAny, {
491
619
  id: string;
492
620
  hasAccess?: boolean | null | undefined;
@@ -516,6 +644,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
516
644
  stepNumber?: number | null | undefined;
517
645
  } | null | undefined;
518
646
  }[] | null | undefined;
647
+ epicshopVersion?: string | null | undefined;
648
+ repoStatus?: {
649
+ updatesAvailable?: boolean | null | undefined;
650
+ commitsAhead?: number | null | undefined;
651
+ commitsBehind?: number | null | undefined;
652
+ localCommit?: string | null | undefined;
653
+ remoteCommit?: string | null | undefined;
654
+ } | null | undefined;
519
655
  }, {
520
656
  id: string;
521
657
  hasAccess?: boolean | null | undefined;
@@ -545,6 +681,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
545
681
  stepNumber?: number | null | undefined;
546
682
  } | null | undefined;
547
683
  }[] | null | undefined;
684
+ epicshopVersion?: string | null | undefined;
685
+ repoStatus?: {
686
+ updatesAvailable?: boolean | null | undefined;
687
+ commitsAhead?: number | null | undefined;
688
+ commitsBehind?: number | null | undefined;
689
+ localCommit?: string | null | undefined;
690
+ remoteCommit?: string | null | undefined;
691
+ } | null | undefined;
548
692
  }>, "many">;
549
693
  }, "strip", z.ZodTypeAny, {
550
694
  users: {
@@ -576,6 +720,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
576
720
  stepNumber?: number | null | undefined;
577
721
  } | null | undefined;
578
722
  }[] | null | undefined;
723
+ epicshopVersion?: string | null | undefined;
724
+ repoStatus?: {
725
+ updatesAvailable?: boolean | null | undefined;
726
+ commitsAhead?: number | null | undefined;
727
+ commitsBehind?: number | null | undefined;
728
+ localCommit?: string | null | undefined;
729
+ remoteCommit?: string | null | undefined;
730
+ } | null | undefined;
579
731
  }[];
580
732
  }, {
581
733
  users: {
@@ -607,6 +759,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
607
759
  stepNumber?: number | null | undefined;
608
760
  } | null | undefined;
609
761
  }[] | null | undefined;
762
+ epicshopVersion?: string | null | undefined;
763
+ repoStatus?: {
764
+ updatesAvailable?: boolean | null | undefined;
765
+ commitsAhead?: number | null | undefined;
766
+ commitsBehind?: number | null | undefined;
767
+ localCommit?: string | null | undefined;
768
+ remoteCommit?: string | null | undefined;
769
+ } | null | undefined;
610
770
  }[];
611
771
  }>;
612
772
  }, "strip", z.ZodTypeAny, {
@@ -641,6 +801,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
641
801
  stepNumber?: number | null | undefined;
642
802
  } | null | undefined;
643
803
  }[] | null | undefined;
804
+ epicshopVersion?: string | null | undefined;
805
+ repoStatus?: {
806
+ updatesAvailable?: boolean | null | undefined;
807
+ commitsAhead?: number | null | undefined;
808
+ commitsBehind?: number | null | undefined;
809
+ localCommit?: string | null | undefined;
810
+ remoteCommit?: string | null | undefined;
811
+ } | null | undefined;
644
812
  }[];
645
813
  };
646
814
  }, {
@@ -675,6 +843,14 @@ export declare const MessageSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
675
843
  stepNumber?: number | null | undefined;
676
844
  } | null | undefined;
677
845
  }[] | null | undefined;
846
+ epicshopVersion?: string | null | undefined;
847
+ repoStatus?: {
848
+ updatesAvailable?: boolean | null | undefined;
849
+ commitsAhead?: number | null | undefined;
850
+ commitsBehind?: number | null | undefined;
851
+ localCommit?: string | null | undefined;
852
+ remoteCommit?: string | null | undefined;
853
+ } | null | undefined;
678
854
  }[];
679
855
  };
680
856
  }>]>;
@@ -762,6 +938,26 @@ export declare const PresenceSchema: z.ZodObject<{
762
938
  stepNumber?: number | null | undefined;
763
939
  } | null | undefined;
764
940
  }>, "many">>>;
941
+ epicshopVersion: z.ZodOptional<z.ZodNullable<z.ZodString>>;
942
+ repoStatus: z.ZodOptional<z.ZodNullable<z.ZodObject<{
943
+ updatesAvailable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
944
+ commitsAhead: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
945
+ commitsBehind: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
946
+ localCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
947
+ remoteCommit: z.ZodOptional<z.ZodNullable<z.ZodString>>;
948
+ }, "strip", z.ZodTypeAny, {
949
+ updatesAvailable?: boolean | null | undefined;
950
+ commitsAhead?: number | null | undefined;
951
+ commitsBehind?: number | null | undefined;
952
+ localCommit?: string | null | undefined;
953
+ remoteCommit?: string | null | undefined;
954
+ }, {
955
+ updatesAvailable?: boolean | null | undefined;
956
+ commitsAhead?: number | null | undefined;
957
+ commitsBehind?: number | null | undefined;
958
+ localCommit?: string | null | undefined;
959
+ remoteCommit?: string | null | undefined;
960
+ }>>>;
765
961
  }, "strip", z.ZodTypeAny, {
766
962
  id: string;
767
963
  hasAccess?: boolean | null | undefined;
@@ -791,6 +987,14 @@ export declare const PresenceSchema: z.ZodObject<{
791
987
  stepNumber?: number | null | undefined;
792
988
  } | null | undefined;
793
989
  }[] | null | undefined;
990
+ epicshopVersion?: string | null | undefined;
991
+ repoStatus?: {
992
+ updatesAvailable?: boolean | null | undefined;
993
+ commitsAhead?: number | null | undefined;
994
+ commitsBehind?: number | null | undefined;
995
+ localCommit?: string | null | undefined;
996
+ remoteCommit?: string | null | undefined;
997
+ } | null | undefined;
794
998
  }, {
795
999
  id: string;
796
1000
  hasAccess?: boolean | null | undefined;
@@ -820,6 +1024,14 @@ export declare const PresenceSchema: z.ZodObject<{
820
1024
  stepNumber?: number | null | undefined;
821
1025
  } | null | undefined;
822
1026
  }[] | null | undefined;
1027
+ epicshopVersion?: string | null | undefined;
1028
+ repoStatus?: {
1029
+ updatesAvailable?: boolean | null | undefined;
1030
+ commitsAhead?: number | null | undefined;
1031
+ commitsBehind?: number | null | undefined;
1032
+ localCommit?: string | null | undefined;
1033
+ remoteCommit?: string | null | undefined;
1034
+ } | null | undefined;
823
1035
  }>, "many">;
824
1036
  }, "strip", z.ZodTypeAny, {
825
1037
  users: {
@@ -851,6 +1063,14 @@ export declare const PresenceSchema: z.ZodObject<{
851
1063
  stepNumber?: number | null | undefined;
852
1064
  } | null | undefined;
853
1065
  }[] | null | undefined;
1066
+ epicshopVersion?: string | null | undefined;
1067
+ repoStatus?: {
1068
+ updatesAvailable?: boolean | null | undefined;
1069
+ commitsAhead?: number | null | undefined;
1070
+ commitsBehind?: number | null | undefined;
1071
+ localCommit?: string | null | undefined;
1072
+ remoteCommit?: string | null | undefined;
1073
+ } | null | undefined;
854
1074
  }[];
855
1075
  }, {
856
1076
  users: {
@@ -882,6 +1102,14 @@ export declare const PresenceSchema: z.ZodObject<{
882
1102
  stepNumber?: number | null | undefined;
883
1103
  } | null | undefined;
884
1104
  }[] | null | undefined;
1105
+ epicshopVersion?: string | null | undefined;
1106
+ repoStatus?: {
1107
+ updatesAvailable?: boolean | null | undefined;
1108
+ commitsAhead?: number | null | undefined;
1109
+ commitsBehind?: number | null | undefined;
1110
+ localCommit?: string | null | undefined;
1111
+ remoteCommit?: string | null | undefined;
1112
+ } | null | undefined;
885
1113
  }[];
886
1114
  }>;
887
1115
  export declare const productHostEmojis: Record<string, string>;
package/dist/presence.js CHANGED
@@ -18,6 +18,13 @@ export const LocationSchema = z.object({
18
18
  .nullable()
19
19
  .optional(),
20
20
  });
21
+ export const RepoStatusSchema = z.object({
22
+ updatesAvailable: z.boolean().nullable().optional(),
23
+ commitsAhead: z.number().nullable().optional(),
24
+ commitsBehind: z.number().nullable().optional(),
25
+ localCommit: z.string().nullable().optional(),
26
+ remoteCommit: z.string().nullable().optional(),
27
+ });
21
28
  export const UserSchema = z.object({
22
29
  id: z.string(),
23
30
  hasAccess: z.boolean().nullable().optional(),
@@ -32,6 +39,10 @@ export const UserSchema = z.object({
32
39
  location: LocationSchema.nullable().optional(),
33
40
  // Multiple locations when user is connected from multiple workshops
34
41
  locations: z.array(LocationSchema).nullable().optional(),
42
+ // Version of the epicshop app the user is running
43
+ epicshopVersion: z.string().nullable().optional(),
44
+ // Repository status (updates available, commits ahead/behind)
45
+ repoStatus: RepoStatusSchema.nullable().optional(),
35
46
  });
36
47
  export const MessageSchema = z
37
48
  .object({
@@ -31,6 +31,14 @@ export declare const presenceCache: {
31
31
  stepNumber?: number | null | undefined;
32
32
  } | null | undefined;
33
33
  }[] | null | undefined;
34
+ epicshopVersion?: string | null | undefined;
35
+ repoStatus?: {
36
+ updatesAvailable?: boolean | null | undefined;
37
+ commitsAhead?: number | null | undefined;
38
+ commitsBehind?: number | null | undefined;
39
+ localCommit?: string | null | undefined;
40
+ remoteCommit?: string | null | undefined;
41
+ } | null | undefined;
34
42
  }[]>) => import("@epic-web/cachified").CacheEntry<{
35
43
  id: string;
36
44
  hasAccess?: boolean | null | undefined;
@@ -60,6 +68,14 @@ export declare const presenceCache: {
60
68
  stepNumber?: number | null | undefined;
61
69
  } | null | undefined;
62
70
  }[] | null | undefined;
71
+ epicshopVersion?: string | null | undefined;
72
+ repoStatus?: {
73
+ updatesAvailable?: boolean | null | undefined;
74
+ commitsAhead?: number | null | undefined;
75
+ commitsBehind?: number | null | undefined;
76
+ localCommit?: string | null | undefined;
77
+ remoteCommit?: string | null | undefined;
78
+ } | null | undefined;
63
79
  }[]>;
64
80
  get: (key: string) => import("@epic-web/cachified").CacheEntry<{
65
81
  id: string;
@@ -90,6 +106,14 @@ export declare const presenceCache: {
90
106
  stepNumber?: number | null | undefined;
91
107
  } | null | undefined;
92
108
  }[] | null | undefined;
109
+ epicshopVersion?: string | null | undefined;
110
+ repoStatus?: {
111
+ updatesAvailable?: boolean | null | undefined;
112
+ commitsAhead?: number | null | undefined;
113
+ commitsBehind?: number | null | undefined;
114
+ localCommit?: string | null | undefined;
115
+ remoteCommit?: string | null | undefined;
116
+ } | null | undefined;
93
117
  }[]> | undefined;
94
118
  delete: (key: string) => boolean;
95
119
  };
@@ -1,9 +1,11 @@
1
1
  import { cachified, makeSingletonCache, } from '@epic-web/workshop-utils/cache.server';
2
2
  import { getWorkshopConfig } from '@epic-web/workshop-utils/config.server';
3
3
  import { getAuthInfo, getLoggedInProductHosts, getPreferences, } from '@epic-web/workshop-utils/db.server';
4
+ import { getEnv } from '@epic-web/workshop-utils/env.server';
4
5
  import { getUserInfo, userHasAccessToWorkshop, } from '@epic-web/workshop-utils/epic-api.server';
6
+ import { checkForUpdatesCached } from '@epic-web/workshop-utils/git.server';
5
7
  import { getUserId } from '@epic-web/workshop-utils/user.server';
6
- import { PresenceSchema, partykitBaseUrl } from "./presence.js";
8
+ import { PresenceSchema, partykitBaseUrl, } from "./presence.js";
7
9
  export const presenceCache = makeSingletonCache('PresenceCache');
8
10
  export async function getPresentUsers({ timings, request, } = {}) {
9
11
  const presence = await cachified({
@@ -52,17 +54,44 @@ export async function getPresentUsers({ timings, request, } = {}) {
52
54
  }
53
55
  // Get logged in product hosts for the local user
54
56
  const loggedInProductHosts = await getLoggedInProductHosts();
57
+ // Get epicshop version and repo status
58
+ const ENV = getEnv();
59
+ const epicshopVersion = ENV.EPICSHOP_APP_VERSION ?? null;
60
+ // Get repo status (updates available, commits ahead/behind)
61
+ let repoStatus = null;
62
+ try {
63
+ const updateStatus = await checkForUpdatesCached();
64
+ if ('updatesAvailable' in updateStatus) {
65
+ repoStatus = {
66
+ updatesAvailable: updateStatus.updatesAvailable,
67
+ commitsAhead: 'commitsAhead' in updateStatus ? updateStatus.commitsAhead : null,
68
+ commitsBehind: 'commitsBehind' in updateStatus ? updateStatus.commitsBehind : null,
69
+ localCommit: 'localCommit' in updateStatus ? updateStatus.localCommit : null,
70
+ remoteCommit: 'remoteCommit' in updateStatus ? updateStatus.remoteCommit : null,
71
+ };
72
+ }
73
+ }
74
+ catch {
75
+ // Ignore errors from checking for updates
76
+ }
55
77
  // If opted out, include user with minimal info (just id and optOut flag)
56
78
  if (isOptOut) {
57
79
  const optOutUser = {
58
80
  id: userId,
59
81
  optOut: true,
60
82
  loggedInProductHosts,
83
+ epicshopVersion,
84
+ repoStatus,
61
85
  };
62
86
  return uniqueUsers([...users.filter((u) => u.id !== userId), optOutUser]);
63
87
  }
64
88
  // Build full user info
65
- const user = { id: userId, loggedInProductHosts };
89
+ const user = {
90
+ id: userId,
91
+ loggedInProductHosts,
92
+ epicshopVersion,
93
+ repoStatus,
94
+ };
66
95
  const config = getWorkshopConfig();
67
96
  const url = request ? new URL(request.url) : undefined;
68
97
  user.location = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epic-web/workshop-presence",
3
- "version": "6.48.2",
3
+ "version": "6.49.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -14,7 +14,7 @@
14
14
  "deploy": "partykit deploy"
15
15
  },
16
16
  "dependencies": {
17
- "@epic-web/workshop-utils": "6.48.2",
17
+ "@epic-web/workshop-utils": "6.49.0",
18
18
  "zod": "^3.25.76"
19
19
  },
20
20
  "devDependencies": {