Overview
File Change Frequency Overall
  • There are 309 files with 28,862 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 0 files changed 51-100 times (0 lines of code)
    • 12 files changed 21-50 times (3,952 lines of code)
    • 160 files changed 6-20 times (18,765 lines of code)
    • 137 files changed 1-5 times (6,145 lines of code)
0% | 0% | 13% | 65% | 21%
Legend:
101+
51-100
21-50
6-20
1-5

explore: grouped by folders | grouped by update frequency | data
Contributors Count Frequency Overall
  • There are 309 files with 28,862 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 1 file changed by 11-25 contributors (95 lines of code)
    • 150 files changed by 6-10 contributors (20,648 lines of code)
    • 152 files changed by 2-5 contributors (7,843 lines of code)
    • 6 files changed by 1 contributor (276 lines of code)
0% | <1% | 71% | 27% | <1%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
ts, tsx, json, md, sql, yml, gitignore, sh, txt, js, css, webmanifest, editorconfig, html, yaml, toml, mjs, snap, prettierignore
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
ts0% | 0% | 25% | 55% | 19%
tsx0% | 0% | 4% | 74% | 21%
yaml0% | 0% | 0% | 100% | 0%
js0% | 0% | 0% | 14% | 85%
html0% | 0% | 0% | 100% | 0%
toml0% | 0% | 0% | 100% | 0%
sql0% | 0% | 0% | 0% | 100%
css0% | 0% | 0% | 0% | 100%
webmanifest0% | 0% | 0% | 0% | 100%
mjs0% | 0% | 0% | 0% | 100%
File Change Frequency per Logical Decomposition
primary
primary (file change frequency)
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
src0% | 0% | 12% | 65% | 21%
cdk0% | 0% | 94% | 0% | 5%
ROOT0% | 0% | 0% | 100% | 0%
.github0% | 0% | 0% | 100% | 0%
docker0% | 0% | 0% | 100% | 0%
scripts0% | 0% | 0% | 0% | 100%
Most Frequently Changed Files (Top 50)

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
app.ts
in src/apps/backend
95 - 2026-07-10 2026-09-18 33 11 +903 / -294 laurynas.karvelis simona.spiridon
index.ts
in src/apps/backend/routers/notifications
340 4 2026-07-10 2026-09-24 33 10 +3123 / -1011 laurynas.karvelis joshua.anderson
App.tsx
in src/apps/frontend/src
61 1 2026-07-09 2026-09-25 28 9 +683 / -371 laurynas.karvelis simona.spiridon
331 1 2026-07-20 2026-10-01 28 9 +2012 / -392 33927854+rebecca-thompson joshua.anderson
audiences.ts
in src/packages/config
409 - 2026-07-17 2026-10-01 27 9 +4920 / -2005 laurynas.karvelis joshua.anderson
preview.tsx
in src/apps/frontend/.storybook
42 - 2026-07-17 2026-10-01 23 8 +349 / -58 60498278+apeacewilliams david.blatcher
index.ts
in src/apps/backend/routers/channels
137 5 2026-07-20 2026-09-15 22 7 +1151 / -388 laurynas.karvelis david.blatcher
notification-send-request.ts
in src/apps/backend/routers/notifications/schemas
454 - 2026-07-21 2026-09-24 22 9 +3715 / -919 laurynas.karvelis joshua.anderson
themes.ts
in src/apps/frontend/src
1452 118 2026-09-02 2026-10-02 22 8 +6492 / -745 luxmi.r.pillai 60498278+apeacewilliams
index.ts
in src/packages/database
24 - 2026-07-31 2026-09-23 21 5 +126 / -16 simona.spiridon joshua.anderson
serve-index.ts
in src/apps/backend/middleware
53 - 2026-07-29 2026-10-01 21 8 +443 / -97 sam.hession simona.spiridon
CreateAppAlertForm.stories.tsx
in src/apps/frontend/src/compose
554 58 2026-09-02 2026-10-02 21 8 +2863 / -672 60498278+apeacewilliams joshua.anderson
index.ts
in src/packages/config
17 - 2026-07-09 2026-09-15 20 7 +172 / -94 laurynas.karvelis david.blatcher
frontend.tsx
in src/apps/frontend/src
55 - 2026-07-09 2026-10-02 20 7 +324 / -44 laurynas.karvelis joshua.anderson
index.ts
in src/packages/models
8 - 2026-08-05 2026-09-28 19 8 +52 / -13 david.blatcher 30567854+dblatcher
dispatch-notification.ts
in src/apps/backend/notification-channels
43 - 2026-07-24 2026-09-15 19 7 +2558 / -1978 33927854+rebecca-thompson david.blatcher
HistoryView.tsx
in src/apps/frontend/src/history
114 - 2026-09-02 2026-10-02 19 7 +1466 / -1325 60498278+apeacewilliams joshua.anderson
channels.ts
in src/packages/config
20 - 2026-07-17 2026-09-24 18 7 +433 / -305 laurynas.karvelis joshua.anderson
client.ts
in src/packages/services/capi
169 - 2026-08-05 2026-10-01 18 8 +998 / -330 laurynas.karvelis david.blatcher
HistoryView.stories.tsx
in src/apps/frontend/src/history
316 35 2026-09-02 2026-10-02 18 7 +1433 / -244 60498278+apeacewilliams joshua.anderson
CreateAppAlertTab.stories.tsx
in src/apps/frontend/src/compose
730 50 2026-09-02 2026-10-01 18 9 +2857 / -418 60498278+apeacewilliams david.blatcher
39 - 2026-07-13 2026-09-15 17 9 +260 / -34 laurynas.karvelis david.blatcher
database.ts
in src/apps/backend/utils/test-utils
106 9 2026-08-06 2026-09-24 17 5 +594 / -43 simona.spiridon david.blatcher
notifications-repository.ts
in src/packages/database/repositories
287 12 2026-08-20 2026-09-24 17 7 +2119 / -383 laurynas.karvelis joshua.anderson
HistoryPage.stories.tsx
in src/apps/frontend/src/history
909 88 2026-09-02 2026-10-01 17 7 +4473 / -222 60498278+apeacewilliams david.blatcher
CreateNewsletterEmailTab.tsx
in src/apps/frontend/src/compose
54 - 2026-09-02 2026-09-25 16 8 +327 / -136 60498278+apeacewilliams marcin.gosz
dispatch-app-push.ts
in src/apps/backend/notification-channels/app-push
169 1 2026-08-12 2026-09-15 16 5 +1284 / -231 laurynas.karvelis david.blatcher
HistoryTable.tsx
in src/apps/frontend/src/history
301 - 2026-09-09 2026-10-02 16 6 +1680 / -258 luxmi.r.pillai joshua.anderson
NotificationFormWrapper.tsx
in src/apps/frontend/src/compose
116 - 2026-09-02 2026-10-02 15 8 +477 / -118 60498278+apeacewilliams joshua.anderson
HistoryPage.tsx
in src/apps/frontend/src/history
120 1 2026-09-02 2026-09-24 15 7 +731 / -243 60498278+apeacewilliams joshua.anderson
CreateAppAlertForm.tsx
in src/apps/frontend/src/compose
127 2 2026-09-02 2026-09-25 15 8 +702 / -278 60498278+apeacewilliams luxmi.r.pillai
useNotificationHistory.ts
in src/apps/frontend/src/hooks
143 4 2026-09-03 2026-10-01 15 7 +745 / -114 60498278+apeacewilliams david.blatcher
form-validation.tsx
in src/apps/frontend/src/utils
149 1 2026-09-03 2026-09-24 15 9 +824 / -168 60498278+apeacewilliams 73653255+lakshmirpillai
index.ts
in src/apps/backend/routers/content
170 - 2026-08-05 2026-10-01 15 8 +1117 / -243 laurynas.karvelis 30567854+dblatcher
notifications-repository.dbtest.ts
in src/packages/database/repositories
779 70 2026-08-20 2026-09-24 15 7 +4337 / -79 laurynas.karvelis joshua.anderson
drizzle.config.ts
in src/packages/database
10 1 2026-07-31 2026-09-15 14 5 +83 / -34 simona.spiridon david.blatcher
client.ts
in src/packages/database
29 - 2026-07-31 2026-09-15 14 5 +290 / -120 simona.spiridon david.blatcher
CreateAppAlertTab.tsx
in src/apps/frontend/src/compose
48 - 2026-09-02 2026-09-25 14 8 +300 / -133 60498278+apeacewilliams marcin.gosz
AppAlertReplaceImageSection.tsx
in src/apps/frontend/src/compose
106 - 2026-09-04 2026-10-02 14 7 +738 / -361 luxmi.r.pillai 60498278+apeacewilliams
NotificationFormProvider.stories.tsx
in src/apps/frontend/src/compose
128 - 2026-09-02 2026-10-01 14 7 +920 / -217 60498278+apeacewilliams david.blatcher
dispatch-newsletter.ts
in src/apps/backend/notification-channels/newsletter
131 - 2026-08-12 2026-09-17 14 5 +933 / -125 laurynas.karvelis david.blatcher
ArticleThumbnailImageFormField.tsx
in src/apps/frontend/src/compose
145 - 2026-09-02 2026-09-25 14 7 +673 / -221 60498278+apeacewilliams luxmi.r.pillai
capi.ts
in src/packages/models
149 - 2026-08-11 2026-10-01 14 8 +924 / -14 david.blatcher david.blatcher
ArticleImportControl.tsx
in src/apps/frontend/src/compose
222 1 2026-09-02 2026-09-28 14 9 +1038 / -279 60498278+apeacewilliams 30567854+dblatcher
CreateNewsletterEmailTab.stories.tsx
in src/apps/frontend/src/compose
499 46 2026-09-02 2026-09-25 14 7 +1563 / -141 60498278+apeacewilliams marcin.gosz
main.ts
in src/apps/frontend/.storybook
11 - 2026-07-17 2026-10-01 13 7 +184 / -109 60498278+apeacewilliams david.blatcher
frontend-app-config.ts
in src/packages/models
13 - 2026-08-17 2026-10-01 13 5 +82 / -5 david.blatcher simona.spiridon
error-middleware.ts
in src/apps/backend/middleware
34 - 2026-07-29 2026-09-17 13 7 +325 / -233 60498278+apeacewilliams luxmi.r.pillai
types.ts
in src/apps/frontend/src
68 - 2026-09-02 2026-09-24 13 8 +385 / -239 60498278+apeacewilliams joshua.anderson
ArticlePreviewCard.tsx
in src/apps/frontend/src/compose
78 - 2026-09-02 2026-10-02 13 8 +746 / -238 60498278+apeacewilliams david.blatcher
Files With Most Churn (Top 50)
Based on the number of lines added and deleted across all commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
themes.ts
in src/apps/frontend/src
1452 118 2026-09-02 2026-10-02 22 8 +6492 / -745 luxmi.r.pillai 60498278+apeacewilliams
audiences.ts
in src/packages/config
409 - 2026-07-17 2026-10-01 27 9 +4920 / -2005 laurynas.karvelis joshua.anderson
HistoryPage.stories.tsx
in src/apps/frontend/src/history
909 88 2026-09-02 2026-10-01 17 7 +4473 / -222 60498278+apeacewilliams david.blatcher
notification-send-request.ts
in src/apps/backend/routers/notifications/schemas
454 - 2026-07-21 2026-09-24 22 9 +3715 / -919 laurynas.karvelis joshua.anderson
dispatch-notification.ts
in src/apps/backend/notification-channels
43 - 2026-07-24 2026-09-15 19 7 +2558 / -1978 33927854+rebecca-thompson david.blatcher
notifications-repository.dbtest.ts
in src/packages/database/repositories
779 70 2026-08-20 2026-09-24 15 7 +4337 / -79 laurynas.karvelis joshua.anderson
index.ts
in src/apps/backend/routers/notifications
340 4 2026-07-10 2026-09-24 33 10 +3123 / -1011 laurynas.karvelis joshua.anderson
index.dbtest.ts
in src/apps/backend/routers/notifications
711 31 2026-08-24 2026-09-23 13 7 +3920 / -94 laurynas.karvelis simona.spiridon
CreateAppAlertForm.stories.tsx
in src/apps/frontend/src/compose
554 58 2026-09-02 2026-10-02 21 8 +2863 / -672 60498278+apeacewilliams joshua.anderson
CreateNewsletterEmailForm.stories.tsx
in src/apps/frontend/src/compose
412 40 2026-09-15 2026-10-02 9 7 +3237 / -57 60498278+apeacewilliams joshua.anderson
CreateAppAlertTab.stories.tsx
in src/apps/frontend/src/compose
730 50 2026-09-02 2026-10-01 18 9 +2857 / -418 60498278+apeacewilliams david.blatcher
HistoryView.tsx
in src/apps/frontend/src/history
114 - 2026-09-02 2026-10-02 19 7 +1466 / -1325 60498278+apeacewilliams joshua.anderson
notifications-repository.ts
in src/packages/database/repositories
287 12 2026-08-20 2026-09-24 17 7 +2119 / -383 laurynas.karvelis joshua.anderson
331 1 2026-07-20 2026-10-01 28 9 +2012 / -392 33927854+rebecca-thompson joshua.anderson
persist-notification.ts
in src/apps/backend/persistence
224 1 2026-08-25 2026-09-24 12 5 +1779 / -330 laurynas.karvelis joshua.anderson
DispatchReport.tsx
in src/apps/frontend/src/send
422 5 2026-09-02 2026-10-01 12 8 +1701 / -337 60498278+apeacewilliams joshua.anderson
client.ts
in src/packages/services/braze
317 1 2026-08-05 2026-09-15 8 4 +1820 / -186 laurynas.karvelis david.blatcher
DispatchLandingPage.stories.tsx
in src/apps/frontend/src/compose
360 33 2026-09-17 2026-10-01 10 7 +1842 / -115 david.blatcher david.blatcher
HistoryTable.tsx
in src/apps/frontend/src/history
301 - 2026-09-09 2026-10-02 16 6 +1680 / -258 luxmi.r.pillai joshua.anderson
SendFailedModal.tsx
in src/apps/frontend/src/send
281 3 2026-09-02 2026-09-21 10 7 +1629 / -304 60498278+apeacewilliams david.blatcher
mockServiceWorker.js
in src/apps/frontend/public
232 11 2026-07-23 2026-08-07 3 3 +1805 / -0 60498278+apeacewilliams david.blatcher
DispatchReport.stories.tsx
in src/apps/frontend/src/send
291 28 2026-09-02 2026-09-25 13 8 +1441 / -338 60498278+apeacewilliams marcin.gosz
CreateNewsletterEmailTab.stories.tsx
in src/apps/frontend/src/compose
499 46 2026-09-02 2026-09-25 14 7 +1563 / -141 60498278+apeacewilliams marcin.gosz
HistoryView.stories.tsx
in src/apps/frontend/src/history
316 35 2026-09-02 2026-10-02 18 7 +1433 / -244 60498278+apeacewilliams joshua.anderson
HTMLPreview.tsx
in src/apps/frontend/src/preview
157 4 2026-09-02 2026-09-21 11 9 +1099 / -511 60498278+apeacewilliams david.blatcher
PreviousNotificationsBar.tsx
in src/apps/frontend/src/compose
297 9 2026-09-23 2026-10-02 6 3 +1085 / -455 david.blatcher joshua.anderson
index.ts
in src/apps/backend/routers/channels
137 5 2026-07-20 2026-09-15 22 7 +1151 / -388 laurynas.karvelis david.blatcher
dispatch-app-push.ts
in src/apps/backend/notification-channels/app-push
169 1 2026-08-12 2026-09-15 16 5 +1284 / -231 laurynas.karvelis david.blatcher
dispatch-newsletter-test.ts
in src/apps/backend/notification-channels/newsletter
149 1 2026-08-12 2026-09-17 11 5 +1169 / -317 laurynas.karvelis david.blatcher
TestEmailForm.tsx
in src/apps/frontend/src/send
217 1 2026-09-02 2026-09-18 10 8 +1063 / -337 60498278+apeacewilliams simona.spiridon
LatestPublishedContentPanel.stories.tsx
in src/apps/frontend/src/latest-content
277 25 2026-09-18 2026-10-01 10 6 +1350 / -40 simona.spiridon david.blatcher
ArticlePreviewCard.stories.tsx
in src/apps/frontend/src/compose
172 23 2026-09-02 2026-10-01 12 8 +1056 / -323 60498278+apeacewilliams joshua.anderson
index.ts
in src/apps/backend/routers/content
170 - 2026-08-05 2026-10-01 15 8 +1117 / -243 laurynas.karvelis 30567854+dblatcher
flag-icons.tsx
in src/apps/frontend/src/ui
186 - 2026-09-15 2026-09-18 4 5 +1358 / -0 60498278+apeacewilliams simona.spiridon
client.ts
in src/packages/services/capi
169 - 2026-08-05 2026-10-01 18 8 +998 / -330 laurynas.karvelis david.blatcher
ArticleImportControl.tsx
in src/apps/frontend/src/compose
222 1 2026-09-02 2026-09-28 14 9 +1038 / -279 60498278+apeacewilliams 30567854+dblatcher
dispatch-app-push-test.ts
in src/apps/backend/notification-channels/app-push
37 - 2026-08-14 2026-09-15 10 5 +786 / -525 luxmi.r.pillai david.blatcher
notification-history-mapper.ts
in src/apps/frontend/src/utils
145 1 2026-09-04 2026-10-01 8 7 +1103 / -191 joshua.anderson joshua.anderson
NewsletterEmailPreviewSection.stories.tsx
in src/apps/frontend/src/preview
111 6 2026-09-15 2026-09-23 7 7 +1235 / -30 60498278+apeacewilliams simona.spiridon
ssm.ts
in src/packages/config
119 2 2026-07-29 2026-08-11 10 7 +985 / -274 sam.hession luxmi.r.pillai
api-fixtures.ts
in src/apps/frontend/src/testing
287 - 2026-09-02 2026-09-28 12 9 +1182 / -52 60498278+apeacewilliams 30567854+dblatcher
app.ts
in src/apps/backend
95 - 2026-07-10 2026-09-18 33 11 +903 / -294 laurynas.karvelis simona.spiridon
DispatchCreateNotificationModal.tsx
in src/apps/frontend/src/compose
61 - 2026-09-21 2026-10-02 10 9 +890 / -290 joshua.anderson david.blatcher
NotificationFormProvider.stories.tsx
in src/apps/frontend/src/compose
128 - 2026-09-02 2026-10-01 14 7 +920 / -217 60498278+apeacewilliams david.blatcher
AppAlertReplaceImageSection.tsx
in src/apps/frontend/src/compose
106 - 2026-09-04 2026-10-02 14 7 +738 / -361 luxmi.r.pillai 60498278+apeacewilliams
dispatch-newsletter.ts
in src/apps/backend/notification-channels/newsletter
131 - 2026-08-12 2026-09-17 14 5 +933 / -125 laurynas.karvelis david.blatcher
TestEmailForm.stories.tsx
in src/apps/frontend/src/send
199 19 2026-09-02 2026-10-01 11 7 +862 / -194 60498278+apeacewilliams david.blatcher
App.tsx
in src/apps/frontend/src
61 1 2026-07-09 2026-09-25 28 9 +683 / -371 laurynas.karvelis simona.spiridon
index.ts
in src/apps/backend/routers/grafana
149 2 2026-09-09 2026-09-18 5 3 +945 / -75 simona.spiridon simona.spiridon
SegmentPicker.tsx
in src/apps/frontend/src/segment
95 - 2026-09-02 2026-09-24 9 6 +576 / -426 60498278+apeacewilliams 73653255+lakshmirpillai
Files With Most Contributors (Top 50)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
app.ts
in src/apps/backend
95 - 2026-07-10 2026-09-18 33 11 +903 / -294 laurynas.karvelis simona.spiridon
index.ts
in src/apps/backend/routers/notifications
340 4 2026-07-10 2026-09-24 33 10 +3123 / -1011 laurynas.karvelis joshua.anderson
331 1 2026-07-20 2026-10-01 28 9 +2012 / -392 33927854+rebecca-thompson joshua.anderson
App.tsx
in src/apps/frontend/src
61 1 2026-07-09 2026-09-25 28 9 +683 / -371 laurynas.karvelis simona.spiridon
audiences.ts
in src/packages/config
409 - 2026-07-17 2026-10-01 27 9 +4920 / -2005 laurynas.karvelis joshua.anderson
notification-send-request.ts
in src/apps/backend/routers/notifications/schemas
454 - 2026-07-21 2026-09-24 22 9 +3715 / -919 laurynas.karvelis joshua.anderson
CreateAppAlertTab.stories.tsx
in src/apps/frontend/src/compose
730 50 2026-09-02 2026-10-01 18 9 +2857 / -418 60498278+apeacewilliams david.blatcher
39 - 2026-07-13 2026-09-15 17 9 +260 / -34 laurynas.karvelis david.blatcher
form-validation.tsx
in src/apps/frontend/src/utils
149 1 2026-09-03 2026-09-24 15 9 +824 / -168 60498278+apeacewilliams 73653255+lakshmirpillai
ArticleImportControl.tsx
in src/apps/frontend/src/compose
222 1 2026-09-02 2026-09-28 14 9 +1038 / -279 60498278+apeacewilliams 30567854+dblatcher
api-fixtures.ts
in src/apps/frontend/src/testing
287 - 2026-09-02 2026-09-28 12 9 +1182 / -52 60498278+apeacewilliams 30567854+dblatcher
HTMLPreview.tsx
in src/apps/frontend/src/preview
157 4 2026-09-02 2026-09-21 11 9 +1099 / -511 60498278+apeacewilliams david.blatcher
DispatchCreateNotificationModal.tsx
in src/apps/frontend/src/compose
61 - 2026-09-21 2026-10-02 10 9 +890 / -290 joshua.anderson david.blatcher
preview.tsx
in src/apps/frontend/.storybook
42 - 2026-07-17 2026-10-01 23 8 +349 / -58 60498278+apeacewilliams david.blatcher
themes.ts
in src/apps/frontend/src
1452 118 2026-09-02 2026-10-02 22 8 +6492 / -745 luxmi.r.pillai 60498278+apeacewilliams
CreateAppAlertForm.stories.tsx
in src/apps/frontend/src/compose
554 58 2026-09-02 2026-10-02 21 8 +2863 / -672 60498278+apeacewilliams joshua.anderson
serve-index.ts
in src/apps/backend/middleware
53 - 2026-07-29 2026-10-01 21 8 +443 / -97 sam.hession simona.spiridon
index.ts
in src/packages/models
8 - 2026-08-05 2026-09-28 19 8 +52 / -13 david.blatcher 30567854+dblatcher
client.ts
in src/packages/services/capi
169 - 2026-08-05 2026-10-01 18 8 +998 / -330 laurynas.karvelis david.blatcher
CreateNewsletterEmailTab.tsx
in src/apps/frontend/src/compose
54 - 2026-09-02 2026-09-25 16 8 +327 / -136 60498278+apeacewilliams marcin.gosz
CreateAppAlertForm.tsx
in src/apps/frontend/src/compose
127 2 2026-09-02 2026-09-25 15 8 +702 / -278 60498278+apeacewilliams luxmi.r.pillai
NotificationFormWrapper.tsx
in src/apps/frontend/src/compose
116 - 2026-09-02 2026-10-02 15 8 +477 / -118 60498278+apeacewilliams joshua.anderson
index.ts
in src/apps/backend/routers/content
170 - 2026-08-05 2026-10-01 15 8 +1117 / -243 laurynas.karvelis 30567854+dblatcher
capi.ts
in src/packages/models
149 - 2026-08-11 2026-10-01 14 8 +924 / -14 david.blatcher david.blatcher
CreateAppAlertTab.tsx
in src/apps/frontend/src/compose
48 - 2026-09-02 2026-09-25 14 8 +300 / -133 60498278+apeacewilliams marcin.gosz
ArticlePreviewCard.tsx
in src/apps/frontend/src/compose
78 - 2026-09-02 2026-10-02 13 8 +746 / -238 60498278+apeacewilliams david.blatcher
types.ts
in src/apps/frontend/src
68 - 2026-09-02 2026-09-24 13 8 +385 / -239 60498278+apeacewilliams joshua.anderson
DispatchReport.stories.tsx
in src/apps/frontend/src/send
291 28 2026-09-02 2026-09-25 13 8 +1441 / -338 60498278+apeacewilliams marcin.gosz
ArticlePreviewCard.stories.tsx
in src/apps/frontend/src/compose
172 23 2026-09-02 2026-10-01 12 8 +1056 / -323 60498278+apeacewilliams joshua.anderson
DispatchReport.tsx
in src/apps/frontend/src/send
422 5 2026-09-02 2026-10-01 12 8 +1701 / -337 60498278+apeacewilliams joshua.anderson
index.html
in src/apps/frontend/src
39 - 2026-07-09 2026-09-15 11 8 +201 / -11 laurynas.karvelis david.blatcher
build-request-payloads.ts
in src/apps/frontend/src/utils
129 - 2026-09-03 2026-09-25 11 8 +621 / -176 luxmi.r.pillai luxmi.r.pillai
article-thumbnail.ts
in src/apps/frontend/src/utils
27 - 2026-09-04 2026-10-01 10 8 +218 / -52 joshua.anderson david.blatcher
TestEmailForm.tsx
in src/apps/frontend/src/send
217 1 2026-09-02 2026-09-18 10 8 +1063 / -337 60498278+apeacewilliams simona.spiridon
LatestPublishedContentPanel.tsx
in src/apps/frontend/src/latest-content
169 - 2026-09-18 2026-10-01 10 8 +737 / -55 simona.spiridon david.blatcher
schemas.ts
in src/apps/frontend/src
229 - 2026-09-02 2026-09-24 9 8 +895 / -76 60498278+apeacewilliams 73653255+lakshmirpillai
CreateNewsletterEmailForm.tsx
in src/apps/frontend/src/compose
129 2 2026-09-15 2026-09-25 8 8 +832 / -45 60498278+apeacewilliams marcin.gosz
article-presentation.ts
in src/apps/frontend/src/utils
30 - 2026-09-08 2026-10-01 8 8 +252 / -68 joshua.anderson david.blatcher
index.ts
in src/apps/backend/routers/channels
137 5 2026-07-20 2026-09-15 22 7 +1151 / -388 laurynas.karvelis david.blatcher
index.ts
in src/packages/config
17 - 2026-07-09 2026-09-15 20 7 +172 / -94 laurynas.karvelis david.blatcher
frontend.tsx
in src/apps/frontend/src
55 - 2026-07-09 2026-10-02 20 7 +324 / -44 laurynas.karvelis joshua.anderson
HistoryView.tsx
in src/apps/frontend/src/history
114 - 2026-09-02 2026-10-02 19 7 +1466 / -1325 60498278+apeacewilliams joshua.anderson
dispatch-notification.ts
in src/apps/backend/notification-channels
43 - 2026-07-24 2026-09-15 19 7 +2558 / -1978 33927854+rebecca-thompson david.blatcher
channels.ts
in src/packages/config
20 - 2026-07-17 2026-09-24 18 7 +433 / -305 laurynas.karvelis joshua.anderson
HistoryView.stories.tsx
in src/apps/frontend/src/history
316 35 2026-09-02 2026-10-02 18 7 +1433 / -244 60498278+apeacewilliams joshua.anderson
notifications-repository.ts
in src/packages/database/repositories
287 12 2026-08-20 2026-09-24 17 7 +2119 / -383 laurynas.karvelis joshua.anderson
HistoryPage.stories.tsx
in src/apps/frontend/src/history
909 88 2026-09-02 2026-10-01 17 7 +4473 / -222 60498278+apeacewilliams david.blatcher
notifications-repository.dbtest.ts
in src/packages/database/repositories
779 70 2026-08-20 2026-09-24 15 7 +4337 / -79 laurynas.karvelis joshua.anderson
useNotificationHistory.ts
in src/apps/frontend/src/hooks
143 4 2026-09-03 2026-10-01 15 7 +745 / -114 60498278+apeacewilliams david.blatcher
HistoryPage.tsx
in src/apps/frontend/src/history
120 1 2026-09-02 2026-09-24 15 7 +731 / -243 60498278+apeacewilliams joshua.anderson
Files With Least Contributors (Top 50)
Based on the number of unique email addresses found in commits.

See data for all files...

File# lines# unitscreatedlast modified# changes
(days)
# contributorsline
churn
first
contributor
latest
contributor
useImageUrlCheck.ts
in src/apps/frontend/src/hooks
106 - 2026-10-01 2026-10-02 2 1 +248 / -0 60498278+apeacewilliams 60498278+apeacewilliams
CollapsibleSection.stories.tsx
in src/apps/frontend/src/ui
66 3 2026-09-25 2026-09-25 1 1 +150 / -0 simona.spiridon simona.spiridon
CollapsibleSection.tsx
in src/apps/frontend/src/ui
60 - 2026-09-25 2026-09-25 1 1 +134 / -0 simona.spiridon simona.spiridon
index.css
in src/apps/frontend/src
20 - 2026-07-09 2026-07-16 4 1 +235 / -189 laurynas.karvelis laurynas.karvelis
useUnsavedChanges.ts
in src/apps/frontend/src/hooks
20 - 2026-10-02 2026-10-02 1 1 +50 / -0 joshua.anderson joshua.anderson
UnsavedChangesContext.ts
in src/apps/frontend/src/navigation
4 - 2026-10-02 2026-10-02 1 1 +10 / -0 joshua.anderson joshua.anderson
NotificationAlert.tsx
in src/apps/frontend/src
191 - 2026-09-25 2026-10-01 4 2 +784 / -178 joshua.anderson david.blatcher
NotificationAlert.stories.tsx
in src/apps/frontend/src
161 4 2026-09-29 2026-10-01 3 2 +606 / -78 joshua.anderson david.blatcher
0005_structured_dispatch_targets.sql
in src/packages/database/migrations
79 - 2026-09-08 2026-09-15 2 2 +336 / -39 laurynas.karvelis david.blatcher
DispatchInformationModal.stories.tsx
in src/apps/frontend/src/compose
73 7 2026-09-28 2026-10-01 2 2 +188 / -28 60498278+apeacewilliams simona.spiridon
verify-remote-database-connection.ts
in src/packages/database/scripts/env/remote/helpers
61 1 2026-08-13 2026-08-17 3 2 +219 / -0 simona.spiridon luxmi.r.pillai
53 1 2026-07-16 2026-07-17 2 2 +191 / -2 laurynas.karvelis david.blatcher
cli-args.ts
in src/packages/database/scripts/env/remote/helpers
49 - 2026-08-13 2026-08-17 3 2 +189 / -3 simona.spiridon luxmi.r.pillai
prepare-and-apply-remote-db-migrations.ts
in src/packages/database/scripts/env/remote
47 1 2026-08-13 2026-08-17 3 2 +261 / -60 simona.spiridon luxmi.r.pillai
audience-edition-label.ts
in src/apps/frontend/src/utils
45 - 2026-10-01 2026-10-01 1 2 +144 / -0 david.blatcher joshua.anderson
permissions.ts
in src/apps/backend/utils/test-utils
43 - 2026-07-28 2026-07-30 3 2 +191 / -5 laurynas.karvelis luxmi.r.pillai
process.ts
in src/packages/database/scripts/helpers
41 - 2026-08-14 2026-08-17 2 2 +132 / -0 simona.spiridon luxmi.r.pillai
LiveIndicator.tsx
in src/apps/frontend/src/ui
38 1 2026-09-29 2026-10-02 4 2 +124 / -8 david.blatcher david.blatcher
braze-client.ts
in src/apps/backend
37 - 2026-09-04 2026-09-15 2 2 +138 / -0 simona.spiridon david.blatcher
create-db-migration.ts
in src/packages/database/scripts/env/development
35 - 2026-08-13 2026-08-17 3 2 +172 / -10 simona.spiridon luxmi.r.pillai
EmptyState.stories.tsx
in src/apps/frontend/src/ui
35 3 2026-09-21 2026-09-22 2 2 +161 / -1 simona.spiridon simona.spiridon
runtime-connection-string.ts
in src/packages/database
30 - 2026-08-13 2026-08-17 3 2 +117 / -0 simona.spiridon luxmi.r.pillai
pan-domain-authentication.ts
in src/apps/backend/utils/auth
29 - 2026-07-27 2026-07-30 4 2 +123 / -18 laurynas.karvelis luxmi.r.pillai
usePreviousNotifications.ts
in src/apps/frontend/src/hooks
26 - 2026-09-23 2026-09-28 3 2 +91 / -33 david.blatcher 30567854+dblatcher
dispatch-outcome.ts
in src/apps/backend/notification-channels
26 - 2026-09-08 2026-09-15 2 2 +151 / -10 laurynas.karvelis david.blatcher
server.ts
in src/apps/backend/utils/test-utils
22 - 2026-07-27 2026-07-30 3 2 +93 / -0 laurynas.karvelis luxmi.r.pillai
database-environment.ts
in src/packages/database
19 - 2026-08-13 2026-08-17 3 2 +78 / -6 simona.spiridon luxmi.r.pillai
managed-database-secret.ts
in src/packages/database
12 - 2026-08-13 2026-08-17 3 2 +45 / -0 simona.spiridon luxmi.r.pillai
index.ts
in src/apps/frontend/src
12 - 2026-07-09 2026-08-04 8 2 +106 / -68 laurynas.karvelis 60498278+apeacewilliams
2 - 2026-09-07 2026-09-15 2 2 +8 / -0 laurynas.karvelis david.blatcher
support-links.ts
in src/apps/frontend/src
2 - 2026-09-28 2026-10-01 2 2 +15 / -11 60498278+apeacewilliams simona.spiridon
0004_add_notifications_failed_targets.sql
in src/packages/database/migrations
1 - 2026-09-07 2026-09-15 3 2 +3 / -0 laurynas.karvelis david.blatcher
PreviousNotificationsBar.tsx
in src/apps/frontend/src/compose
297 9 2026-09-23 2026-10-02 6 3 +1085 / -455 david.blatcher joshua.anderson
mockServiceWorker.js
in src/apps/frontend/public
232 11 2026-07-23 2026-08-07 3 3 +1805 / -0 60498278+apeacewilliams david.blatcher
SideNavigationPanel.tsx
in src/apps/frontend/src/compose
207 2 2026-09-21 2026-09-23 3 3 +908 / -0 joshua.anderson simona.spiridon
PreviousNotificationsBar.stories.tsx
in src/apps/frontend/src/compose
160 13 2026-09-23 2026-10-02 6 3 +398 / -38 david.blatcher joshua.anderson
index.ts
in src/apps/backend/routers/grafana
149 2 2026-09-09 2026-09-18 5 3 +945 / -75 simona.spiridon simona.spiridon
grid-api.ts
in src/apps/frontend/src/grid-client
124 - 2026-09-22 2026-09-24 3 3 +580 / -0 david.blatcher 73653255+lakshmirpillai
aws.ts
in src/packages/database/scripts/env/remote/helpers
110 - 2026-08-13 2026-09-15 5 3 +392 / -17 simona.spiridon david.blatcher
grid.ts
in src/packages/models
100 - 2026-09-17 2026-09-24 4 3 +458 / -22 david.blatcher 73653255+lakshmirpillai
HistoryPagination.tsx
in src/apps/frontend/src/history
96 2 2026-09-02 2026-09-15 3 3 +300 / -0 60498278+apeacewilliams david.blatcher
DispatchInformationModal.tsx
in src/apps/frontend/src/compose
84 - 2026-09-28 2026-10-01 3 3 +251 / -42 60498278+apeacewilliams david.blatcher
grid-url-parsing.ts
in src/apps/frontend/src/grid-client
69 - 2026-09-22 2026-09-24 3 3 +308 / -0 david.blatcher 73653255+lakshmirpillai
ChannelDisplay.tsx
in src/apps/frontend/src/compose
67 - 2026-09-02 2026-09-15 4 3 +214 / -1 60498278+apeacewilliams david.blatcher
start-remote-db-port-forward.ts
in src/packages/database/scripts/env/remote
60 - 2026-08-14 2026-09-15 4 3 +249 / -12 simona.spiridon david.blatcher
SideNavigationPanel.stories.tsx
in src/apps/frontend/src/compose
60 4 2026-09-21 2026-09-23 3 3 +264 / -0 joshua.anderson simona.spiridon
errors.ts
in src/apps/frontend/src/api-client
55 - 2026-09-02 2026-09-15 3 3 +270 / -0 60498278+apeacewilliams david.blatcher
notification-dispatches-repository.dbtest.ts
in src/packages/database/repositories
51 - 2026-08-20 2026-09-15 4 3 +311 / -2 laurynas.karvelis david.blatcher
DeliveryAndTimingSelector.tsx
in src/apps/frontend/src/send
48 - 2026-09-02 2026-09-15 4 3 +157 / -4 60498278+apeacewilliams david.blatcher
TextLinkButton.tsx
in src/apps/frontend/src/ui
43 - 2026-09-02 2026-09-15 3 3 +132 / -0 60498278+apeacewilliams david.blatcher
Correlations

File Size vs. Number of Changes: 309 points

src/apps/frontend/src/compose/ArticlePreviewCard.tsx x: 78 lines of code y: 13 # changes src/apps/frontend/src/compose/DispatchCreateNotificationModal.tsx x: 61 lines of code y: 10 # changes src/apps/frontend/src/latest-content/LatestPublishedContentCard.tsx x: 55 lines of code y: 9 # changes src/apps/frontend/src/ui/LiveIndicator.tsx x: 38 lines of code y: 4 # changes src/apps/frontend/src/utils/pillar-colors.ts x: 22 lines of code y: 4 # changes src/apps/frontend/src/history/DispatchLandingHistoryView.stories.tsx x: 129 lines of code y: 5 # changes src/apps/frontend/src/themes.ts x: 1452 lines of code y: 22 # changes src/apps/frontend/src/history/DispatchLandingHistoryView.tsx x: 107 lines of code y: 5 # changes src/apps/frontend/src/history/HistoryTable.tsx x: 301 lines of code y: 16 # changes src/apps/frontend/src/history/HistoryView.stories.tsx x: 316 lines of code y: 18 # changes src/apps/frontend/src/history/HistoryView.tsx x: 114 lines of code y: 19 # changes src/apps/frontend/src/compose/CreateAppAlertForm.stories.tsx x: 554 lines of code y: 21 # changes src/apps/frontend/src/compose/CreateNewsletterEmailForm.stories.tsx x: 412 lines of code y: 9 # changes src/apps/frontend/src/compose/NotificationFormWrapper.tsx x: 116 lines of code y: 15 # changes src/apps/frontend/src/frontend.tsx x: 55 lines of code y: 20 # changes src/apps/frontend/src/hooks/useUnsavedChanges.ts x: 20 lines of code y: 1 # changes src/apps/frontend/src/navigation/UnsavedChangesContext.ts x: 4 lines of code y: 1 # changes src/apps/frontend/src/compose/AppAlertReplaceImageSection.tsx x: 106 lines of code y: 14 # changes src/apps/frontend/src/compose/DispatchLandingPage.tsx x: 151 lines of code y: 10 # changes src/apps/frontend/src/hooks/useImageUrlCheck.ts x: 106 lines of code y: 2 # changes src/apps/frontend/src/compose/PreviousNotificationsBar.stories.tsx x: 160 lines of code y: 6 # changes src/apps/frontend/src/compose/PreviousNotificationsBar.tsx x: 297 lines of code y: 6 # changes src/apps/frontend/src/ui/Tooltip.tsx x: 146 lines of code y: 10 # changes src/apps/frontend/src/utils/relative-time.ts x: 88 lines of code y: 8 # changes src/apps/backend/middleware/serve-index.ts x: 53 lines of code y: 21 # changes src/apps/frontend/src/compose/DispatchInformationModal.stories.tsx x: 73 lines of code y: 2 # changes src/apps/frontend/src/compose/DispatchInformationModal.tsx x: 84 lines of code y: 3 # changes src/apps/frontend/src/compose/DispatchLandingPage.stories.tsx x: 360 lines of code y: 10 # changes src/apps/frontend/src/support-links.ts x: 2 lines of code y: 2 # changes src/apps/frontend/src/testing/app-config.ts x: 20 lines of code y: 7 # changes src/packages/models/frontend-app-config.ts x: 13 lines of code y: 13 # changes cdk/lib/notifications.ts x: 331 lines of code y: 28 # changes src/apps/backend/routers/content/index.ts x: 170 lines of code y: 15 # changes src/apps/frontend/src/compose/ArticlePreviewCard.stories.tsx x: 172 lines of code y: 12 # changes src/apps/frontend/src/testing/capi-fixtures.ts x: 78 lines of code y: 6 # changes src/apps/frontend/src/utils/article-presentation.ts x: 30 lines of code y: 8 # changes src/apps/frontend/src/utils/article-thumbnail.ts x: 27 lines of code y: 10 # changes src/apps/frontend/src/NotificationAlert.stories.tsx x: 161 lines of code y: 3 # changes src/apps/frontend/src/NotificationAlert.tsx x: 191 lines of code y: 4 # changes src/apps/frontend/src/history/HistoryAudienceFilter.tsx x: 103 lines of code y: 6 # changes src/apps/frontend/src/history/HistoryPage.stories.tsx x: 909 lines of code y: 17 # changes src/apps/frontend/src/history/HistorySenderFilter.tsx x: 112 lines of code y: 4 # changes src/apps/frontend/src/layout/DispatchTile.stories.tsx x: 70 lines of code y: 7 # changes src/apps/frontend/src/preview/AppAlertPreviewSection.stories.tsx x: 22 lines of code y: 5 # changes src/apps/frontend/src/segment/Editions.stories.tsx x: 48 lines of code y: 6 # changes src/apps/frontend/src/segment/Editions.tsx x: 45 lines of code y: 9 # changes src/apps/frontend/src/segment/EditionsFormField.tsx x: 32 lines of code y: 8 # changes src/apps/frontend/src/segment/audience-fallbacks.ts x: 42 lines of code y: 9 # changes src/apps/frontend/src/segment/edition-options.ts x: 12 lines of code y: 5 # changes src/apps/frontend/src/send/DispatchReport.tsx x: 422 lines of code y: 12 # changes src/apps/frontend/src/testing/handlers/channels.ts x: 81 lines of code y: 6 # changes src/apps/frontend/src/ui/PreviewPillList.stories.tsx x: 32 lines of code y: 9 # changes src/apps/frontend/src/utils/audience-edition-label.ts x: 45 lines of code y: 1 # changes src/apps/frontend/src/utils/display-text-helpers.ts x: 24 lines of code y: 10 # changes src/apps/frontend/src/utils/format-dispatch-target.ts x: 35 lines of code y: 3 # changes src/apps/frontend/src/utils/notification-history-mapper.ts x: 145 lines of code y: 8 # changes src/packages/config/audiences.ts x: 409 lines of code y: 27 # changes src/apps/frontend/.storybook/preview.tsx x: 42 lines of code y: 23 # changes src/apps/frontend/src/AccessControlledLayout.tsx x: 27 lines of code y: 7 # changes src/apps/frontend/src/compose/CreateAppAlertTab.stories.tsx x: 730 lines of code y: 18 # changes src/apps/frontend/src/compose/DispatchCreateNotificationModal.stories.tsx x: 97 lines of code y: 7 # changes src/apps/frontend/src/compose/NotificationFormProvider.stories.tsx x: 128 lines of code y: 14 # changes src/apps/frontend/src/hooks/useNotificationHistory.ts x: 143 lines of code y: 15 # changes src/apps/frontend/src/hooks/useRelativeTime.ts x: 75 lines of code y: 7 # changes src/apps/frontend/src/latest-content/LatestPublishedContentCard.stories.tsx x: 56 lines of code y: 8 # changes src/apps/frontend/src/latest-content/LatestPublishedContentPanel.stories.tsx x: 277 lines of code y: 10 # changes src/apps/frontend/src/latest-content/LatestPublishedContentPanel.tsx x: 169 lines of code y: 10 # changes src/apps/frontend/src/latest-content/latest-published-content.ts x: 126 lines of code y: 8 # changes src/apps/frontend/src/send/TestEmailForm.stories.tsx x: 199 lines of code y: 11 # changes src/apps/frontend/src/testing/handlers/notifications.ts x: 27 lines of code y: 5 # changes src/apps/frontend/src/ui/EmptyState.tsx x: 32 lines of code y: 7 # changes src/packages/models/capi.ts x: 149 lines of code y: 14 # changes src/packages/services/capi/client.ts x: 169 lines of code y: 18 # changes src/apps/frontend/src/compose/NotificationTabLayout.tsx x: 101 lines of code y: 13 # changes src/apps/frontend/src/layout/NoPermissionsTab.tsx x: 25 lines of code y: 4 # changes src/apps/frontend/src/compose/ArticleImportControl.tsx x: 222 lines of code y: 14 # changes src/apps/frontend/src/hooks/usePreviousNotifications.ts x: 26 lines of code y: 3 # changes src/apps/frontend/src/testing/api-fixtures.ts x: 287 lines of code y: 12 # changes src/apps/frontend/src/utils/history-send-time.ts x: 62 lines of code y: 7 # changes src/packages/models/index.ts x: 8 lines of code y: 19 # changes src/apps/frontend/src/compose/ReviewWarning.tsx x: 62 lines of code y: 3 # changes src/apps/frontend/src/preview/PreviewToggle.stories.tsx x: 82 lines of code y: 12 # changes src/apps/frontend/src/preview/PreviewToggle.tsx x: 51 lines of code y: 9 # changes src/apps/frontend/src/ui/CollapsibleSection.stories.tsx x: 66 lines of code y: 1 # changes src/apps/frontend/src/ui/CollapsibleSection.tsx x: 60 lines of code y: 1 # changes src/apps/frontend/src/ui/SendTimeTooltip.tsx x: 42 lines of code y: 6 # changes src/apps/frontend/src/App.tsx x: 61 lines of code y: 28 # changes src/apps/frontend/src/layout/MainLayout.tsx x: 118 lines of code y: 13 # changes src/apps/frontend/src/layout/NotFoundTab.tsx x: 29 lines of code y: 5 # changes src/apps/frontend/src/routes.ts x: 97 lines of code y: 10 # changes src/apps/frontend/src/compose/CreateAppAlertForm.tsx x: 127 lines of code y: 15 # changes src/apps/frontend/src/compose/CreateAppAlertTab.tsx x: 48 lines of code y: 14 # changes src/apps/frontend/src/compose/CreateNewsletterEmailForm.tsx x: 129 lines of code y: 8 # changes src/apps/frontend/src/compose/CreateNewsletterEmailTab.stories.tsx x: 499 lines of code y: 14 # changes src/apps/frontend/src/compose/CreateNewsletterEmailTab.tsx x: 54 lines of code y: 16 # changes src/apps/frontend/src/send/DispatchReport.stories.tsx x: 291 lines of code y: 13 # changes src/apps/frontend/src/compose/ArticleThumbnailImageFormField.tsx x: 145 lines of code y: 14 # changes src/apps/frontend/src/testing/story-fixtures.ts x: 38 lines of code y: 7 # changes src/apps/frontend/src/utils/build-request-payloads.ts x: 129 lines of code y: 11 # changes src/apps/frontend/src/utils/notification-forms.ts x: 86 lines of code y: 10 # changes src/apps/backend/persistence/persist-notification.ts x: 224 lines of code y: 12 # changes src/apps/backend/routers/notifications/index.ts x: 340 lines of code y: 33 # changes src/apps/backend/routers/notifications/schemas/notification-list-query.ts x: 125 lines of code y: 11 # changes src/apps/backend/routers/notifications/schemas/notification-send-request.ts x: 454 lines of code y: 22 # changes src/apps/backend/utils/test-utils/database.ts x: 106 lines of code y: 17 # changes src/apps/frontend/src/history/ClearHistoryFiltersButton.tsx x: 34 lines of code y: 5 # changes src/apps/frontend/src/history/HistoryAlertTypeFilter.tsx x: 107 lines of code y: 4 # changes src/apps/frontend/src/history/HistoryChannelFilter.tsx x: 96 lines of code y: 2 # changes src/apps/frontend/src/history/HistoryFailureTooltip.tsx x: 121 lines of code y: 5 # changes src/apps/frontend/src/history/HistoryPage.tsx x: 120 lines of code y: 15 # changes src/apps/frontend/src/history/HistoryStatusFilter.tsx x: 96 lines of code y: 5 # changes src/apps/frontend/src/segment/SegmentPicker.tsx x: 95 lines of code y: 9 # changes src/apps/frontend/src/send/SendInfoPreviewPill.tsx x: 118 lines of code y: 9 # changes src/apps/frontend/src/types.ts x: 68 lines of code y: 13 # changes src/apps/frontend/src/utils/history-search-params.ts x: 132 lines of code y: 9 # changes src/packages/config/channels.ts x: 20 lines of code y: 18 # changes src/packages/database/migrations/0007_add_notifications_article_id.sql x: 28 lines of code y: 2 # changes src/packages/database/repositories/notifications-repository.dbtest.ts x: 779 lines of code y: 15 # changes src/packages/database/repositories/notifications-repository.ts x: 287 lines of code y: 17 # changes src/packages/database/schema/notifications.ts x: 77 lines of code y: 12 # changes src/packages/models/notification-channel.ts x: 12 lines of code y: 2 # changes src/apps/frontend/src/schemas.ts x: 229 lines of code y: 9 # changes src/packages/database/index.ts x: 24 lines of code y: 21 # changes src/apps/frontend/src/compose/NotificationFormContext.tsx x: 73 lines of code y: 7 # changes src/apps/frontend/src/grid-client/grid-api.ts x: 124 lines of code y: 3 # changes src/apps/frontend/src/grid-client/grid-url-parsing.ts x: 69 lines of code y: 3 # changes src/apps/frontend/src/hooks/useLatestPublishedContent.ts x: 35 lines of code y: 5 # changes src/apps/frontend/src/hooks/useNotificationSenders.ts x: 21 lines of code y: 3 # changes src/apps/frontend/src/hooks/useSendNotification.ts x: 58 lines of code y: 8 # changes src/apps/frontend/src/testing/grid-fixtures.ts x: 18 lines of code y: 3 # changes src/apps/frontend/src/ui/RefreshButton.tsx x: 52 lines of code y: 6 # changes src/apps/frontend/src/utils/form-validation.tsx x: 149 lines of code y: 15 # changes src/packages/models/grid.ts x: 100 lines of code y: 4 # changes src/apps/backend/routers/notifications/index.dbtest.ts x: 711 lines of code y: 13 # changes src/apps/frontend/src/compose/SideNavigationPanel.stories.tsx x: 60 lines of code y: 3 # changes src/apps/frontend/src/compose/SideNavigationPanel.tsx x: 207 lines of code y: 3 # changes src/apps/frontend/src/history/HistoryEmptyState.tsx x: 18 lines of code y: 9 # changes src/apps/frontend/src/preview/AndroidAlertPreview.tsx x: 109 lines of code y: 7 # changes src/apps/frontend/src/preview/IPhoneAlertPreview.tsx x: 113 lines of code y: 8 # changes src/apps/frontend/src/send/SendConfirmationModal.tsx x: 68 lines of code y: 6 # changes src/apps/frontend/src/ui/GuardianLogo.tsx x: 31 lines of code y: 3 # changes src/apps/frontend/src/compose/PreviewTextFormField.tsx x: 92 lines of code y: 11 # changes src/apps/frontend/src/preview/NewsletterEmailPreviewSection.stories.tsx x: 111 lines of code y: 7 # changes src/apps/frontend/src/ui/EmptyState.stories.tsx x: 35 lines of code y: 2 # changes src/apps/frontend/src/history/HistorySearchFilter.tsx x: 52 lines of code y: 3 # changes src/packages/database/test-helpers.ts x: 112 lines of code y: 10 # changes src/packages/models/api-contract/audience.ts x: 141 lines of code y: 8 # changes src/apps/frontend/src/hooks/useDebouncedValue.ts x: 12 lines of code y: 3 # changes src/apps/frontend/src/hooks/useNotificationDetail.ts x: 28 lines of code y: 3 # changes src/apps/frontend/src/preview/HTMLPreview.tsx x: 157 lines of code y: 11 # changes src/apps/frontend/src/preview/NewsletterEmailPreview.stories.tsx x: 31 lines of code y: 4 # changes src/apps/frontend/src/preview/NewsletterEmailPreviewSection.tsx x: 62 lines of code y: 5 # changes src/apps/frontend/src/send/SendFailedModal.tsx x: 281 lines of code y: 10 # changes src/apps/frontend/src/testing/mock-fetch-email.ts x: 69 lines of code y: 6 # changes src/apps/backend/app.ts x: 95 lines of code y: 33 # changes src/apps/backend/routers/grafana/index.ts x: 149 lines of code y: 5 # changes src/apps/frontend/src/api-client/redirect-to-login.ts x: 5 lines of code y: 4 # changes src/apps/frontend/src/compose/AlertTypeFormField.tsx x: 37 lines of code y: 9 # changes src/apps/frontend/src/compose/CharacterCount.tsx x: 85 lines of code y: 6 # changes src/apps/frontend/src/compose/CreateFormTitle.tsx x: 42 lines of code y: 7 # changes src/apps/frontend/src/compose/DeliveryOptionFormField.tsx x: 30 lines of code y: 7 # changes src/apps/frontend/src/compose/KickerFormField.tsx x: 40 lines of code y: 8 # changes src/apps/frontend/src/compose/NotificationFormProvider.tsx x: 96 lines of code y: 7 # changes src/apps/frontend/src/compose/NotificationTextInput.stories.tsx x: 131 lines of code y: 9 # changes src/apps/frontend/src/compose/NotificationTextInput.tsx x: 159 lines of code y: 6 # changes src/apps/frontend/src/compose/SubjectFormField.tsx x: 45 lines of code y: 8 # changes src/apps/frontend/src/hooks/useChannelConstraints.ts x: 38 lines of code y: 6 # changes src/apps/frontend/src/layout/MainLayout.stories.tsx x: 97 lines of code y: 8 # changes src/apps/frontend/src/layout/constants.ts x: 2 lines of code y: 5 # changes src/apps/frontend/src/preview/AndroidAlertPreview.stories.tsx x: 62 lines of code y: 9 # changes src/apps/frontend/src/preview/AppAlertPreviewSection.tsx x: 91 lines of code y: 4 # changes src/apps/frontend/src/preview/IPhoneAlertPreview.stories.tsx x: 58 lines of code y: 9 # changes src/apps/frontend/src/preview/PreviewSection.tsx x: 77 lines of code y: 5 # changes src/apps/frontend/src/segment/AudienceSegmentsFormField.tsx x: 24 lines of code y: 7 # changes src/apps/frontend/src/segment/useAudienceEditions.ts x: 40 lines of code y: 4 # changes src/apps/frontend/src/segment/useChannelAudiences.ts x: 37 lines of code y: 8 # changes src/apps/frontend/src/send/DeliveryAndTimingSelector.stories.tsx x: 100 lines of code y: 8 # changes src/apps/frontend/src/send/SendConfirmationModal.stories.tsx x: 47 lines of code y: 4 # changes src/apps/frontend/src/send/TestEmailForm.tsx x: 217 lines of code y: 10 # changes src/apps/frontend/src/testing/mock-resolve-article-from-capi.ts x: 15 lines of code y: 3 # changes src/apps/frontend/src/testing/mock-send-notification.ts x: 23 lines of code y: 9 # changes src/apps/frontend/src/testing/useNotificationFormStory.tsx x: 89 lines of code y: 4 # changes src/apps/frontend/src/ui/FlagAtom.tsx x: 31 lines of code y: 6 # changes src/apps/frontend/src/ui/LastUpdated.tsx x: 23 lines of code y: 7 # changes src/apps/frontend/src/ui/SelectableTile.tsx x: 106 lines of code y: 6 # changes src/apps/frontend/src/ui/flag-icons.tsx x: 186 lines of code y: 4 # changes src/apps/frontend/src/utils/newsletter-email-subject.ts x: 9 lines of code y: 4 # changes src/apps/frontend/src/utils/notification-composer-reducer.ts x: 99 lines of code y: 4 # changes src/apps/frontend/src/utils/resolve-article-from-capi.ts x: 19 lines of code y: 3 # changes src/apps/backend/middleware/error-middleware.ts x: 34 lines of code y: 13 # changes src/apps/backend/notification-channels/newsletter/dispatch-newsletter-test.ts x: 149 lines of code y: 11 # changes src/apps/backend/notification-channels/newsletter/dispatch-newsletter.ts x: 131 lines of code y: 14 # changes src/apps/frontend/src/ui/ExternalLink.tsx x: 8 lines of code y: 2 # changes src/packages/database/schema/notification-dispatches.ts x: 69 lines of code y: 9 # changes src/packages/services/email-rendering/client.ts x: 97 lines of code y: 9 # changes eslint.config.js x: 39 lines of code y: 17 # changes src/apps/backend/notification-channels/app-push/dispatch-app-push-test.ts x: 37 lines of code y: 10 # changes src/apps/backend/notification-channels/app-push/dispatch-app-push.ts x: 169 lines of code y: 16 # changes src/apps/backend/notification-channels/dispatch-notification-test.ts x: 32 lines of code y: 10 # changes src/apps/backend/notification-channels/dispatch-notification.ts x: 43 lines of code y: 19 # changes src/apps/backend/notification-channels/test-support.ts x: 87 lines of code y: 9 # changes src/apps/frontend/src/api-client/client.ts x: 175 lines of code y: 5 # changes src/apps/frontend/src/index.html x: 39 lines of code y: 11 # changes src/apps/frontend/src/preview/PreviewSection.stories.tsx x: 10 lines of code y: 5 # changes src/apps/frontend/src/ui/LastUpdated.stories.tsx x: 32 lines of code y: 4 # changes src/apps/frontend/src/utils/send-notification.ts x: 53 lines of code y: 5 # changes src/packages/services/mobile-n10n/client.ts x: 132 lines of code y: 8 # changes src/packages/utils/urls.ts x: 61 lines of code y: 11 # changes src/apps/backend/braze-client.ts x: 37 lines of code y: 2 # changes src/apps/backend/middleware/static-assets-middleware.ts x: 15 lines of code y: 5 # changes src/apps/backend/notification-channels/dispatch-outcome.ts x: 26 lines of code y: 2 # changes src/apps/backend/notification-channels/shared.ts x: 48 lines of code y: 5 # changes src/apps/backend/routers/channels/index.ts x: 137 lines of code y: 22 # changes src/apps/frontend/bunfig.toml x: 2 lines of code y: 10 # changes src/apps/frontend/src/api-client/config.ts x: 1 lines of code y: 3 # changes src/apps/frontend/src/api-client/errors.ts x: 55 lines of code y: 3 # changes src/apps/frontend/src/compose/ChannelDisplay.tsx x: 67 lines of code y: 4 # changes src/apps/frontend/src/config/ConfigContext.tsx x: 3 lines of code y: 3 # changes src/apps/frontend/src/config/get-config.ts x: 9 lines of code y: 3 # changes src/apps/frontend/src/history/HistoryPagination.tsx x: 96 lines of code y: 3 # changes src/apps/frontend/src/send/DeliveryAndTimingSelector.tsx x: 48 lines of code y: 4 # changes src/apps/frontend/src/send/SendButton.tsx x: 43 lines of code y: 3 # changes src/packages/config/index.ts x: 17 lines of code y: 20 # changes src/packages/database/client.ts x: 29 lines of code y: 14 # changes src/packages/database/drizzle.config.ts x: 10 lines of code y: 14 # changes src/packages/database/migrations/0000_initial.sql x: 33 lines of code y: 3 # changes src/packages/database/migrations/0002_add_notifications_created_at_index.sql x: 1 lines of code y: 4 # changes src/packages/database/migrations/0005_structured_dispatch_targets.sql x: 79 lines of code y: 2 # changes src/packages/database/repositories/notification-dispatches-repository.dbtest.ts x: 51 lines of code y: 4 # changes src/packages/database/repositories/notification-dispatches-repository.ts x: 40 lines of code y: 5 # changes src/packages/database/scripts/env/remote/helpers/aws.ts x: 110 lines of code y: 5 # changes src/packages/database/scripts/env/remote/start-remote-db-port-forward.ts x: 60 lines of code y: 4 # changes src/packages/models/user-permissions.ts x: 4 lines of code y: 2 # changes src/packages/services/braze/client.ts x: 317 lines of code y: 8 # changes src/apps/backend/middleware/auth-middleware.ts x: 58 lines of code y: 11 # changes src/packages/database/scripts/env/remote/helpers/cli-args.ts x: 49 lines of code y: 3 # changes src/packages/database/scripts/env/remote/prepare-and-apply-remote-db-migrations.ts x: 47 lines of code y: 3 # changes src/packages/database/scripts/helpers/process.ts x: 41 lines of code y: 2 # changes src/packages/services/index.ts x: 4 lines of code y: 5 # changes cdk/lib/register-stacks.ts x: 16 lines of code y: 4 # changes src/packages/config/ssm.ts x: 119 lines of code y: 10 # changes src/apps/backend/routers/health/index.ts x: 5 lines of code y: 6 # changes docker/docker-compose.local.yml x: 18 lines of code y: 10 # changes src/apps/backend/utils/test-utils/panda-auth.ts x: 55 lines of code y: 7 # changes src/apps/frontend/public/mockServiceWorker.js x: 232 lines of code y: 3 # changes src/apps/backend/routers/user/index.ts x: 13 lines of code y: 9 # changes src/apps/frontend/src/index.ts x: 12 lines of code y: 8 # changes src/apps/backend/client-assets.ts x: 7 lines of code y: 4 # changes src/packages/http-logger/logger.ts x: 44 lines of code y: 4 # changes src/apps/backend/index.ts x: 6 lines of code y: 6 # changes scripts/check-pinned-deps.ts x: 53 lines of code y: 2 # changes src/apps/frontend/src/index.css x: 20 lines of code y: 4 # changes
33.0
# changes
  min: 1.0
  average: 7.76
  25th percentile: 3.0
  median: 6.0
  75th percentile: 10.0
  max: 33.0
0 1452.0
lines of code
min: 1.0 | average: 93.4 | 25th percentile: 25.0 | median: 49.0 | 75th percentile: 110.5 | max: 1452.0

Number of Contributors vs. Number of Changes: 309 points

src/apps/frontend/src/compose/ArticlePreviewCard.tsx x: 8 # contributors y: 13 # changes src/apps/frontend/src/compose/DispatchCreateNotificationModal.tsx x: 9 # contributors y: 10 # changes src/apps/frontend/src/latest-content/LatestPublishedContentCard.tsx x: 7 # contributors y: 9 # changes src/apps/frontend/src/ui/LiveIndicator.tsx x: 2 # contributors y: 4 # changes src/apps/frontend/src/utils/pillar-colors.ts x: 4 # contributors y: 4 # changes src/apps/frontend/src/history/DispatchLandingHistoryView.stories.tsx x: 4 # contributors y: 5 # changes src/apps/frontend/src/themes.ts x: 8 # contributors y: 22 # changes src/apps/frontend/src/compose/ScrollWrapper.tsx x: 5 # contributors y: 4 # changes src/apps/frontend/src/history/DispatchLandingHistoryView.tsx x: 6 # contributors y: 5 # changes src/apps/frontend/src/history/HistoryTable.tsx x: 6 # contributors y: 16 # changes src/apps/frontend/src/history/HistoryView.stories.tsx x: 7 # contributors y: 18 # changes src/apps/frontend/src/history/HistoryView.tsx x: 7 # contributors y: 19 # changes src/apps/frontend/src/compose/CreateAppAlertForm.stories.tsx x: 8 # contributors y: 21 # changes src/apps/frontend/src/compose/NotificationFormWrapper.tsx x: 8 # contributors y: 15 # changes src/apps/frontend/src/frontend.tsx x: 7 # contributors y: 20 # changes src/apps/frontend/src/hooks/useUnsavedChanges.ts x: 1 # contributors y: 1 # changes src/apps/frontend/src/compose/AppAlertReplaceImageSection.tsx x: 7 # contributors y: 14 # changes src/apps/frontend/src/compose/DispatchLandingPage.tsx x: 7 # contributors y: 10 # changes src/apps/frontend/src/hooks/useImageUrlCheck.ts x: 1 # contributors y: 2 # changes src/apps/frontend/src/compose/PreviousNotificationsBar.stories.tsx x: 3 # contributors y: 6 # changes src/apps/frontend/src/utils/relative-time.ts x: 7 # contributors y: 8 # changes src/apps/frontend/src/compose/DispatchInformationModal.stories.tsx x: 2 # contributors y: 2 # changes src/apps/frontend/src/compose/DispatchInformationModal.tsx x: 3 # contributors y: 3 # changes src/apps/frontend/src/testing/app-config.ts x: 6 # contributors y: 7 # changes src/packages/models/frontend-app-config.ts x: 5 # contributors y: 13 # changes cdk/lib/notifications.ts x: 9 # contributors y: 28 # changes src/apps/frontend/src/compose/ArticlePreviewCard.stories.tsx x: 8 # contributors y: 12 # changes src/apps/frontend/src/testing/capi-fixtures.ts x: 7 # contributors y: 6 # changes src/apps/frontend/src/utils/article-presentation.ts x: 8 # contributors y: 8 # changes src/apps/frontend/src/utils/article-thumbnail.ts x: 8 # contributors y: 10 # changes src/apps/frontend/src/NotificationAlert.stories.tsx x: 2 # contributors y: 3 # changes src/apps/frontend/src/history/HistoryAudienceFilter.tsx x: 6 # contributors y: 6 # changes src/apps/frontend/src/history/HistoryPage.stories.tsx x: 7 # contributors y: 17 # changes src/apps/frontend/src/history/HistorySenderFilter.tsx x: 6 # contributors y: 4 # changes src/apps/frontend/src/segment/Editions.stories.tsx x: 5 # contributors y: 6 # changes src/apps/frontend/src/segment/EditionsFormField.tsx x: 6 # contributors y: 8 # changes src/apps/frontend/src/ui/PreviewPillList.stories.tsx x: 6 # contributors y: 9 # changes src/apps/frontend/src/utils/audience-edition-label.ts x: 2 # contributors y: 1 # changes src/apps/frontend/src/utils/display-text-helpers.ts x: 6 # contributors y: 10 # changes src/packages/config/audiences.ts x: 9 # contributors y: 27 # changes src/apps/frontend/.storybook/main.ts x: 7 # contributors y: 13 # changes src/apps/frontend/.storybook/preview.tsx x: 8 # contributors y: 23 # changes src/apps/frontend/src/compose/CreateAppAlertTab.stories.tsx x: 9 # contributors y: 18 # changes src/apps/frontend/src/compose/DispatchCreateNotificationModal.stories.tsx x: 7 # contributors y: 7 # changes src/apps/frontend/src/hooks/useNotificationHistory.ts x: 7 # contributors y: 15 # changes src/apps/frontend/src/latest-content/latest-published-content.ts x: 5 # contributors y: 8 # changes src/apps/frontend/src/send/TestEmailForm.stories.tsx x: 7 # contributors y: 11 # changes src/apps/frontend/src/ui/EmptyState.tsx x: 4 # contributors y: 7 # changes src/packages/models/capi.ts x: 8 # contributors y: 14 # changes src/packages/services/capi/client.ts x: 8 # contributors y: 18 # changes src/apps/frontend/src/compose/NoSendPermissionWarning.tsx x: 3 # contributors y: 5 # changes src/apps/frontend/src/layout/NoPermissionsTab.tsx x: 3 # contributors y: 4 # changes src/apps/frontend/src/compose/ArticleImportControl.tsx x: 9 # contributors y: 14 # changes src/apps/frontend/src/testing/api-fixtures.ts x: 9 # contributors y: 12 # changes src/packages/models/index.ts x: 8 # contributors y: 19 # changes src/apps/frontend/src/compose/ReviewWarning.tsx x: 5 # contributors y: 3 # changes src/apps/frontend/src/preview/PreviewToggle.stories.tsx x: 6 # contributors y: 12 # changes src/apps/frontend/src/layout/MainLayout.tsx x: 6 # contributors y: 13 # changes src/apps/frontend/src/compose/CreateNewsletterEmailTab.tsx x: 8 # contributors y: 16 # changes src/apps/frontend/src/utils/build-request-payloads.ts x: 8 # contributors y: 11 # changes src/apps/backend/persistence/persist-notification.ts x: 5 # contributors y: 12 # changes src/apps/backend/routers/notifications/index.ts x: 10 # contributors y: 33 # changes src/apps/backend/routers/notifications/schemas/notification-send-request.ts x: 9 # contributors y: 22 # changes src/apps/backend/utils/test-utils/database.ts x: 5 # contributors y: 17 # changes src/apps/frontend/src/history/ClearHistoryFiltersButton.tsx x: 7 # contributors y: 5 # changes src/apps/frontend/src/history/HistoryChannelFilter.tsx x: 4 # contributors y: 2 # changes src/packages/database/migrations/0007_add_notifications_article_id.sql x: 3 # contributors y: 2 # changes src/apps/frontend/src/schemas.ts x: 8 # contributors y: 9 # changes src/packages/database/index.ts x: 5 # contributors y: 21 # changes src/apps/frontend/src/utils/form-validation.tsx x: 9 # contributors y: 15 # changes src/apps/frontend/src/preview/AndroidAlertPreview.tsx x: 5 # contributors y: 7 # changes src/apps/frontend/src/history/HistorySearchFilter.tsx x: 4 # contributors y: 3 # changes src/packages/database/test-helpers.ts x: 5 # contributors y: 10 # changes src/packages/models/api-contract/audience.ts x: 4 # contributors y: 8 # changes src/apps/frontend/src/preview/HTMLPreview.tsx x: 9 # contributors y: 11 # changes src/apps/backend/app.ts x: 11 # contributors y: 33 # changes src/apps/frontend/src/layout/constants.ts x: 5 # contributors y: 5 # changes src/apps/backend/notification-channels/newsletter/dispatch-newsletter-test.ts x: 5 # contributors y: 11 # changes src/apps/backend/notification-channels/newsletter/dispatch-newsletter.ts x: 5 # contributors y: 14 # changes src/packages/database/schema/notification-dispatches.ts x: 5 # contributors y: 9 # changes eslint.config.js x: 9 # contributors y: 17 # changes src/apps/backend/notification-channels/app-push/dispatch-app-push.ts x: 5 # contributors y: 16 # changes src/apps/frontend/src/ui/Tooltip.stories.tsx x: 7 # contributors y: 4 # changes src/packages/utils/urls.ts x: 4 # contributors y: 11 # changes src/apps/backend/routers/channels/index.ts x: 7 # contributors y: 22 # changes src/apps/frontend/bunfig.toml x: 4 # contributors y: 10 # changes src/apps/backend/middleware/auth-middleware.ts x: 6 # contributors y: 11 # changes src/apps/frontend/src/index.ts x: 2 # contributors y: 8 # changes src/apps/frontend/src/index.css x: 1 # contributors y: 4 # changes
33.0
# changes
  min: 1.0
  average: 7.76
  25th percentile: 3.0
  median: 6.0
  75th percentile: 10.0
  max: 33.0
0 11.0
# contributors
min: 1.0 | average: 5.17 | 25th percentile: 3.0 | median: 5.0 | 75th percentile: 7.0 | max: 11.0

Number of Contributors vs. File Size: 309 points

src/apps/frontend/src/compose/ArticlePreviewCard.tsx x: 8 # contributors y: 78 lines of code src/apps/frontend/src/compose/DispatchCreateNotificationModal.tsx x: 9 # contributors y: 61 lines of code src/apps/frontend/src/latest-content/LatestPublishedContentCard.tsx x: 7 # contributors y: 55 lines of code src/apps/frontend/src/ui/LiveIndicator.tsx x: 2 # contributors y: 38 lines of code src/apps/frontend/src/utils/pillar-colors.ts x: 4 # contributors y: 22 lines of code src/apps/frontend/src/history/DispatchLandingHistoryView.stories.tsx x: 4 # contributors y: 129 lines of code src/apps/frontend/src/themes.ts x: 8 # contributors y: 1452 lines of code src/apps/frontend/src/compose/ScrollWrapper.tsx x: 5 # contributors y: 39 lines of code src/apps/frontend/src/history/DispatchLandingHistoryView.tsx x: 6 # contributors y: 107 lines of code src/apps/frontend/src/history/HistoryTable.tsx x: 6 # contributors y: 301 lines of code src/apps/frontend/src/history/HistoryView.stories.tsx x: 7 # contributors y: 316 lines of code src/apps/frontend/src/history/HistoryView.tsx x: 7 # contributors y: 114 lines of code src/apps/frontend/src/compose/CreateAppAlertForm.stories.tsx x: 8 # contributors y: 554 lines of code src/apps/frontend/src/compose/CreateNewsletterEmailForm.stories.tsx x: 7 # contributors y: 412 lines of code src/apps/frontend/src/compose/NotificationFormWrapper.tsx x: 8 # contributors y: 116 lines of code src/apps/frontend/src/hooks/useUnsavedChanges.ts x: 1 # contributors y: 20 lines of code src/apps/frontend/src/navigation/UnsavedChangesContext.ts x: 1 # contributors y: 4 lines of code src/apps/frontend/src/compose/AppAlertReplaceImageSection.tsx x: 7 # contributors y: 106 lines of code src/apps/frontend/src/compose/DispatchLandingPage.tsx x: 7 # contributors y: 151 lines of code src/apps/frontend/src/hooks/useImageUrlCheck.ts x: 1 # contributors y: 106 lines of code src/apps/frontend/src/compose/PreviousNotificationsBar.stories.tsx x: 3 # contributors y: 160 lines of code src/apps/frontend/src/compose/PreviousNotificationsBar.tsx x: 3 # contributors y: 297 lines of code src/apps/frontend/src/ui/Tooltip.tsx x: 7 # contributors y: 146 lines of code src/apps/frontend/src/utils/relative-time.ts x: 7 # contributors y: 88 lines of code src/apps/backend/middleware/serve-index.ts x: 8 # contributors y: 53 lines of code src/apps/frontend/src/compose/DispatchInformationModal.stories.tsx x: 2 # contributors y: 73 lines of code src/apps/frontend/src/compose/DispatchInformationModal.tsx x: 3 # contributors y: 84 lines of code src/apps/frontend/src/compose/DispatchLandingPage.stories.tsx x: 7 # contributors y: 360 lines of code src/apps/frontend/src/support-links.ts x: 2 # contributors y: 2 lines of code src/apps/frontend/src/testing/app-config.ts x: 6 # contributors y: 20 lines of code src/packages/models/frontend-app-config.ts x: 5 # contributors y: 13 lines of code cdk/lib/notifications.ts x: 9 # contributors y: 331 lines of code src/apps/backend/routers/content/index.ts x: 8 # contributors y: 170 lines of code src/apps/frontend/src/compose/ArticlePreviewCard.stories.tsx x: 8 # contributors y: 172 lines of code src/apps/frontend/src/testing/capi-fixtures.ts x: 7 # contributors y: 78 lines of code src/apps/frontend/src/utils/article-presentation.ts x: 8 # contributors y: 30 lines of code src/apps/frontend/src/utils/article-thumbnail.ts x: 8 # contributors y: 27 lines of code src/apps/frontend/src/NotificationAlert.stories.tsx x: 2 # contributors y: 161 lines of code src/apps/frontend/src/NotificationAlert.tsx x: 2 # contributors y: 191 lines of code src/apps/frontend/src/history/HistoryPage.stories.tsx x: 7 # contributors y: 909 lines of code src/apps/frontend/src/history/HistorySenderFilter.tsx x: 6 # contributors y: 112 lines of code src/apps/frontend/src/layout/DispatchTile.stories.tsx x: 6 # contributors y: 70 lines of code src/apps/frontend/src/segment/Editions.stories.tsx x: 5 # contributors y: 48 lines of code src/apps/frontend/src/segment/Editions.tsx x: 7 # contributors y: 45 lines of code src/apps/frontend/src/segment/EditionsFormField.tsx x: 6 # contributors y: 32 lines of code src/apps/frontend/src/segment/edition-options.ts x: 6 # contributors y: 12 lines of code src/apps/frontend/src/send/DispatchReport.tsx x: 8 # contributors y: 422 lines of code src/apps/frontend/src/testing/handlers/channels.ts x: 5 # contributors y: 81 lines of code src/apps/frontend/src/utils/audience-edition-label.ts x: 2 # contributors y: 45 lines of code src/apps/frontend/src/utils/display-text-helpers.ts x: 6 # contributors y: 24 lines of code src/apps/frontend/src/utils/format-dispatch-target.ts x: 3 # contributors y: 35 lines of code src/packages/config/audiences.ts x: 9 # contributors y: 409 lines of code src/apps/frontend/.storybook/main.ts x: 7 # contributors y: 11 lines of code src/apps/frontend/.storybook/preview.tsx x: 8 # contributors y: 42 lines of code src/apps/frontend/src/compose/CreateAppAlertTab.stories.tsx x: 9 # contributors y: 730 lines of code src/apps/frontend/src/compose/DispatchCreateNotificationModal.stories.tsx x: 7 # contributors y: 97 lines of code src/apps/frontend/src/compose/NotificationFormProvider.stories.tsx x: 7 # contributors y: 128 lines of code src/apps/frontend/src/hooks/useRelativeTime.ts x: 6 # contributors y: 75 lines of code src/apps/frontend/src/latest-content/LatestPublishedContentCard.stories.tsx x: 6 # contributors y: 56 lines of code src/apps/frontend/src/latest-content/LatestPublishedContentPanel.stories.tsx x: 6 # contributors y: 277 lines of code src/apps/frontend/src/latest-content/latest-published-content.ts x: 5 # contributors y: 126 lines of code src/apps/frontend/src/send/TestEmailForm.stories.tsx x: 7 # contributors y: 199 lines of code src/apps/frontend/src/ui/EmptyState.tsx x: 4 # contributors y: 32 lines of code src/packages/models/capi.ts x: 8 # contributors y: 149 lines of code src/apps/frontend/src/compose/NotificationTabLayout.tsx x: 7 # contributors y: 101 lines of code src/apps/frontend/src/compose/NoSendPermissionWarning.tsx x: 3 # contributors y: 28 lines of code src/apps/frontend/src/compose/ArticleImportControl.tsx x: 9 # contributors y: 222 lines of code src/apps/frontend/src/hooks/usePreviousNotifications.ts x: 2 # contributors y: 26 lines of code src/apps/frontend/src/testing/api-fixtures.ts x: 9 # contributors y: 287 lines of code src/apps/frontend/src/utils/history-send-time.ts x: 7 # contributors y: 62 lines of code src/packages/models/index.ts x: 8 # contributors y: 8 lines of code src/apps/frontend/src/compose/ReviewWarning.tsx x: 5 # contributors y: 62 lines of code src/apps/frontend/src/history/HistoryFilters.tsx x: 7 # contributors y: 32 lines of code src/apps/frontend/src/preview/PreviewToggle.stories.tsx x: 6 # contributors y: 82 lines of code src/apps/frontend/src/preview/PreviewToggle.tsx x: 6 # contributors y: 51 lines of code src/apps/frontend/src/ui/CollapsibleSection.stories.tsx x: 1 # contributors y: 66 lines of code src/apps/frontend/src/ui/CollapsibleSection.tsx x: 1 # contributors y: 60 lines of code src/apps/frontend/src/ui/SendTimeTooltip.tsx x: 6 # contributors y: 42 lines of code src/apps/frontend/src/layout/MainLayout.tsx x: 6 # contributors y: 118 lines of code src/apps/frontend/src/compose/CreateAppAlertForm.tsx x: 8 # contributors y: 127 lines of code src/apps/frontend/src/compose/CreateAppAlertTab.tsx x: 8 # contributors y: 48 lines of code src/apps/frontend/src/compose/CreateNewsletterEmailTab.stories.tsx x: 7 # contributors y: 499 lines of code src/apps/frontend/src/send/DispatchReport.stories.tsx x: 8 # contributors y: 291 lines of code src/apps/frontend/src/testing/story-fixtures.ts x: 7 # contributors y: 38 lines of code src/apps/backend/persistence/persist-notification.ts x: 5 # contributors y: 224 lines of code src/apps/backend/routers/notifications/index.ts x: 10 # contributors y: 340 lines of code src/apps/backend/routers/notifications/schemas/notification-list-query.ts x: 7 # contributors y: 125 lines of code src/apps/backend/routers/notifications/schemas/notification-send-request.ts x: 9 # contributors y: 454 lines of code src/apps/backend/utils/test-utils/database.ts x: 5 # contributors y: 106 lines of code src/apps/frontend/src/history/HistoryChannelFilter.tsx x: 4 # contributors y: 96 lines of code src/apps/frontend/src/history/HistoryFailureTooltip.tsx x: 4 # contributors y: 121 lines of code src/apps/frontend/src/history/HistoryPage.tsx x: 7 # contributors y: 120 lines of code src/apps/frontend/src/history/HistoryStatusFilter.tsx x: 6 # contributors y: 96 lines of code src/apps/frontend/src/types.ts x: 8 # contributors y: 68 lines of code src/apps/frontend/src/utils/history-search-params.ts x: 7 # contributors y: 132 lines of code src/packages/config/channels.ts x: 7 # contributors y: 20 lines of code src/packages/database/repositories/notifications-repository.dbtest.ts x: 7 # contributors y: 779 lines of code src/packages/database/repositories/notifications-repository.ts x: 7 # contributors y: 287 lines of code src/packages/database/schema/notifications.ts x: 5 # contributors y: 77 lines of code src/packages/models/notification-channel.ts x: 4 # contributors y: 12 lines of code src/apps/frontend/src/schemas.ts x: 8 # contributors y: 229 lines of code src/packages/database/index.ts x: 5 # contributors y: 24 lines of code src/apps/frontend/src/compose/NotificationFormContext.tsx x: 7 # contributors y: 73 lines of code src/apps/frontend/src/grid-client/grid-api.ts x: 3 # contributors y: 124 lines of code src/apps/frontend/src/grid-client/grid-url-parsing.ts x: 3 # contributors y: 69 lines of code src/apps/frontend/src/hooks/useLatestPublishedContent.ts x: 4 # contributors y: 35 lines of code src/apps/frontend/src/hooks/useNotificationSenders.ts x: 5 # contributors y: 21 lines of code src/apps/frontend/src/testing/grid-fixtures.ts x: 3 # contributors y: 18 lines of code src/apps/frontend/src/utils/form-validation.tsx x: 9 # contributors y: 149 lines of code src/packages/models/grid.ts x: 3 # contributors y: 100 lines of code src/apps/backend/routers/notifications/index.dbtest.ts x: 7 # contributors y: 711 lines of code src/apps/frontend/src/compose/SideNavigationPanel.stories.tsx x: 3 # contributors y: 60 lines of code src/apps/frontend/src/compose/SideNavigationPanel.tsx x: 3 # contributors y: 207 lines of code src/apps/frontend/src/preview/AndroidAlertPreview.tsx x: 5 # contributors y: 109 lines of code src/apps/frontend/src/send/SendConfirmationModal.tsx x: 6 # contributors y: 68 lines of code src/apps/frontend/src/ui/GuardianLogo.tsx x: 3 # contributors y: 31 lines of code src/packages/models/api-contract/history-alert-type.ts x: 3 # contributors y: 17 lines of code src/packages/database/migrations/0006_add_notifications_sender_index.sql x: 3 # contributors y: 1 lines of code src/apps/frontend/src/history/HistorySearchFilter.tsx x: 4 # contributors y: 52 lines of code src/packages/models/api-contract/audience.ts x: 4 # contributors y: 141 lines of code src/apps/frontend/src/preview/HTMLPreview.tsx x: 9 # contributors y: 157 lines of code src/apps/frontend/src/preview/NewsletterEmailPreviewSection.tsx x: 6 # contributors y: 62 lines of code src/apps/frontend/src/send/SendFailedModal.tsx x: 7 # contributors y: 281 lines of code src/apps/frontend/src/testing/mock-fetch-email.ts x: 5 # contributors y: 69 lines of code src/apps/backend/app.ts x: 11 # contributors y: 95 lines of code src/apps/backend/middleware/grafana-cors.ts x: 3 # contributors y: 11 lines of code src/apps/backend/routers/grafana/index.ts x: 3 # contributors y: 149 lines of code src/apps/frontend/src/api-client/redirect-to-login.ts x: 5 # contributors y: 5 lines of code src/apps/frontend/src/compose/KickerFormField.tsx x: 6 # contributors y: 40 lines of code src/apps/frontend/src/compose/NotificationTextInput.stories.tsx x: 6 # contributors y: 131 lines of code src/apps/frontend/src/compose/NotificationTextInput.tsx x: 6 # contributors y: 159 lines of code src/apps/frontend/src/preview/AppAlertPreviewSection.tsx x: 5 # contributors y: 91 lines of code src/apps/frontend/src/send/DeliveryAndTimingSelector.stories.tsx x: 6 # contributors y: 100 lines of code src/apps/frontend/src/send/TestEmailForm.tsx x: 8 # contributors y: 217 lines of code src/apps/frontend/src/testing/mock-send-notification.ts x: 7 # contributors y: 23 lines of code src/apps/frontend/src/testing/useNotificationFormStory.tsx x: 6 # contributors y: 89 lines of code src/apps/frontend/src/ui/flag-icons.tsx x: 5 # contributors y: 186 lines of code src/apps/frontend/src/utils/newsletter-email-subject.ts x: 5 # contributors y: 9 lines of code src/apps/frontend/src/utils/notification-composer-reducer.ts x: 5 # contributors y: 99 lines of code src/apps/backend/notification-channels/newsletter/dispatch-newsletter-test.ts x: 5 # contributors y: 149 lines of code eslint.config.js x: 9 # contributors y: 39 lines of code src/apps/backend/notification-channels/app-push/dispatch-app-push.ts x: 5 # contributors y: 169 lines of code src/apps/backend/notification-channels/dispatch-notification-test.ts x: 5 # contributors y: 32 lines of code src/apps/frontend/src/api-client/client.ts x: 7 # contributors y: 175 lines of code src/apps/frontend/src/index.html x: 8 # contributors y: 39 lines of code src/apps/frontend/src/ui/Tooltip.stories.tsx x: 7 # contributors y: 47 lines of code src/packages/services/mobile-n10n/client.ts x: 4 # contributors y: 132 lines of code src/packages/utils/urls.ts x: 4 # contributors y: 61 lines of code src/apps/backend/notification-channels/shared.ts x: 4 # contributors y: 48 lines of code src/apps/frontend/bunfig.toml x: 4 # contributors y: 2 lines of code src/apps/frontend/src/api-client/errors.ts x: 3 # contributors y: 55 lines of code src/apps/frontend/src/compose/ChannelDisplay.tsx x: 3 # contributors y: 67 lines of code src/apps/frontend/src/history/HistoryPagination.tsx x: 3 # contributors y: 96 lines of code src/apps/frontend/src/send/DeliveryAndTimingSelector.tsx x: 3 # contributors y: 48 lines of code src/apps/frontend/src/send/SendButton.tsx x: 3 # contributors y: 43 lines of code src/packages/config/index.ts x: 7 # contributors y: 17 lines of code src/packages/database/migrations/0005_structured_dispatch_targets.sql x: 2 # contributors y: 79 lines of code src/packages/database/scripts/env/remote/helpers/aws.ts x: 3 # contributors y: 110 lines of code src/packages/services/braze/client.ts x: 4 # contributors y: 317 lines of code src/packages/database/database-environment.ts x: 2 # contributors y: 19 lines of code src/packages/database/managed-database-secret.ts x: 2 # contributors y: 12 lines of code src/packages/database/runtime-connection-string.ts x: 2 # contributors y: 30 lines of code src/packages/database/scripts/env/remote/helpers/cli-args.ts x: 2 # contributors y: 49 lines of code src/packages/database/scripts/env/remote/helpers/verify-remote-database-connection.ts x: 2 # contributors y: 61 lines of code src/packages/models/api-contract/preview.ts x: 4 # contributors y: 25 lines of code src/apps/frontend/public/mockServiceWorker.js x: 3 # contributors y: 232 lines of code dev-nginx.yaml x: 6 # contributors y: 5 lines of code src/packages/http-logger/logger.ts x: 4 # contributors y: 44 lines of code scripts/check-pinned-deps.ts x: 2 # contributors y: 53 lines of code
1452.0
lines of code
  min: 1.0
  average: 93.4
  25th percentile: 25.0
  median: 49.0
  75th percentile: 110.5
  max: 1452.0
0 11.0
# contributors
min: 1.0 | average: 5.17 | 25th percentile: 3.0 | median: 5.0 | 75th percentile: 7.0 | max: 11.0

Number of Changes vs. Line Churn: 930 points

src/apps/frontend/src/compose/ArticlePreviewCard.tsx x: 13 # changes y: 984 line churn src/apps/frontend/src/compose/DispatchCreateNotificationModal.tsx x: 10 # changes y: 1180 line churn src/apps/frontend/src/latest-content/LatestPublishedContentCard.tsx x: 9 # changes y: 584 line churn src/apps/frontend/src/ui/LiveIndicator.tsx x: 4 # changes y: 132 line churn src/apps/frontend/src/history/DispatchLandingHistoryView.stories.tsx x: 5 # changes y: 517 line churn src/apps/frontend/src/themes.ts x: 22 # changes y: 7237 line churn src/apps/frontend/src/history/HistoryTable.tsx x: 16 # changes y: 1938 line churn src/apps/frontend/src/history/HistoryView.stories.tsx x: 18 # changes y: 1677 line churn src/apps/frontend/src/history/HistoryView.tsx x: 19 # changes y: 2791 line churn src/apps/frontend/src/compose/CreateAppAlertForm.stories.tsx x: 21 # changes y: 3535 line churn src/apps/frontend/src/compose/CreateNewsletterEmailForm.stories.tsx x: 9 # changes y: 3294 line churn src/apps/frontend/src/compose/NotificationFormWrapper.tsx x: 15 # changes y: 595 line churn src/apps/frontend/src/frontend.tsx x: 20 # changes y: 368 line churn src/apps/frontend/src/hooks/useUnsavedChanges.test.tsx x: 1 # changes y: 108 line churn src/apps/frontend/src/compose/AppAlertReplaceImageSection.tsx x: 14 # changes y: 1099 line churn src/apps/frontend/src/hooks/use-image-url-check.test.tsx x: 4 # changes y: 1056 line churn src/apps/frontend/src/hooks/useImageUrlCheck.test.tsx x: 2 # changes y: 352 line churn src/apps/frontend/src/compose/PreviousNotificationsBar.stories.tsx x: 6 # changes y: 436 line churn src/apps/frontend/src/compose/PreviousNotificationsBar.tsx x: 6 # changes y: 1540 line churn src/apps/frontend/src/utils/relative-time.test.ts x: 8 # changes y: 781 line churn src/apps/backend/.env.example x: 22 # changes y: 237 line churn src/apps/backend/README.md x: 20 # changes y: 1343 line churn src/apps/backend/middleware/serve-index.ts x: 21 # changes y: 540 line churn src/apps/frontend/src/compose/DispatchInformationModal.tsx x: 3 # changes y: 293 line churn src/apps/frontend/src/compose/DispatchLandingPage.stories.tsx x: 10 # changes y: 1957 line churn src/apps/frontend/src/testing/app-config.ts x: 7 # changes y: 63 line churn src/packages/models/frontend-app-config.ts x: 13 # changes y: 87 line churn bun.lock x: 55 # changes y: 115618 line churn cdk/lib/__snapshots__/notifications.test.ts.snap x: 32 # changes y: 11469 line churn cdk/lib/notifications.ts x: 28 # changes y: 2404 line churn cdk/package.json x: 22 # changes y: 633 line churn package.json x: 41 # changes y: 437 line churn src/apps/backend/package.json x: 41 # changes y: 559 line churn src/apps/frontend/package.json x: 50 # changes y: 1097 line churn src/packages/config/package.json x: 36 # changes y: 249 line churn src/apps/backend/routers/content/index.test.ts x: 16 # changes y: 2324 line churn src/apps/backend/routers/content/index.ts x: 15 # changes y: 1360 line churn src/apps/frontend/src/compose/ArticlePreviewCard.stories.tsx x: 12 # changes y: 1379 line churn src/apps/frontend/src/utils/article-liveblog.ts x: 8 # changes y: 116 line churn src/apps/frontend/src/utils/article-thumbnail.ts x: 10 # changes y: 270 line churn src/apps/frontend/src/NotificationAlert.stories.tsx x: 3 # changes y: 684 line churn src/apps/frontend/src/history/HistoryAudienceFilter.tsx x: 6 # changes y: 939 line churn src/apps/frontend/src/history/HistoryPage.stories.tsx x: 17 # changes y: 4695 line churn src/apps/frontend/src/layout/DispatchTile.stories.tsx x: 7 # changes y: 498 line churn src/apps/frontend/src/segment/Editions.tsx x: 9 # changes y: 272 line churn src/apps/frontend/src/segment/edition-options.ts x: 5 # changes y: 135 line churn src/apps/frontend/src/send/DispatchReport.tsx x: 12 # changes y: 2038 line churn src/apps/frontend/src/utils/notification-history-mapper.test.ts x: 8 # changes y: 1271 line churn src/packages/config/audiences.test.ts x: 11 # changes y: 502 line churn src/packages/config/audiences.ts x: 27 # changes y: 6925 line churn src/apps/frontend/.storybook/preview.tsx x: 23 # changes y: 407 line churn src/apps/frontend/src/compose/CreateAppAlertTab.stories.tsx x: 18 # changes y: 3275 line churn src/apps/frontend/src/hooks/useNotificationHistory.test.ts x: 14 # changes y: 1987 line churn src/apps/frontend/src/latest-content/LatestPublishedContentPanel.stories.tsx x: 10 # changes y: 1390 line churn src/apps/frontend/src/latest-content/LatestPublishedContentPanel.tsx x: 10 # changes y: 792 line churn src/apps/frontend/src/send/TestEmailForm.stories.tsx x: 11 # changes y: 1056 line churn src/packages/services/capi/client.test.ts x: 18 # changes y: 2028 line churn src/packages/services/capi/client.ts x: 18 # changes y: 1328 line churn src/apps/frontend/src/compose/NotificationTabLayout.tsx x: 13 # changes y: 462 line churn src/apps/frontend/src/testing/api-fixtures.ts x: 12 # changes y: 1234 line churn src/packages/models/index.ts x: 19 # changes y: 65 line churn src/apps/frontend/src/preview/PreviewToggle.stories.tsx x: 12 # changes y: 852 line churn src/apps/frontend/src/ui/SendTimeTooltip.tsx x: 6 # changes y: 478 line churn src/apps/frontend/src/App.tsx x: 28 # changes y: 1054 line churn src/apps/frontend/src/compose/CreateAppAlertTab.tsx x: 14 # changes y: 433 line churn src/apps/frontend/src/compose/CreateNewsletterEmailTab.stories.tsx x: 14 # changes y: 1704 line churn src/apps/frontend/src/compose/CreateNewsletterEmailTab.tsx x: 16 # changes y: 463 line churn src/apps/frontend/src/send/DispatchReport.stories.tsx x: 13 # changes y: 1779 line churn src/apps/frontend/src/compose/ArticleThumbnailImageFormField.tsx x: 14 # changes y: 894 line churn src/apps/backend/routers/docs/openapi/paths/notifications.ts x: 29 # changes y: 2967 line churn src/apps/backend/routers/notifications/index.test.ts x: 31 # changes y: 9658 line churn src/apps/backend/routers/notifications/index.ts x: 33 # changes y: 4134 line churn src/apps/backend/routers/notifications/schemas/notification-send-request.test.ts x: 21 # changes y: 9495 line churn src/apps/backend/routers/notifications/schemas/notification-send-request.ts x: 22 # changes y: 4634 line churn src/apps/backend/utils/test-utils/database.ts x: 17 # changes y: 637 line churn src/apps/frontend/src/history/HistoryAlertTypeFilter.tsx x: 4 # changes y: 546 line churn src/apps/frontend/src/history/HistoryChannelFilter.tsx x: 2 # changes y: 662 line churn src/apps/frontend/src/segment/SegmentPicker.tsx x: 9 # changes y: 1002 line churn src/packages/config/channels.ts x: 18 # changes y: 738 line churn src/packages/database/migrations/meta/0007_snapshot.json x: 2 # changes y: 2485 line churn src/packages/database/migrations/meta/_journal.json x: 16 # changes y: 315 line churn src/packages/database/repositories/notifications-repository.dbtest.ts x: 15 # changes y: 4416 line churn src/packages/database/repositories/notifications-repository.ts x: 17 # changes y: 2502 line churn src/apps/backend/routers/docs/openapi/components/schemas/index.ts x: 33 # changes y: 541 line churn src/apps/backend/routers/notifications/schemas/notification-article-history-query.ts x: 1 # changes y: 554 line churn src/packages/database/index.ts x: 21 # changes y: 142 line churn README.md x: 30 # changes y: 3127 line churn docs/runbooks/deleting-a-notification.md x: 3 # changes y: 985 line churn src/apps/backend/routers/notifications/index.dbtest.ts x: 13 # changes y: 4014 line churn src/apps/frontend/src/preview/NewsletterEmailPreviewSection.stories.tsx x: 7 # changes y: 1265 line churn src/packages/database/migrations/meta/0006_snapshot.json x: 2 # changes y: 1641 line churn src/apps/frontend/src/preview/HTMLPreview.tsx x: 11 # changes y: 1610 line churn src/apps/backend/app.ts x: 33 # changes y: 1197 line churn src/apps/backend/routers/grafana/index.test.ts x: 5 # changes y: 1731 line churn src/apps/backend/routers/grafana/index.ts x: 5 # changes y: 1020 line churn src/apps/frontend/src/compose/CreateNewsletterForm.stories.tsx x: 12 # changes y: 4111 line churn src/apps/frontend/src/layout/DispatchLandingTab.stories.tsx x: 7 # changes y: 2191 line churn src/apps/frontend/src/layout/DispatchLandingTab.tsx x: 7 # changes y: 1814 line churn src/apps/frontend/src/ui/FlagIcons.tsx x: 6 # changes y: 1940 line churn src/apps/backend/app.test.ts x: 15 # changes y: 1402 line churn .github/workflows/ci.yml x: 23 # changes y: 1181 line churn eslint.config.js x: 17 # changes y: 294 line churn src/apps/backend/notification-channels/app-push/dispatch-app-push.test.ts x: 17 # changes y: 3258 line churn src/apps/backend/notification-channels/app-push/dispatch-app-push.ts x: 16 # changes y: 1515 line churn src/apps/backend/notification-channels/dispatch-notification.test.ts x: 17 # changes y: 5498 line churn src/apps/backend/notification-channels/dispatch-notification.ts x: 19 # changes y: 4536 line churn src/apps/frontend/src/index.html x: 11 # changes y: 212 line churn src/packages/services/mobile-n10n/client.test.ts x: 8 # changes y: 1451 line churn .prettierignore x: 12 # changes y: 35 line churn src/apps/backend/routers/channels/index.ts x: 22 # changes y: 1539 line churn src/apps/backend/routers/docs/openapi/paths/channels.ts x: 15 # changes y: 294 line churn src/apps/frontend/src/features/stand-frontend/EmailNotificationPage.tsx x: 29 # changes y: 1247 line churn src/apps/frontend/src/features/stand-frontend/api/schemas.ts x: 24 # changes y: 2596 line churn src/apps/frontend/src/features/stand-frontend/components/ArticleImportControl.tsx x: 31 # changes y: 2932 line churn src/apps/frontend/src/features/stand-frontend/components/AudienceSegments.tsx x: 24 # changes y: 3386 line churn src/apps/frontend/src/features/stand-frontend/components/CreateAppAlertForm.stories.tsx x: 14 # changes y: 2483 line churn src/apps/frontend/src/features/stand-frontend/components/CreateAppAlertForm.tsx x: 15 # changes y: 2207 line churn src/apps/frontend/src/features/stand-frontend/components/CreateNewsletterEmailTab.tsx x: 15 # changes y: 2300 line churn src/apps/frontend/src/features/stand-frontend/components/CreateNotificationForm.stories.tsx x: 27 # changes y: 3337 line churn src/apps/frontend/src/features/stand-frontend/components/CreateNotificationForm.tsx x: 31 # changes y: 4042 line churn src/apps/frontend/src/features/stand-frontend/components/DeliveryAndTimingSelector.tsx x: 19 # changes y: 1185 line churn src/apps/frontend/src/features/stand-frontend/components/DispatchReport.tsx x: 24 # changes y: 4944 line churn src/apps/frontend/src/features/stand-frontend/components/EmailFields.tsx x: 24 # changes y: 2754 line churn src/apps/frontend/src/features/stand-frontend/components/EmailPreviewSection.stories.tsx x: 17 # changes y: 1160 line churn src/apps/frontend/src/features/stand-frontend/components/EmailPreviewSection.tsx x: 27 # changes y: 1633 line churn src/apps/frontend/src/features/stand-frontend/components/FlagIcons.tsx x: 17 # changes y: 1422 line churn src/apps/frontend/src/features/stand-frontend/components/HTMLPreview.tsx x: 24 # changes y: 1284 line churn src/apps/frontend/src/features/stand-frontend/components/HistoryTab.tsx x: 12 # changes y: 3752 line churn src/apps/frontend/src/features/stand-frontend/components/SelectableEditions.tsx x: 4 # changes y: 1839 line churn src/apps/frontend/src/features/stand-frontend/components/SendButton.tsx x: 25 # changes y: 1920 line churn src/apps/frontend/src/features/stand-frontend/components/SendNotificationModal.tsx x: 16 # changes y: 993 line churn src/apps/frontend/src/features/stand-frontend/components/SideNavigationPanel.tsx x: 21 # changes y: 3781 line churn src/apps/frontend/src/features/stand-frontend/form-validation.tsx x: 24 # changes y: 1721 line churn src/apps/frontend/src/features/stand-frontend/notification-reducer.ts x: 30 # changes y: 2257 line churn src/apps/frontend/src/features/stand-frontend/themes.ts x: 27 # changes y: 2496 line churn src/apps/frontend/src/features/stand-frontend/types.ts x: 35 # changes y: 2273 line churn src/apps/frontend/src/mocks/handlers/channels.ts x: 19 # changes y: 909 line churn src/packages/database/migrations/meta/0001_snapshot.json x: 3 # changes y: 1728 line churn src/packages/database/migrations/meta/0002_snapshot.json x: 4 # changes y: 1515 line churn src/packages/database/migrations/meta/0003_snapshot.json x: 2 # changes y: 1236 line churn src/packages/services/braze/client.test.ts x: 8 # changes y: 2054 line churn src/apps/frontend/src/features/stand-frontend/components/HistoryPage.stories.tsx x: 5 # changes y: 2093 line churn src/apps/frontend/src/features/stand-frontend/components/HistoryView.tsx x: 3 # changes y: 2227 line churn src/apps/frontend/src/features/stand-frontend/components/DispatchTab.tsx x: 19 # changes y: 2284 line churn src/apps/backend/notification-channels/email/braze/client.test.ts x: 8 # changes y: 3120 line churn docs/notification-sending-model-proposal/proposal.md x: 10 # changes y: 2893 line churn src/apps/backend/routers/notifications/schemas/notification-push-request.ts x: 9 # changes y: 1746 line churn src/apps/backend/routers/notifications/schemas/notification-push-request.test.ts x: 4 # changes y: 3011 line churn cdk/package-lock.json x: 2 # changes y: 23092 line churn
115618.0
line churn
  min: 2.0
  average: 796.76
  25th percentile: 112.0
  median: 308.0
  75th percentile: 858.25
  max: 115618.0
0 55.0
# changes
min: 1.0 | average: 7.26 | 25th percentile: 3.0 | median: 6.0 | 75th percentile: 9.0 | max: 55.0

Number of Contributors vs. Line Churn: 309 points

src/apps/frontend/src/compose/ArticlePreviewCard.tsx x: 8 # contributors y: 984 line churn src/apps/frontend/src/compose/DispatchCreateNotificationModal.tsx x: 9 # contributors y: 1180 line churn src/apps/frontend/src/latest-content/LatestPublishedContentCard.tsx x: 7 # contributors y: 584 line churn src/apps/frontend/src/ui/LiveIndicator.tsx x: 2 # contributors y: 132 line churn src/apps/frontend/src/utils/pillar-colors.ts x: 4 # contributors y: 91 line churn src/apps/frontend/src/history/DispatchLandingHistoryView.stories.tsx x: 4 # contributors y: 517 line churn src/apps/frontend/src/themes.ts x: 8 # contributors y: 7237 line churn src/apps/frontend/src/compose/ScrollWrapper.tsx x: 5 # contributors y: 212 line churn src/apps/frontend/src/history/DispatchLandingHistoryView.tsx x: 6 # contributors y: 475 line churn src/apps/frontend/src/history/HistoryTable.tsx x: 6 # contributors y: 1938 line churn src/apps/frontend/src/history/HistoryView.stories.tsx x: 7 # contributors y: 1677 line churn src/apps/frontend/src/history/HistoryView.tsx x: 7 # contributors y: 2791 line churn src/apps/frontend/src/compose/CreateAppAlertForm.stories.tsx x: 8 # contributors y: 3535 line churn src/apps/frontend/src/compose/CreateNewsletterEmailForm.stories.tsx x: 7 # contributors y: 3294 line churn src/apps/frontend/src/compose/NotificationFormWrapper.tsx x: 8 # contributors y: 595 line churn src/apps/frontend/src/frontend.tsx x: 7 # contributors y: 368 line churn src/apps/frontend/src/hooks/useUnsavedChanges.ts x: 1 # contributors y: 50 line churn src/apps/frontend/src/navigation/UnsavedChangesContext.ts x: 1 # contributors y: 10 line churn src/apps/frontend/src/compose/AppAlertReplaceImageSection.tsx x: 7 # contributors y: 1099 line churn src/apps/frontend/src/compose/DispatchLandingPage.tsx x: 7 # contributors y: 915 line churn src/apps/frontend/src/hooks/useImageUrlCheck.ts x: 1 # contributors y: 248 line churn src/apps/frontend/src/compose/PreviousNotificationsBar.stories.tsx x: 3 # contributors y: 436 line churn src/apps/frontend/src/compose/PreviousNotificationsBar.tsx x: 3 # contributors y: 1540 line churn src/apps/frontend/src/utils/relative-time.ts x: 7 # contributors y: 631 line churn src/apps/backend/middleware/serve-index.ts x: 8 # contributors y: 540 line churn src/apps/frontend/src/compose/DispatchInformationModal.stories.tsx x: 2 # contributors y: 216 line churn src/apps/frontend/src/compose/DispatchInformationModal.tsx x: 3 # contributors y: 293 line churn src/apps/frontend/src/compose/DispatchLandingPage.stories.tsx x: 7 # contributors y: 1957 line churn src/apps/frontend/src/support-links.ts x: 2 # contributors y: 26 line churn src/apps/frontend/src/testing/app-config.ts x: 6 # contributors y: 63 line churn src/packages/models/frontend-app-config.ts x: 5 # contributors y: 87 line churn cdk/lib/notifications.ts x: 9 # contributors y: 2404 line churn src/apps/backend/routers/content/index.ts x: 8 # contributors y: 1360 line churn src/apps/frontend/src/compose/ArticlePreviewCard.stories.tsx x: 8 # contributors y: 1379 line churn src/apps/frontend/src/testing/capi-fixtures.ts x: 7 # contributors y: 394 line churn src/apps/frontend/src/utils/article-presentation.ts x: 8 # contributors y: 320 line churn src/apps/frontend/src/utils/article-thumbnail.ts x: 8 # contributors y: 270 line churn src/apps/frontend/src/NotificationAlert.stories.tsx x: 2 # contributors y: 684 line churn src/apps/frontend/src/NotificationAlert.tsx x: 2 # contributors y: 962 line churn src/apps/frontend/src/history/HistoryAudienceFilter.tsx x: 6 # contributors y: 939 line churn src/apps/frontend/src/history/HistoryPage.stories.tsx x: 7 # contributors y: 4695 line churn src/apps/frontend/src/layout/DispatchTile.stories.tsx x: 6 # contributors y: 498 line churn src/apps/frontend/src/preview/AppAlertPreviewSection.stories.tsx x: 6 # contributors y: 796 line churn src/apps/frontend/src/segment/Editions.stories.tsx x: 5 # contributors y: 183 line churn src/apps/frontend/src/segment/Editions.tsx x: 7 # contributors y: 272 line churn src/apps/frontend/src/segment/EditionsFormField.tsx x: 6 # contributors y: 144 line churn src/apps/frontend/src/segment/audience-fallbacks.ts x: 7 # contributors y: 173 line churn src/apps/frontend/src/segment/edition-options.ts x: 6 # contributors y: 135 line churn src/apps/frontend/src/send/DispatchReport.tsx x: 8 # contributors y: 2038 line churn src/apps/frontend/src/testing/handlers/channels.ts x: 5 # contributors y: 358 line churn src/apps/frontend/src/ui/PreviewPillList.stories.tsx x: 6 # contributors y: 263 line churn src/apps/frontend/src/utils/audience-edition-label.ts x: 2 # contributors y: 144 line churn src/apps/frontend/src/utils/display-text-helpers.ts x: 6 # contributors y: 214 line churn src/apps/frontend/src/utils/notification-history-mapper.ts x: 7 # contributors y: 1294 line churn src/packages/config/audiences.ts x: 9 # contributors y: 6925 line churn src/apps/frontend/.storybook/main.ts x: 7 # contributors y: 293 line churn src/apps/frontend/.storybook/preview.tsx x: 8 # contributors y: 407 line churn src/apps/frontend/src/AccessControlledLayout.tsx x: 6 # contributors y: 195 line churn src/apps/frontend/src/compose/CreateAppAlertTab.stories.tsx x: 9 # contributors y: 3275 line churn src/apps/frontend/src/compose/DispatchCreateNotificationModal.stories.tsx x: 7 # contributors y: 567 line churn src/apps/frontend/src/compose/NotificationFormProvider.stories.tsx x: 7 # contributors y: 1137 line churn src/apps/frontend/src/hooks/useNotificationHistory.ts x: 7 # contributors y: 859 line churn src/apps/frontend/src/hooks/useRelativeTime.ts x: 6 # contributors y: 599 line churn src/apps/frontend/src/latest-content/LatestPublishedContentCard.stories.tsx x: 6 # contributors y: 543 line churn src/apps/frontend/src/latest-content/LatestPublishedContentPanel.stories.tsx x: 6 # contributors y: 1390 line churn src/apps/frontend/src/latest-content/LatestPublishedContentPanel.tsx x: 8 # contributors y: 792 line churn src/apps/frontend/src/latest-content/latest-published-content.ts x: 5 # contributors y: 592 line churn src/apps/frontend/src/send/TestEmailForm.stories.tsx x: 7 # contributors y: 1056 line churn src/apps/frontend/src/ui/EmptyState.tsx x: 4 # contributors y: 186 line churn src/packages/models/capi.ts x: 8 # contributors y: 938 line churn src/packages/services/capi/client.ts x: 8 # contributors y: 1328 line churn src/apps/frontend/src/compose/NotificationTabLayout.tsx x: 7 # contributors y: 462 line churn src/apps/frontend/src/compose/NoSendPermissionWarning.tsx x: 3 # contributors y: 111 line churn src/apps/frontend/src/compose/ArticleImportControl.tsx x: 9 # contributors y: 1317 line churn src/apps/frontend/src/testing/api-fixtures.ts x: 9 # contributors y: 1234 line churn src/apps/frontend/src/utils/history-send-time.ts x: 7 # contributors y: 681 line churn src/packages/models/index.ts x: 8 # contributors y: 65 line churn src/apps/frontend/src/compose/ReviewWarning.tsx x: 5 # contributors y: 329 line churn src/apps/frontend/src/preview/PreviewToggle.stories.tsx x: 6 # contributors y: 852 line churn src/apps/frontend/src/preview/PreviewToggle.tsx x: 6 # contributors y: 374 line churn src/apps/frontend/src/ui/CollapsibleSection.stories.tsx x: 1 # contributors y: 150 line churn src/apps/frontend/src/ui/CollapsibleSection.tsx x: 1 # contributors y: 134 line churn src/apps/frontend/src/App.tsx x: 9 # contributors y: 1054 line churn src/apps/frontend/src/layout/MainLayout.tsx x: 6 # contributors y: 813 line churn src/apps/frontend/src/layout/NotFoundTab.tsx x: 4 # contributors y: 117 line churn src/apps/frontend/src/compose/CreateAppAlertTab.tsx x: 8 # contributors y: 433 line churn src/apps/frontend/src/compose/CreateNewsletterEmailForm.tsx x: 8 # contributors y: 877 line churn src/apps/frontend/src/compose/CreateNewsletterEmailTab.stories.tsx x: 7 # contributors y: 1704 line churn src/apps/frontend/src/compose/CreateNewsletterEmailTab.tsx x: 8 # contributors y: 463 line churn src/apps/frontend/src/send/DispatchReport.stories.tsx x: 8 # contributors y: 1779 line churn src/apps/frontend/src/compose/ArticleThumbnailImageFormField.tsx x: 7 # contributors y: 894 line churn src/apps/frontend/src/utils/notification-forms.ts x: 7 # contributors y: 708 line churn src/apps/backend/persistence/persist-notification.ts x: 5 # contributors y: 2109 line churn src/apps/backend/routers/notifications/index.ts x: 10 # contributors y: 4134 line churn src/apps/backend/routers/notifications/schemas/notification-send-request.ts x: 9 # contributors y: 4634 line churn src/apps/backend/utils/test-utils/database.ts x: 5 # contributors y: 637 line churn src/apps/frontend/src/history/ClearHistoryFiltersButton.tsx x: 7 # contributors y: 249 line churn src/apps/frontend/src/history/HistoryChannelFilter.tsx x: 4 # contributors y: 662 line churn src/apps/frontend/src/history/HistoryFailureTooltip.tsx x: 4 # contributors y: 702 line churn src/apps/frontend/src/history/HistoryPage.tsx x: 7 # contributors y: 974 line churn src/apps/frontend/src/segment/SegmentPicker.tsx x: 6 # contributors y: 1002 line churn src/apps/frontend/src/types.ts x: 8 # contributors y: 624 line churn src/packages/config/channels.ts x: 7 # contributors y: 738 line churn src/packages/database/migrations/0007_add_notifications_article_id.sql x: 3 # contributors y: 239 line churn src/packages/database/repositories/notifications-repository.dbtest.ts x: 7 # contributors y: 4416 line churn src/packages/database/repositories/notifications-repository.ts x: 7 # contributors y: 2502 line churn src/packages/database/schema/notifications.ts x: 5 # contributors y: 564 line churn src/packages/database/index.ts x: 5 # contributors y: 142 line churn src/apps/frontend/src/grid-client/grid-api.ts x: 3 # contributors y: 580 line churn src/apps/frontend/src/hooks/useLatestPublishedContent.ts x: 4 # contributors y: 224 line churn src/apps/frontend/src/hooks/useNotificationSenders.ts x: 5 # contributors y: 160 line churn src/apps/frontend/src/hooks/useSendNotification.ts x: 7 # contributors y: 442 line churn src/apps/frontend/src/testing/grid-fixtures.ts x: 3 # contributors y: 76 line churn src/apps/frontend/src/utils/form-validation.tsx x: 9 # contributors y: 992 line churn src/packages/models/grid.ts x: 3 # contributors y: 480 line churn src/apps/backend/routers/notifications/index.dbtest.ts x: 7 # contributors y: 4014 line churn src/apps/frontend/src/compose/SideNavigationPanel.stories.tsx x: 3 # contributors y: 264 line churn src/apps/frontend/src/compose/SideNavigationPanel.tsx x: 3 # contributors y: 908 line churn src/apps/frontend/src/history/HistoryEmptyState.tsx x: 7 # contributors y: 323 line churn src/apps/frontend/src/send/SendConfirmationModal.tsx x: 6 # contributors y: 514 line churn src/apps/frontend/src/ui/GuardianLogo.tsx x: 3 # contributors y: 136 line churn src/apps/frontend/src/compose/PreviewTextFormField.tsx x: 7 # contributors y: 502 line churn src/apps/frontend/src/preview/NewsletterEmailPreviewSection.stories.tsx x: 7 # contributors y: 1265 line churn src/packages/database/migrations/0006_add_notifications_sender_index.sql x: 3 # contributors y: 7 line churn src/apps/frontend/src/history/HistorySearchFilter.tsx x: 4 # contributors y: 292 line churn src/packages/database/test-helpers.ts x: 5 # contributors y: 682 line churn src/packages/models/api-contract/audience.ts x: 4 # contributors y: 595 line churn src/apps/frontend/src/preview/HTMLPreview.tsx x: 9 # contributors y: 1610 line churn src/apps/frontend/src/preview/NewsletterEmailPreview.stories.tsx x: 3 # contributors y: 530 line churn src/apps/frontend/src/send/SendFailedModal.tsx x: 7 # contributors y: 1933 line churn src/apps/frontend/src/testing/mock-fetch-email.ts x: 5 # contributors y: 229 line churn src/apps/backend/app.ts x: 11 # contributors y: 1197 line churn src/apps/backend/routers/grafana/grafana-query-request.ts x: 3 # contributors y: 180 line churn src/apps/backend/routers/grafana/index.ts x: 3 # contributors y: 1020 line churn src/apps/frontend/src/compose/CharacterCount.tsx x: 6 # contributors y: 352 line churn src/apps/frontend/src/compose/NotificationFormSection.tsx x: 6 # contributors y: 246 line churn src/apps/frontend/src/compose/NotificationTextInput.stories.tsx x: 6 # contributors y: 760 line churn src/apps/frontend/src/compose/NotificationTextInput.tsx x: 6 # contributors y: 675 line churn src/apps/frontend/src/compose/SubjectFormField.tsx x: 6 # contributors y: 294 line churn src/apps/frontend/src/layout/constants.ts x: 5 # contributors y: 8 line churn src/apps/frontend/src/send/SendConfirmationModal.stories.tsx x: 5 # contributors y: 721 line churn src/apps/frontend/src/send/TestEmailForm.tsx x: 8 # contributors y: 1400 line churn src/apps/frontend/src/testing/mock-send-notification.ts x: 7 # contributors y: 146 line churn src/apps/frontend/src/ui/FlagAtom.tsx x: 6 # contributors y: 110 line churn src/apps/frontend/src/ui/LastUpdated.tsx x: 7 # contributors y: 205 line churn src/apps/frontend/src/ui/PreviewPillList.tsx x: 6 # contributors y: 317 line churn src/apps/frontend/src/ui/flag-icons.tsx x: 5 # contributors y: 1358 line churn src/apps/frontend/src/utils/newsletter-email-subject.ts x: 5 # contributors y: 70 line churn src/apps/frontend/src/utils/notification-composer-reducer.ts x: 5 # contributors y: 784 line churn src/apps/backend/notification-channels/newsletter/dispatch-newsletter-test.ts x: 5 # contributors y: 1486 line churn src/apps/backend/notification-channels/newsletter/dispatch-newsletter.ts x: 5 # contributors y: 1058 line churn src/apps/backend/routers/preview/index.ts x: 7 # contributors y: 830 line churn src/apps/frontend/src/ui/ExternalLink.tsx x: 3 # contributors y: 36 line churn src/packages/database/schema/notification-dispatches.ts x: 5 # contributors y: 501 line churn src/packages/services/email-rendering/client.ts x: 7 # contributors y: 601 line churn eslint.config.js x: 9 # contributors y: 294 line churn src/apps/backend/notification-channels/app-push/dispatch-app-push-test.ts x: 5 # contributors y: 1311 line churn src/apps/backend/notification-channels/app-push/dispatch-app-push.ts x: 5 # contributors y: 1515 line churn src/apps/backend/notification-channels/dispatch-notification-test.ts x: 5 # contributors y: 453 line churn src/apps/backend/notification-channels/dispatch-notification.ts x: 7 # contributors y: 4536 line churn src/apps/backend/notification-channels/test-support.ts x: 5 # contributors y: 525 line churn src/apps/frontend/src/api-client/client.ts x: 7 # contributors y: 779 line churn src/apps/frontend/src/index.html x: 8 # contributors y: 212 line churn src/apps/frontend/src/ui/LastUpdated.stories.tsx x: 5 # contributors y: 279 line churn src/packages/services/mobile-n10n/client.ts x: 4 # contributors y: 995 line churn src/packages/utils/urls.ts x: 4 # contributors y: 566 line churn src/apps/backend/middleware/static-assets-middleware.ts x: 4 # contributors y: 57 line churn src/apps/backend/notification-channels/shared.ts x: 4 # contributors y: 421 line churn src/apps/backend/routers/channels/index.ts x: 7 # contributors y: 1539 line churn src/apps/frontend/bunfig.toml x: 4 # contributors y: 20 line churn src/apps/frontend/src/compose/ChannelDisplay.tsx x: 3 # contributors y: 215 line churn src/apps/frontend/src/send/DeliveryAndTimingSelector.tsx x: 3 # contributors y: 161 line churn src/packages/database/client.ts x: 5 # contributors y: 410 line churn src/packages/database/migrations/0005_structured_dispatch_targets.sql x: 2 # contributors y: 375 line churn src/packages/database/scripts/env/remote/helpers/aws.ts x: 3 # contributors y: 409 line churn src/packages/models/user-permissions.ts x: 4 # contributors y: 30 line churn src/packages/services/braze/client.ts x: 4 # contributors y: 2006 line churn src/apps/backend/middleware/auth-middleware.ts x: 6 # contributors y: 732 line churn src/packages/database/database-environment.ts x: 2 # contributors y: 84 line churn src/packages/database/managed-database-secret.ts x: 2 # contributors y: 45 line churn src/packages/database/scripts/env/development/create-db-migration.ts x: 2 # contributors y: 182 line churn src/packages/database/scripts/env/remote/prepare-and-apply-remote-db-migrations.ts x: 2 # contributors y: 321 line churn src/apps/backend/utils/test-utils/panda-auth.ts x: 4 # contributors y: 276 line churn src/apps/frontend/public/mockServiceWorker.js x: 3 # contributors y: 1805 line churn src/apps/backend/utils/test-utils/server.ts x: 2 # contributors y: 93 line churn cdk/eslint.config.mjs x: 5 # contributors y: 31 line churn src/apps/frontend/src/index.css x: 1 # contributors y: 424 line churn
7237.0
line churn
  min: 3.0
  average: 642.33
  25th percentile: 141.5
  median: 317.0
  75th percentile: 780.0
  max: 7237.0
0 11.0
# contributors
min: 1.0 | average: 5.17 | 25th percentile: 3.0 | median: 5.0 | 75th percentile: 7.0 | max: 11.0

File Size vs. Line Churn: 309 points

src/apps/frontend/src/compose/ArticlePreviewCard.tsx x: 78 lines of code y: 984 line churn src/apps/frontend/src/compose/DispatchCreateNotificationModal.tsx x: 61 lines of code y: 1180 line churn src/apps/frontend/src/latest-content/LatestPublishedContentCard.tsx x: 55 lines of code y: 584 line churn src/apps/frontend/src/ui/LiveIndicator.tsx x: 38 lines of code y: 132 line churn src/apps/frontend/src/utils/pillar-colors.ts x: 22 lines of code y: 91 line churn src/apps/frontend/src/history/DispatchLandingHistoryView.stories.tsx x: 129 lines of code y: 517 line churn src/apps/frontend/src/themes.ts x: 1452 lines of code y: 7237 line churn src/apps/frontend/src/compose/ScrollWrapper.tsx x: 39 lines of code y: 212 line churn src/apps/frontend/src/history/DispatchLandingHistoryView.tsx x: 107 lines of code y: 475 line churn src/apps/frontend/src/history/HistoryTable.tsx x: 301 lines of code y: 1938 line churn src/apps/frontend/src/history/HistoryView.stories.tsx x: 316 lines of code y: 1677 line churn src/apps/frontend/src/history/HistoryView.tsx x: 114 lines of code y: 2791 line churn src/apps/frontend/src/compose/CreateAppAlertForm.stories.tsx x: 554 lines of code y: 3535 line churn src/apps/frontend/src/compose/CreateNewsletterEmailForm.stories.tsx x: 412 lines of code y: 3294 line churn src/apps/frontend/src/compose/NotificationFormWrapper.tsx x: 116 lines of code y: 595 line churn src/apps/frontend/src/frontend.tsx x: 55 lines of code y: 368 line churn src/apps/frontend/src/hooks/useUnsavedChanges.ts x: 20 lines of code y: 50 line churn src/apps/frontend/src/navigation/UnsavedChangesContext.ts x: 4 lines of code y: 10 line churn src/apps/frontend/src/compose/AppAlertReplaceImageSection.tsx x: 106 lines of code y: 1099 line churn src/apps/frontend/src/compose/DispatchLandingPage.tsx x: 151 lines of code y: 915 line churn src/apps/frontend/src/hooks/useImageUrlCheck.ts x: 106 lines of code y: 248 line churn src/apps/frontend/src/compose/PreviousNotificationsBar.stories.tsx x: 160 lines of code y: 436 line churn src/apps/frontend/src/compose/PreviousNotificationsBar.tsx x: 297 lines of code y: 1540 line churn src/apps/frontend/src/ui/Tooltip.tsx x: 146 lines of code y: 920 line churn src/apps/frontend/src/utils/relative-time.ts x: 88 lines of code y: 631 line churn src/apps/backend/middleware/serve-index.ts x: 53 lines of code y: 540 line churn src/apps/frontend/src/compose/DispatchInformationModal.stories.tsx x: 73 lines of code y: 216 line churn src/apps/frontend/src/compose/DispatchInformationModal.tsx x: 84 lines of code y: 293 line churn src/apps/frontend/src/compose/DispatchLandingPage.stories.tsx x: 360 lines of code y: 1957 line churn src/apps/frontend/src/support-links.ts x: 2 lines of code y: 26 line churn src/apps/frontend/src/testing/app-config.ts x: 20 lines of code y: 63 line churn src/packages/models/frontend-app-config.ts x: 13 lines of code y: 87 line churn cdk/lib/notifications.ts x: 331 lines of code y: 2404 line churn src/apps/backend/routers/content/index.ts x: 170 lines of code y: 1360 line churn src/apps/frontend/src/compose/ArticlePreviewCard.stories.tsx x: 172 lines of code y: 1379 line churn src/apps/frontend/src/testing/capi-fixtures.ts x: 78 lines of code y: 394 line churn src/apps/frontend/src/utils/article-presentation.ts x: 30 lines of code y: 320 line churn src/apps/frontend/src/utils/article-thumbnail.ts x: 27 lines of code y: 270 line churn src/apps/frontend/src/NotificationAlert.stories.tsx x: 161 lines of code y: 684 line churn src/apps/frontend/src/NotificationAlert.tsx x: 191 lines of code y: 962 line churn src/apps/frontend/src/history/HistoryAudienceFilter.tsx x: 103 lines of code y: 939 line churn src/apps/frontend/src/history/HistoryPage.stories.tsx x: 909 lines of code y: 4695 line churn src/apps/frontend/src/history/HistorySenderFilter.tsx x: 112 lines of code y: 914 line churn src/apps/frontend/src/layout/DispatchTile.stories.tsx x: 70 lines of code y: 498 line churn src/apps/frontend/src/preview/AppAlertPreviewSection.stories.tsx x: 22 lines of code y: 796 line churn src/apps/frontend/src/segment/Editions.stories.tsx x: 48 lines of code y: 183 line churn src/apps/frontend/src/segment/Editions.tsx x: 45 lines of code y: 272 line churn src/apps/frontend/src/segment/EditionsFormField.tsx x: 32 lines of code y: 144 line churn src/apps/frontend/src/segment/audience-fallbacks.ts x: 42 lines of code y: 173 line churn src/apps/frontend/src/segment/edition-options.ts x: 12 lines of code y: 135 line churn src/apps/frontend/src/send/DispatchReport.tsx x: 422 lines of code y: 2038 line churn src/apps/frontend/src/testing/handlers/channels.ts x: 81 lines of code y: 358 line churn src/apps/frontend/src/ui/PreviewPillList.stories.tsx x: 32 lines of code y: 263 line churn src/apps/frontend/src/utils/audience-edition-label.ts x: 45 lines of code y: 144 line churn src/apps/frontend/src/utils/display-text-helpers.ts x: 24 lines of code y: 214 line churn src/apps/frontend/src/utils/format-dispatch-target.ts x: 35 lines of code y: 291 line churn src/apps/frontend/src/utils/notification-history-mapper.ts x: 145 lines of code y: 1294 line churn src/packages/config/audiences.ts x: 409 lines of code y: 6925 line churn src/apps/frontend/.storybook/main.ts x: 11 lines of code y: 293 line churn src/apps/frontend/.storybook/preview.tsx x: 42 lines of code y: 407 line churn src/apps/frontend/src/AccessControlledLayout.tsx x: 27 lines of code y: 195 line churn src/apps/frontend/src/compose/CreateAppAlertTab.stories.tsx x: 730 lines of code y: 3275 line churn src/apps/frontend/src/compose/DispatchCreateNotificationModal.stories.tsx x: 97 lines of code y: 567 line churn src/apps/frontend/src/compose/NotificationFormProvider.stories.tsx x: 128 lines of code y: 1137 line churn src/apps/frontend/src/hooks/useNotificationHistory.ts x: 143 lines of code y: 859 line churn src/apps/frontend/src/hooks/useRelativeTime.ts x: 75 lines of code y: 599 line churn src/apps/frontend/src/latest-content/LatestPublishedContentCard.stories.tsx x: 56 lines of code y: 543 line churn src/apps/frontend/src/latest-content/LatestPublishedContentPanel.stories.tsx x: 277 lines of code y: 1390 line churn src/apps/frontend/src/latest-content/LatestPublishedContentPanel.tsx x: 169 lines of code y: 792 line churn src/apps/frontend/src/latest-content/latest-published-content.ts x: 126 lines of code y: 592 line churn src/apps/frontend/src/send/TestEmailForm.stories.tsx x: 199 lines of code y: 1056 line churn src/apps/frontend/src/testing/handlers/notifications.ts x: 27 lines of code y: 135 line churn src/apps/frontend/src/ui/EmptyState.tsx x: 32 lines of code y: 186 line churn src/packages/models/capi.ts x: 149 lines of code y: 938 line churn src/packages/services/capi/client.ts x: 169 lines of code y: 1328 line churn src/apps/frontend/src/compose/NotificationTabLayout.tsx x: 101 lines of code y: 462 line churn src/apps/frontend/src/compose/NoSendPermissionWarning.tsx x: 28 lines of code y: 111 line churn src/apps/frontend/src/layout/NoPermissionsTab.tsx x: 25 lines of code y: 87 line churn src/apps/frontend/src/compose/ArticleImportControl.tsx x: 222 lines of code y: 1317 line churn src/apps/frontend/src/hooks/usePreviousNotifications.ts x: 26 lines of code y: 124 line churn src/apps/frontend/src/testing/api-fixtures.ts x: 287 lines of code y: 1234 line churn src/apps/frontend/src/utils/history-send-time.ts x: 62 lines of code y: 681 line churn src/packages/models/index.ts x: 8 lines of code y: 65 line churn src/apps/frontend/src/compose/ReviewWarning.tsx x: 62 lines of code y: 329 line churn src/apps/frontend/src/history/HistoryFilters.tsx x: 32 lines of code y: 645 line churn src/apps/frontend/src/preview/PreviewToggle.stories.tsx x: 82 lines of code y: 852 line churn src/apps/frontend/src/preview/PreviewToggle.tsx x: 51 lines of code y: 374 line churn src/apps/frontend/src/ui/CollapsibleSection.stories.tsx x: 66 lines of code y: 150 line churn src/apps/frontend/src/ui/CollapsibleSection.tsx x: 60 lines of code y: 134 line churn src/apps/frontend/src/ui/SendTimeTooltip.tsx x: 42 lines of code y: 478 line churn src/apps/frontend/src/App.tsx x: 61 lines of code y: 1054 line churn src/apps/frontend/src/layout/MainLayout.tsx x: 118 lines of code y: 813 line churn src/apps/frontend/src/layout/NotFoundTab.tsx x: 29 lines of code y: 117 line churn src/apps/frontend/src/compose/CreateAppAlertForm.tsx x: 127 lines of code y: 980 line churn src/apps/frontend/src/compose/CreateAppAlertTab.tsx x: 48 lines of code y: 433 line churn src/apps/frontend/src/compose/CreateNewsletterEmailForm.tsx x: 129 lines of code y: 877 line churn src/apps/frontend/src/compose/CreateNewsletterEmailTab.stories.tsx x: 499 lines of code y: 1704 line churn src/apps/frontend/src/compose/CreateNewsletterEmailTab.tsx x: 54 lines of code y: 463 line churn src/apps/frontend/src/send/DispatchReport.stories.tsx x: 291 lines of code y: 1779 line churn src/apps/frontend/src/compose/ArticleThumbnailImageFormField.tsx x: 145 lines of code y: 894 line churn src/apps/frontend/src/testing/story-fixtures.ts x: 38 lines of code y: 311 line churn src/apps/frontend/src/utils/build-request-payloads.ts x: 129 lines of code y: 797 line churn src/apps/frontend/src/utils/notification-forms.ts x: 86 lines of code y: 708 line churn src/apps/backend/persistence/persist-notification.ts x: 224 lines of code y: 2109 line churn src/apps/backend/routers/notifications/index.ts x: 340 lines of code y: 4134 line churn src/apps/backend/routers/notifications/schemas/notification-list-query.ts x: 125 lines of code y: 877 line churn src/apps/backend/routers/notifications/schemas/notification-send-request.ts x: 454 lines of code y: 4634 line churn src/apps/backend/utils/test-utils/database.ts x: 106 lines of code y: 637 line churn src/apps/frontend/src/history/ClearHistoryFiltersButton.tsx x: 34 lines of code y: 249 line churn src/apps/frontend/src/history/HistoryAlertTypeFilter.tsx x: 107 lines of code y: 546 line churn src/apps/frontend/src/history/HistoryChannelFilter.tsx x: 96 lines of code y: 662 line churn src/apps/frontend/src/history/HistoryFailureTooltip.tsx x: 121 lines of code y: 702 line churn src/apps/frontend/src/history/HistoryPage.tsx x: 120 lines of code y: 974 line churn src/apps/frontend/src/history/HistoryStatusFilter.tsx x: 96 lines of code y: 781 line churn src/apps/frontend/src/segment/SegmentPicker.tsx x: 95 lines of code y: 1002 line churn src/apps/frontend/src/send/SendInfoPreviewPill.tsx x: 118 lines of code y: 611 line churn src/apps/frontend/src/types.ts x: 68 lines of code y: 624 line churn src/apps/frontend/src/utils/history-search-params.ts x: 132 lines of code y: 707 line churn src/apps/frontend/src/utils/option-values.ts x: 43 lines of code y: 275 line churn src/packages/config/channels.ts x: 20 lines of code y: 738 line churn src/packages/database/migrations/0007_add_notifications_article_id.sql x: 28 lines of code y: 239 line churn src/packages/database/repositories/notifications-repository.dbtest.ts x: 779 lines of code y: 4416 line churn src/packages/database/repositories/notifications-repository.ts x: 287 lines of code y: 2502 line churn src/packages/database/schema/notifications.ts x: 77 lines of code y: 564 line churn src/apps/frontend/src/schemas.ts x: 229 lines of code y: 971 line churn src/apps/frontend/src/compose/NotificationFormContext.tsx x: 73 lines of code y: 582 line churn src/apps/frontend/src/grid-client/grid-api.ts x: 124 lines of code y: 580 line churn src/apps/frontend/src/grid-client/grid-url-parsing.ts x: 69 lines of code y: 308 line churn src/apps/frontend/src/hooks/useLatestPublishedContent.ts x: 35 lines of code y: 224 line churn src/apps/frontend/src/hooks/useNotificationSenders.ts x: 21 lines of code y: 160 line churn src/apps/frontend/src/hooks/useSendNotification.ts x: 58 lines of code y: 442 line churn src/apps/frontend/src/testing/grid-fixtures.ts x: 18 lines of code y: 76 line churn src/apps/frontend/src/utils/form-validation.tsx x: 149 lines of code y: 992 line churn src/apps/backend/routers/notifications/index.dbtest.ts x: 711 lines of code y: 4014 line churn src/apps/frontend/src/compose/SideNavigationPanel.stories.tsx x: 60 lines of code y: 264 line churn src/apps/frontend/src/compose/SideNavigationPanel.tsx x: 207 lines of code y: 908 line churn src/apps/frontend/src/history/HistoryEmptyState.tsx x: 18 lines of code y: 323 line churn src/apps/frontend/src/preview/AndroidAlertPreview.tsx x: 109 lines of code y: 343 line churn src/apps/frontend/src/preview/IPhoneAlertPreview.tsx x: 113 lines of code y: 395 line churn src/apps/frontend/src/send/SendConfirmationModal.tsx x: 68 lines of code y: 514 line churn src/packages/models/api-contract/history-alert-type.ts x: 17 lines of code y: 88 line churn src/apps/frontend/src/compose/PreviewTextFormField.tsx x: 92 lines of code y: 502 line churn src/apps/frontend/src/preview/NewsletterEmailPreviewSection.stories.tsx x: 111 lines of code y: 1265 line churn src/apps/frontend/src/ui/EmptyState.stories.tsx x: 35 lines of code y: 162 line churn src/apps/frontend/src/history/HistorySearchFilter.tsx x: 52 lines of code y: 292 line churn src/packages/database/test-helpers.ts x: 112 lines of code y: 682 line churn src/packages/models/api-contract/audience.ts x: 141 lines of code y: 595 line churn src/apps/frontend/src/hooks/useDebouncedValue.ts x: 12 lines of code y: 60 line churn src/apps/frontend/src/preview/HTMLPreview.tsx x: 157 lines of code y: 1610 line churn src/apps/frontend/src/preview/NewsletterEmailPreview.stories.tsx x: 31 lines of code y: 530 line churn src/apps/frontend/src/preview/NewsletterEmailPreviewSection.tsx x: 62 lines of code y: 463 line churn src/apps/frontend/src/send/SendFailedModal.tsx x: 281 lines of code y: 1933 line churn src/apps/frontend/src/testing/mock-fetch-email.ts x: 69 lines of code y: 229 line churn src/apps/backend/app.ts x: 95 lines of code y: 1197 line churn src/apps/backend/routers/grafana/grafana-query-request.ts x: 30 lines of code y: 180 line churn src/apps/backend/routers/grafana/index.ts x: 149 lines of code y: 1020 line churn src/apps/frontend/src/api-client/query-client.ts x: 23 lines of code y: 238 line churn src/apps/frontend/src/api-client/redirect-to-login.ts x: 5 lines of code y: 112 line churn src/apps/frontend/src/compose/AlertTypeFormField.tsx x: 37 lines of code y: 279 line churn src/apps/frontend/src/compose/CharacterCount.tsx x: 85 lines of code y: 352 line churn src/apps/frontend/src/compose/CreateFormTitle.tsx x: 42 lines of code y: 151 line churn src/apps/frontend/src/compose/KickerFormField.tsx x: 40 lines of code y: 200 line churn src/apps/frontend/src/compose/NotificationFormProvider.tsx x: 96 lines of code y: 850 line churn src/apps/frontend/src/compose/NotificationFormSection.tsx x: 43 lines of code y: 246 line churn src/apps/frontend/src/compose/NotificationTextInput.stories.tsx x: 131 lines of code y: 760 line churn src/apps/frontend/src/compose/NotificationTextInput.tsx x: 159 lines of code y: 675 line churn src/apps/frontend/src/compose/SubjectFormField.tsx x: 45 lines of code y: 294 line churn src/apps/frontend/src/hooks/useChannelConstraints.ts x: 38 lines of code y: 228 line churn src/apps/frontend/src/layout/MainLayout.stories.tsx x: 97 lines of code y: 530 line churn src/apps/frontend/src/preview/AndroidAlertPreview.stories.tsx x: 62 lines of code y: 229 line churn src/apps/frontend/src/preview/AppAlertPreviewSection.tsx x: 91 lines of code y: 679 line churn src/apps/frontend/src/preview/IPhoneAlertPreview.stories.tsx x: 58 lines of code y: 217 line churn src/apps/frontend/src/preview/PreviewSection.tsx x: 77 lines of code y: 270 line churn src/apps/frontend/src/segment/FlagPreviewPill.tsx x: 39 lines of code y: 184 line churn src/apps/frontend/src/segment/useAudienceEditions.ts x: 40 lines of code y: 315 line churn src/apps/frontend/src/segment/useChannelAudiences.ts x: 37 lines of code y: 357 line churn src/apps/frontend/src/send/SendConfirmationModal.stories.tsx x: 47 lines of code y: 721 line churn src/apps/frontend/src/send/TestEmailForm.tsx x: 217 lines of code y: 1400 line churn src/apps/frontend/src/testing/mock-resolve-article-from-capi.ts x: 15 lines of code y: 112 line churn src/apps/frontend/src/testing/useNotificationFormStory.tsx x: 89 lines of code y: 681 line churn src/apps/frontend/src/ui/FlagAtom.tsx x: 31 lines of code y: 110 line churn src/apps/frontend/src/ui/LastUpdated.tsx x: 23 lines of code y: 205 line churn src/apps/frontend/src/ui/PreviewPillList.tsx x: 67 lines of code y: 317 line churn src/apps/frontend/src/ui/SelectableTile.tsx x: 106 lines of code y: 355 line churn src/apps/frontend/src/ui/flag-icons.tsx x: 186 lines of code y: 1358 line churn src/apps/frontend/src/utils/notification-composer-reducer.ts x: 99 lines of code y: 784 line churn src/apps/frontend/src/utils/resolve-article-from-capi.ts x: 19 lines of code y: 140 line churn src/apps/backend/middleware/error-middleware.ts x: 34 lines of code y: 558 line churn src/apps/backend/notification-channels/newsletter/dispatch-newsletter-test.ts x: 149 lines of code y: 1486 line churn src/apps/backend/notification-channels/newsletter/dispatch-newsletter.ts x: 131 lines of code y: 1058 line churn src/apps/backend/routers/preview/index.ts x: 115 lines of code y: 830 line churn src/apps/frontend/src/ui/ExternalLink.tsx x: 8 lines of code y: 36 line churn src/packages/services/email-rendering/client.ts x: 97 lines of code y: 601 line churn .github/dependabot.yml x: 42 lines of code y: 368 line churn src/apps/backend/notification-channels/app-push/dispatch-app-push-test.ts x: 37 lines of code y: 1311 line churn src/apps/backend/notification-channels/app-push/dispatch-app-push.ts x: 169 lines of code y: 1515 line churn src/apps/backend/notification-channels/dispatch-notification-test.ts x: 32 lines of code y: 453 line churn src/apps/backend/notification-channels/dispatch-notification.ts x: 43 lines of code y: 4536 line churn src/apps/backend/notification-channels/test-support.ts x: 87 lines of code y: 525 line churn src/apps/frontend/src/api-client/client.ts x: 175 lines of code y: 779 line churn src/apps/frontend/src/preview/PreviewSection.stories.tsx x: 10 lines of code y: 117 line churn src/apps/frontend/src/ui/RefreshButton.stories.tsx x: 31 lines of code y: 265 line churn src/apps/frontend/src/ui/Tooltip.stories.tsx x: 47 lines of code y: 346 line churn src/apps/frontend/src/utils/send-notification.ts x: 53 lines of code y: 305 line churn src/packages/services/mobile-n10n/client.ts x: 132 lines of code y: 995 line churn src/packages/utils/urls.ts x: 61 lines of code y: 566 line churn src/apps/backend/middleware/permissions-middleware.ts x: 33 lines of code y: 222 line churn src/apps/backend/middleware/static-assets-middleware.ts x: 15 lines of code y: 57 line churn src/apps/backend/notification-channels/dispatch-outcome.ts x: 26 lines of code y: 161 line churn src/apps/backend/notification-channels/shared.ts x: 48 lines of code y: 421 line churn src/apps/backend/routers/channels/index.ts x: 137 lines of code y: 1539 line churn src/apps/backend/utils/permissions/permissions-store.ts x: 21 lines of code y: 180 line churn src/apps/frontend/src/api-client/errors.ts x: 55 lines of code y: 270 line churn src/apps/frontend/src/compose/ChannelDisplay.tsx x: 67 lines of code y: 215 line churn src/apps/frontend/src/history/HistoryPagination.tsx x: 96 lines of code y: 300 line churn src/apps/frontend/src/send/DeliveryAndTimingSelector.tsx x: 48 lines of code y: 161 line churn src/apps/frontend/src/ui/TextLinkButton.tsx x: 43 lines of code y: 132 line churn src/apps/frontend/src/utils/fetch-email-preview.ts x: 15 lines of code y: 51 line churn src/apps/frontend/src/utils/html-helpers.ts x: 36 lines of code y: 129 line churn src/packages/config/index.ts x: 17 lines of code y: 266 line churn src/packages/database/client.ts x: 29 lines of code y: 410 line churn src/packages/database/migrations/0005_structured_dispatch_targets.sql x: 79 lines of code y: 375 line churn src/packages/database/repositories/notification-dispatches-repository.ts x: 40 lines of code y: 274 line churn src/packages/database/scripts/env/remote/helpers/aws.ts x: 110 lines of code y: 409 line churn src/packages/models/user-permissions.ts x: 4 lines of code y: 30 line churn src/packages/services/braze/client.ts x: 317 lines of code y: 2006 line churn src/apps/backend/middleware/auth-middleware.ts x: 58 lines of code y: 732 line churn src/packages/database/managed-database-secret.ts x: 12 lines of code y: 45 line churn src/packages/database/scripts/env/development/create-db-migration.ts x: 35 lines of code y: 182 line churn src/packages/database/scripts/env/remote/helpers/verify-remote-database-connection.ts x: 61 lines of code y: 219 line churn src/packages/database/scripts/env/remote/prepare-and-apply-remote-db-migrations.ts x: 47 lines of code y: 321 line churn src/packages/database/scripts/helpers/process.ts x: 41 lines of code y: 132 line churn src/packages/config/ssm.ts x: 119 lines of code y: 1259 line churn src/apps/backend/routers/health/index.ts x: 5 lines of code y: 70 line churn docker/docker-compose.local.yml x: 18 lines of code y: 155 line churn src/apps/backend/error-envelope.ts x: 18 lines of code y: 180 line churn src/apps/frontend/public/mockServiceWorker.js x: 232 lines of code y: 1805 line churn src/apps/backend/routers/user/index.ts x: 13 lines of code y: 833 line churn src/apps/frontend/src/index.ts x: 12 lines of code y: 174 line churn src/apps/backend/client-assets.ts x: 7 lines of code y: 98 line churn lefthook.yml x: 21 lines of code y: 142 line churn src/apps/backend/index.ts x: 6 lines of code y: 55 line churn cdk/eslint.config.mjs x: 2 lines of code y: 31 line churn scripts/check-pinned-deps.ts x: 53 lines of code y: 193 line churn src/apps/frontend/src/index.css x: 20 lines of code y: 424 line churn
7237.0
line churn
  min: 3.0
  average: 642.33
  25th percentile: 141.5
  median: 317.0
  75th percentile: 780.0
  max: 7237.0
0 1452.0
lines of code
min: 1.0 | average: 93.4 | 25th percentile: 25.0 | median: 49.0 | 75th percentile: 110.5 | max: 1452.0