Overview
File Change Frequency Overall
  • There are 82 files with 4,001 lines of code.
    • 0 files changed more than 100 times (0 lines of code)
    • 0 files changed 51-100 times (0 lines of code)
    • 8 files changed 21-50 times (341 lines of code)
    • 15 files changed 6-20 times (745 lines of code)
    • 59 files changed 1-5 times (2,915 lines of code)
0% | 0% | 8% | 18% | 72%
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 82 files with 4,001 lines of code.
    • 0 files changed by more than 25 contributors (0 lines of code)
    • 6 files changed by 11-25 contributors (255 lines of code)
    • 11 files changed by 6-10 contributors (555 lines of code)
    • 18 files changed by 2-5 contributors (445 lines of code)
    • 47 files changed by 1 contributor (2,746 lines of code)
0% | 6% | 13% | 11% | 68%
Legend:
26+
11-25
6-10
2-5
1

explore: grouped by folders | grouped by contributors count | data
File Change Frequency per File Extension
json, ts, scala, tsx, svg, md, feature, js, yaml, yml, gitignore, dockerfile, txt, sbt, sh, html, mjs, css, dockerignore, xml, editorconfig, properties, snap
File Change Frequency per Extension
The number of recorded file updates
101+
51-100
21-50
6-20
1-5
scala0% | 0% | 29% | 55% | 15%
html0% | 0% | 60% | 39% | 0%
yaml0% | 0% | 46% | 42% | 10%
ts0% | 0% | 0% | 12% | 87%
tsx0% | 0% | 0% | 0% | 100%
xml0% | 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
app0% | 0% | 28% | 56% | 15%
project0% | 0% | 100% | 0% | 0%
ROOT0% | 0% | 62% | 0% | 37%
cdk0% | 0% | 0% | 96% | 3%
.devcontainer0% | 0% | 0% | 100% | 0%
public0% | 0% | 0% | 0% | 100%
conf0% | 0% | 0% | 0% | 100%
nginx0% | 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
Application.scala
in app/controllers
45 2 2014-11-17 2026-08-19 47 18 +376 / -296 robin.edman david.furey
Versions.scala
in app/controllers
67 3 2014-11-19 2024-06-05 43 12 +500 / -372 robin.edman tom.richards
47 - 2016-06-08 2026-09-01 39 16 +583 / -460 simon dominic.kendrick
main.scala.html
in app/views
26 - 2014-11-19 2026-10-01 32 14 +175 / -119 robin.edman dominic.kendrick
Login.scala
in app/controllers
42 1 2014-11-17 2024-06-05 24 15 +181 / -82 robin.edman tom.richards
28 - 2022-10-05 2026-09-02 23 13 +151 / -91 becca.al.thompson david.furey
23 - 2017-05-12 2026-08-26 22 10 +154 / -102 shaun.dillon david.furey
Restore.scala
in app/controllers
63 2 2016-06-24 2026-09-02 21 9 +412 / -255 simon.hildrew dominic.kendrick
Management.scala
in app/controllers
30 - 2015-01-23 2024-06-05 20 9 +124 / -48 robin.edman tom.richards
Permissions.scala
in app/permissions
9 - 2015-10-23 2024-06-05 16 10 +180 / -161 james tom.richards
FlexibleApi.scala
in app/logic
63 4 2016-06-27 2026-09-02 13 7 +179 / -28 simon.hildrew dominic.kendrick
Export.scala
in app/controllers
167 10 2018-09-21 2026-08-19 12 9 +520 / -96 michael.barton david.furey
AWS.scala
in app/config
28 - 2018-02-27 2026-08-27 11 5 +198 / -188 maria-livia.chiorean dominic.kendrick
restorer2.ts
in cdk/lib
155 2 2026-07-24 2026-09-01 11 3 +802 / -220 david.furey dominic.kendrick
17 - 2016-06-07 2026-09-15 10 6 +43 / -9 simon.hildrew dominic.kendrick
AppConfig.scala
in app/config
56 1 2022-10-04 2026-09-02 10 6 +229 / -73 becca.al.thompson dominic.kendrick
devenv.yaml
in .devcontainer
21 - 2026-08-04 2026-09-15 8 1 +141 / -13 dominic.kendrick dominic.kendrick
32 2 2016-06-08 2026-08-27 8 6 +99 / -38 simon dominic.kendrick
FlexibleStack.scala
in app/models
34 1 2016-06-28 2022-10-10 8 6 +91 / -9 simon.hildrew 33927854+rebecca-thompson
Destination.scala
in app/models
22 1 2016-06-28 2017-12-04 7 3 +62 / -12 simon.hildrew maria-livia.chiorean
SnapshotApi.scala
in app/logic
61 5 2016-06-28 2024-03-14 7 6 +178 / -30 simon.hildrew david.furey
CORSable.scala
in app/helpers
22 1 2015-01-14 2017-12-04 6 3 +72 / -8 hugo.gibson maria-livia.chiorean
28 2 2024-05-30 2026-09-01 6 2 +116 / -40 tom.richards dominic.kendrick
Loggable.scala
in app/helpers
5 - 2015-05-11 2016-03-07 5 4 +56 / -25 hugo.gibson philip.mcmahon
ChangeDetails.scala
in app/models
9 - 2016-07-01 2017-12-04 5 3 +30 / -8 simon.hildrew maria-livia.chiorean
SnapshotId.scala
in app/models
14 - 2016-06-08 2024-03-14 5 3 +48 / -10 simon.hildrew david.furey
VersionCount.scala
in app/models
4 - 2016-06-08 2024-03-14 4 3 +16 / -4 simon.hildrew david.furey
Version.scala
in app/models
4 - 2016-06-08 2024-03-14 4 3 +16 / -4 simon.hildrew david.furey
User.scala
in app/models
6 - 2016-06-28 2024-03-14 4 3 +22 / -4 simon.hildrew david.furey
6 - 2016-06-08 2024-03-14 4 3 +20 / -4 simon.hildrew david.furey
HSTSFilter.scala
in app/helpers
10 1 2016-06-22 2024-03-14 4 3 +28 / -2 simon.hildrew david.furey
27 - 2016-06-22 2023-12-15 4 3 +80 / -10 simon.hildrew david.furey
Snapshot.scala
in app/models
3 - 2016-06-08 2016-06-21 3 2 +20 / -10 simon.hildrew simon.hildrew
5 - 2026-07-24 2026-08-18 3 2 +18 / -0 david.furey dom
Attempt.scala
in app/models
92 13 2016-06-27 2016-06-30 3 2 +314 / -0 simon.hildrew simon
5 - 2014-11-19 2016-06-07 2 3 +12 / -2 hugo.gibson simon.hildrew
NotFoundView.tsx
in public/src/app/components/views
3 - 2026-10-06 2026-10-06 1 1 +7 / -0 dominic.kendrick dominic.kendrick
RawHtml.tsx
in public/src/app/components/content-viewer/article
7 - 2026-10-06 2026-10-06 1 1 +18 / -0 dominic.kendrick dominic.kendrick
SplashView.tsx
in public/src/app/components/views
10 - 2026-10-06 2026-10-06 1 1 +16 / -0 dominic.kendrick dominic.kendrick
icons.ts
in public/src/app/components/styles
10 - 2026-10-06 2026-10-06 1 1 +13 / -0 dominic.kendrick dominic.kendrick
apiError.ts
in public/src/app/components/store
11 - 2026-10-06 2026-10-06 1 1 +16 / -0 dominic.kendrick dominic.kendrick
palette.ts
in public/src/app/components/styles
13 - 2026-10-06 2026-10-06 1 1 +16 / -0 dominic.kendrick dominic.kendrick
14 - 2026-10-06 2026-10-06 1 1 +34 / -4 dominic.kendrick dominic.kendrick
analytics.ts
in public/src/app/components/utils
15 - 2026-10-06 2026-10-06 1 1 +17 / -0 dominic.kendrick dominic.kendrick
main.tsx
in public/src/app
16 - 2026-10-06 2026-10-06 1 1 +21 / -0 dominic.kendrick dominic.kendrick
ArticleBody.tsx
in public/src/app/components/content-viewer/article
17 - 2026-10-06 2026-10-06 1 1 +23 / -0 dominic.kendrick dominic.kendrick
ArticleElementView.tsx
in public/src/app/components/content-viewer/article
18 - 2026-10-06 2026-10-06 1 1 +25 / -0 dominic.kendrick dominic.kendrick
dateFormat.ts
in public/src/app/components/utils
19 - 2026-10-06 2026-10-06 1 1 +36 / -0 dominic.kendrick dominic.kendrick
hooks.ts
in public/src/app/components/store
20 - 2026-10-06 2026-10-06 1 1 +33 / -0 dominic.kendrick dominic.kendrick
fetchSnapshotList.ts
in public/src/app/components/api
22 - 2026-10-06 2026-10-06 1 1 +38 / -0 dominic.kendrick dominic.kendrick
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
47 - 2016-06-08 2026-09-01 39 16 +583 / -460 simon dominic.kendrick
restorer2.ts
in cdk/lib
155 2 2026-07-24 2026-09-01 11 3 +802 / -220 david.furey dominic.kendrick
Versions.scala
in app/controllers
67 3 2014-11-19 2024-06-05 43 12 +500 / -372 robin.edman tom.richards
Application.scala
in app/controllers
45 2 2014-11-17 2026-08-19 47 18 +376 / -296 robin.edman david.furey
Restore.scala
in app/controllers
63 2 2016-06-24 2026-09-02 21 9 +412 / -255 simon.hildrew dominic.kendrick
Export.scala
in app/controllers
167 10 2018-09-21 2026-08-19 12 9 +520 / -96 michael.barton david.furey
RestoreModal.tsx
in public/src/app/components/restore-modal
502 - 2026-10-06 2026-10-06 1 1 +575 / -0 dominic.kendrick dominic.kendrick
AWS.scala
in app/config
28 - 2018-02-27 2026-08-27 11 5 +198 / -188 maria-livia.chiorean dominic.kendrick
Permissions.scala
in app/permissions
9 - 2015-10-23 2024-06-05 16 10 +180 / -161 james tom.richards
App.tsx
in public/src/app/components
45 - 2026-10-06 2026-10-06 1 1 +196 / -142 dominic.kendrick dominic.kendrick
Attempt.scala
in app/models
92 13 2016-06-27 2016-06-30 3 2 +314 / -0 simon.hildrew simon
AppConfig.scala
in app/config
56 1 2022-10-04 2026-09-02 10 6 +229 / -73 becca.al.thompson dominic.kendrick
main.scala.html
in app/views
26 - 2014-11-19 2026-10-01 32 14 +175 / -119 robin.edman dominic.kendrick
SnapshotListItem.tsx
in public/src/app/components/snapshot-sidebar
227 - 2026-10-06 2026-10-06 1 1 +269 / -0 dominic.kendrick dominic.kendrick
Login.scala
in app/controllers
42 1 2014-11-17 2024-06-05 24 15 +181 / -82 robin.edman tom.richards
23 - 2017-05-12 2026-08-26 22 10 +154 / -102 shaun.dillon david.furey
28 - 2022-10-05 2026-09-02 23 13 +151 / -91 becca.al.thompson david.furey
SnapshotApi.scala
in app/logic
61 5 2016-06-28 2024-03-14 7 6 +178 / -30 simon.hildrew david.furey
FlexibleApi.scala
in app/logic
63 4 2016-06-27 2026-09-02 13 7 +179 / -28 simon.hildrew dominic.kendrick
Management.scala
in app/controllers
30 - 2015-01-23 2024-06-05 20 9 +124 / -48 robin.edman tom.richards
snapshotId.ts
in public/src/app/components/models
125 1 2026-10-06 2026-10-06 1 1 +169 / -0 dominic.kendrick dominic.kendrick
snapshotContent.ts
in public/src/app/components/models
129 1 2026-10-06 2026-10-06 1 1 +166 / -0 dominic.kendrick dominic.kendrick
useRestoreForm.ts
in public/src/app/components/hooks
123 1 2026-10-06 2026-10-06 1 1 +158 / -0 dominic.kendrick dominic.kendrick
28 2 2024-05-30 2026-09-01 6 2 +116 / -40 tom.richards dominic.kendrick
devenv.yaml
in .devcontainer
21 - 2026-08-04 2026-09-15 8 1 +141 / -13 dominic.kendrick dominic.kendrick
32 2 2016-06-08 2026-08-27 8 6 +99 / -38 simon dominic.kendrick
useSnapshotContent.ts
in public/src/app/components/hooks
98 1 2026-10-06 2026-10-06 1 1 +134 / -0 dominic.kendrick dominic.kendrick
SnapshotSidebar.tsx
in public/src/app/components/snapshot-sidebar
81 - 2026-10-06 2026-10-06 1 1 +112 / -0 dominic.kendrick dominic.kendrick
fetchRestoreDestinations.ts
in public/src/app/components/api
78 - 2026-10-06 2026-10-06 1 1 +109 / -0 dominic.kendrick dominic.kendrick
ContentViewer.tsx
in public/src/app/components/content-viewer
83 - 2026-10-06 2026-10-06 1 1 +105 / -0 dominic.kendrick dominic.kendrick
FlexibleStack.scala
in app/models
34 1 2016-06-28 2022-10-10 8 6 +91 / -9 simon.hildrew 33927854+rebecca-thompson
ContentActions.tsx
in public/src/app/components/content-viewer
81 - 2026-10-06 2026-10-06 1 1 +93 / -0 dominic.kendrick dominic.kendrick
ArticleHeader.tsx
in public/src/app/components/snapshot-sidebar
73 - 2026-10-06 2026-10-06 1 1 +92 / -0 dominic.kendrick dominic.kendrick
viewerSlice.ts
in public/src/app/components/store
78 - 2026-10-06 2026-10-06 1 1 +92 / -0 dominic.kendrick dominic.kendrick
27 - 2016-06-22 2023-12-15 4 3 +80 / -10 simon.hildrew david.furey
useSnapshotKeyboardNav.ts
in public/src/app/components/hooks
70 - 2026-10-06 2026-10-06 1 1 +90 / -0 dominic.kendrick dominic.kendrick
globalStyles.ts
in public/src/app/components/styles
75 - 2026-10-06 2026-10-06 1 1 +87 / -0 dominic.kendrick dominic.kendrick
Loggable.scala
in app/helpers
5 - 2015-05-11 2016-03-07 5 4 +56 / -25 hugo.gibson philip.mcmahon
CORSable.scala
in app/helpers
22 1 2015-01-14 2017-12-04 6 3 +72 / -8 hugo.gibson maria-livia.chiorean
Destination.scala
in app/models
22 1 2016-06-28 2017-12-04 7 3 +62 / -12 simon.hildrew maria-livia.chiorean
ErrorModal.tsx
in public/src/app/components/error-modal
64 - 2026-10-06 2026-10-06 1 1 +70 / -0 dominic.kendrick dominic.kendrick
restorerApi.ts
in public/src/app/components/store
55 4 2026-10-06 2026-10-06 1 1 +69 / -0 dominic.kendrick dominic.kendrick
flexibleApi.ts
in public/src/app/components/store
52 3 2026-10-06 2026-10-06 1 1 +68 / -0 dominic.kendrick dominic.kendrick
ContentPanels.tsx
in public/src/app/components/content-viewer
55 - 2026-10-06 2026-10-06 1 1 +66 / -0 dominic.kendrick dominic.kendrick
SnapshotList.tsx
in public/src/app/components/snapshot-sidebar
50 - 2026-10-06 2026-10-06 1 1 +62 / -0 dominic.kendrick dominic.kendrick
SearchForm.tsx
in public/src/app/components
40 - 2026-10-06 2026-10-06 1 1 +61 / -0 dominic.kendrick dominic.kendrick
SnapshotId.scala
in app/models
14 - 2016-06-08 2024-03-14 5 3 +48 / -10 simon.hildrew david.furey
ContentFurniture.tsx
in public/src/app/components/content-viewer
46 - 2026-10-06 2026-10-06 1 1 +58 / -0 dominic.kendrick dominic.kendrick
17 - 2016-06-07 2026-09-15 10 6 +43 / -9 simon.hildrew dominic.kendrick
DeltaRow.tsx
in public/src/app/components/snapshot-sidebar
36 - 2026-10-06 2026-10-06 1 1 +50 / -0 dominic.kendrick dominic.kendrick
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
Application.scala
in app/controllers
45 2 2014-11-17 2026-08-19 47 18 +376 / -296 robin.edman david.furey
47 - 2016-06-08 2026-09-01 39 16 +583 / -460 simon dominic.kendrick
Login.scala
in app/controllers
42 1 2014-11-17 2024-06-05 24 15 +181 / -82 robin.edman tom.richards
main.scala.html
in app/views
26 - 2014-11-19 2026-10-01 32 14 +175 / -119 robin.edman dominic.kendrick
28 - 2022-10-05 2026-09-02 23 13 +151 / -91 becca.al.thompson david.furey
Versions.scala
in app/controllers
67 3 2014-11-19 2024-06-05 43 12 +500 / -372 robin.edman tom.richards
23 - 2017-05-12 2026-08-26 22 10 +154 / -102 shaun.dillon david.furey
Permissions.scala
in app/permissions
9 - 2015-10-23 2024-06-05 16 10 +180 / -161 james tom.richards
Restore.scala
in app/controllers
63 2 2016-06-24 2026-09-02 21 9 +412 / -255 simon.hildrew dominic.kendrick
Management.scala
in app/controllers
30 - 2015-01-23 2024-06-05 20 9 +124 / -48 robin.edman tom.richards
Export.scala
in app/controllers
167 10 2018-09-21 2026-08-19 12 9 +520 / -96 michael.barton david.furey
FlexibleApi.scala
in app/logic
63 4 2016-06-27 2026-09-02 13 7 +179 / -28 simon.hildrew dominic.kendrick
AppConfig.scala
in app/config
56 1 2022-10-04 2026-09-02 10 6 +229 / -73 becca.al.thompson dominic.kendrick
17 - 2016-06-07 2026-09-15 10 6 +43 / -9 simon.hildrew dominic.kendrick
FlexibleStack.scala
in app/models
34 1 2016-06-28 2022-10-10 8 6 +91 / -9 simon.hildrew 33927854+rebecca-thompson
32 2 2016-06-08 2026-08-27 8 6 +99 / -38 simon dominic.kendrick
SnapshotApi.scala
in app/logic
61 5 2016-06-28 2024-03-14 7 6 +178 / -30 simon.hildrew david.furey
AWS.scala
in app/config
28 - 2018-02-27 2026-08-27 11 5 +198 / -188 maria-livia.chiorean dominic.kendrick
Loggable.scala
in app/helpers
5 - 2015-05-11 2016-03-07 5 4 +56 / -25 hugo.gibson philip.mcmahon
restorer2.ts
in cdk/lib
155 2 2026-07-24 2026-09-01 11 3 +802 / -220 david.furey dominic.kendrick
Destination.scala
in app/models
22 1 2016-06-28 2017-12-04 7 3 +62 / -12 simon.hildrew maria-livia.chiorean
CORSable.scala
in app/helpers
22 1 2015-01-14 2017-12-04 6 3 +72 / -8 hugo.gibson maria-livia.chiorean
SnapshotId.scala
in app/models
14 - 2016-06-08 2024-03-14 5 3 +48 / -10 simon.hildrew david.furey
ChangeDetails.scala
in app/models
9 - 2016-07-01 2017-12-04 5 3 +30 / -8 simon.hildrew maria-livia.chiorean
6 - 2016-06-08 2024-03-14 4 3 +20 / -4 simon.hildrew david.furey
Version.scala
in app/models
4 - 2016-06-08 2024-03-14 4 3 +16 / -4 simon.hildrew david.furey
User.scala
in app/models
6 - 2016-06-28 2024-03-14 4 3 +22 / -4 simon.hildrew david.furey
VersionCount.scala
in app/models
4 - 2016-06-08 2024-03-14 4 3 +16 / -4 simon.hildrew david.furey
HSTSFilter.scala
in app/helpers
10 1 2016-06-22 2024-03-14 4 3 +28 / -2 simon.hildrew david.furey
27 - 2016-06-22 2023-12-15 4 3 +80 / -10 simon.hildrew david.furey
5 - 2014-11-19 2016-06-07 2 3 +12 / -2 hugo.gibson simon.hildrew
28 2 2024-05-30 2026-09-01 6 2 +116 / -40 tom.richards dominic.kendrick
5 - 2026-07-24 2026-08-18 3 2 +18 / -0 david.furey dom
Snapshot.scala
in app/models
3 - 2016-06-08 2016-06-21 3 2 +20 / -10 simon.hildrew simon.hildrew
Attempt.scala
in app/models
92 13 2016-06-27 2016-06-30 3 2 +314 / -0 simon.hildrew simon
devenv.yaml
in .devcontainer
21 - 2026-08-04 2026-09-15 8 1 +141 / -13 dominic.kendrick dominic.kendrick
main.tsx
in public/src/app
16 - 2026-10-06 2026-10-06 1 1 +21 / -0 dominic.kendrick dominic.kendrick
App.tsx
in public/src/app/components
45 - 2026-10-06 2026-10-06 1 1 +196 / -142 dominic.kendrick dominic.kendrick
dateFormat.ts
in public/src/app/components/utils
19 - 2026-10-06 2026-10-06 1 1 +36 / -0 dominic.kendrick dominic.kendrick
analytics.ts
in public/src/app/components/utils
15 - 2026-10-06 2026-10-06 1 1 +17 / -0 dominic.kendrick dominic.kendrick
snapshotId.ts
in public/src/app/components/models
125 1 2026-10-06 2026-10-06 1 1 +169 / -0 dominic.kendrick dominic.kendrick
snapshotContent.ts
in public/src/app/components/models
129 1 2026-10-06 2026-10-06 1 1 +166 / -0 dominic.kendrick dominic.kendrick
globalStyles.ts
in public/src/app/components/styles
75 - 2026-10-06 2026-10-06 1 1 +87 / -0 dominic.kendrick dominic.kendrick
palette.ts
in public/src/app/components/styles
13 - 2026-10-06 2026-10-06 1 1 +16 / -0 dominic.kendrick dominic.kendrick
icons.ts
in public/src/app/components/styles
10 - 2026-10-06 2026-10-06 1 1 +13 / -0 dominic.kendrick dominic.kendrick
AppHeader.tsx
in public/src/app/components
23 - 2026-10-06 2026-10-06 1 1 +29 / -0 dominic.kendrick dominic.kendrick
RestoreModal.tsx
in public/src/app/components/restore-modal
502 - 2026-10-06 2026-10-06 1 1 +575 / -0 dominic.kendrick dominic.kendrick
useBrowserRouter.ts
in public/src/app/components/hooks
23 - 2026-10-06 2026-10-06 1 1 +29 / -0 dominic.kendrick dominic.kendrick
useRestoreForm.ts
in public/src/app/components/hooks
123 1 2026-10-06 2026-10-06 1 1 +158 / -0 dominic.kendrick dominic.kendrick
useSnapshotKeyboardNav.ts
in public/src/app/components/hooks
70 - 2026-10-06 2026-10-06 1 1 +90 / -0 dominic.kendrick dominic.kendrick
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
RestoreModal.tsx
in public/src/app/components/restore-modal
502 - 2026-10-06 2026-10-06 1 1 +575 / -0 dominic.kendrick dominic.kendrick
SnapshotListItem.tsx
in public/src/app/components/snapshot-sidebar
227 - 2026-10-06 2026-10-06 1 1 +269 / -0 dominic.kendrick dominic.kendrick
snapshotContent.ts
in public/src/app/components/models
129 1 2026-10-06 2026-10-06 1 1 +166 / -0 dominic.kendrick dominic.kendrick
snapshotId.ts
in public/src/app/components/models
125 1 2026-10-06 2026-10-06 1 1 +169 / -0 dominic.kendrick dominic.kendrick
useRestoreForm.ts
in public/src/app/components/hooks
123 1 2026-10-06 2026-10-06 1 1 +158 / -0 dominic.kendrick dominic.kendrick
useSnapshotContent.ts
in public/src/app/components/hooks
98 1 2026-10-06 2026-10-06 1 1 +134 / -0 dominic.kendrick dominic.kendrick
ContentViewer.tsx
in public/src/app/components/content-viewer
83 - 2026-10-06 2026-10-06 1 1 +105 / -0 dominic.kendrick dominic.kendrick
SnapshotSidebar.tsx
in public/src/app/components/snapshot-sidebar
81 - 2026-10-06 2026-10-06 1 1 +112 / -0 dominic.kendrick dominic.kendrick
ContentActions.tsx
in public/src/app/components/content-viewer
81 - 2026-10-06 2026-10-06 1 1 +93 / -0 dominic.kendrick dominic.kendrick
fetchRestoreDestinations.ts
in public/src/app/components/api
78 - 2026-10-06 2026-10-06 1 1 +109 / -0 dominic.kendrick dominic.kendrick
viewerSlice.ts
in public/src/app/components/store
78 - 2026-10-06 2026-10-06 1 1 +92 / -0 dominic.kendrick dominic.kendrick
globalStyles.ts
in public/src/app/components/styles
75 - 2026-10-06 2026-10-06 1 1 +87 / -0 dominic.kendrick dominic.kendrick
ArticleHeader.tsx
in public/src/app/components/snapshot-sidebar
73 - 2026-10-06 2026-10-06 1 1 +92 / -0 dominic.kendrick dominic.kendrick
useSnapshotKeyboardNav.ts
in public/src/app/components/hooks
70 - 2026-10-06 2026-10-06 1 1 +90 / -0 dominic.kendrick dominic.kendrick
ErrorModal.tsx
in public/src/app/components/error-modal
64 - 2026-10-06 2026-10-06 1 1 +70 / -0 dominic.kendrick dominic.kendrick
ContentPanels.tsx
in public/src/app/components/content-viewer
55 - 2026-10-06 2026-10-06 1 1 +66 / -0 dominic.kendrick dominic.kendrick
restorerApi.ts
in public/src/app/components/store
55 4 2026-10-06 2026-10-06 1 1 +69 / -0 dominic.kendrick dominic.kendrick
flexibleApi.ts
in public/src/app/components/store
52 3 2026-10-06 2026-10-06 1 1 +68 / -0 dominic.kendrick dominic.kendrick
SnapshotList.tsx
in public/src/app/components/snapshot-sidebar
50 - 2026-10-06 2026-10-06 1 1 +62 / -0 dominic.kendrick dominic.kendrick
ContentFurniture.tsx
in public/src/app/components/content-viewer
46 - 2026-10-06 2026-10-06 1 1 +58 / -0 dominic.kendrick dominic.kendrick
App.tsx
in public/src/app/components
45 - 2026-10-06 2026-10-06 1 1 +196 / -142 dominic.kendrick dominic.kendrick
VersionsView.tsx
in public/src/app/components/views
42 - 2026-10-06 2026-10-06 1 1 +50 / -0 dominic.kendrick dominic.kendrick
SearchForm.tsx
in public/src/app/components
40 - 2026-10-06 2026-10-06 1 1 +61 / -0 dominic.kendrick dominic.kendrick
DeltaRow.tsx
in public/src/app/components/snapshot-sidebar
36 - 2026-10-06 2026-10-06 1 1 +50 / -0 dominic.kendrick dominic.kendrick
fetchUser.ts
in public/src/app/components/api
34 - 2026-10-06 2026-10-06 1 1 +49 / -0 dominic.kendrick dominic.kendrick
TimelineElementView.tsx
in public/src/app/components/content-viewer/article
31 - 2026-10-06 2026-10-06 1 1 +41 / -0 dominic.kendrick dominic.kendrick
ListElementView.tsx
in public/src/app/components/content-viewer/article
30 - 2026-10-06 2026-10-06 1 1 +40 / -0 dominic.kendrick dominic.kendrick
restoreContent.ts
in public/src/app/components/api
29 - 2026-10-06 2026-10-06 1 1 +41 / -0 dominic.kendrick dominic.kendrick
fetchSnapshot.ts
in public/src/app/components/api
27 - 2026-10-06 2026-10-06 1 1 +40 / -0 dominic.kendrick dominic.kendrick
store.ts
in public/src/app/components/store
25 - 2026-10-06 2026-10-06 1 1 +35 / -0 dominic.kendrick dominic.kendrick
AppHeader.tsx
in public/src/app/components
23 - 2026-10-06 2026-10-06 1 1 +29 / -0 dominic.kendrick dominic.kendrick
useBrowserRouter.ts
in public/src/app/components/hooks
23 - 2026-10-06 2026-10-06 1 1 +29 / -0 dominic.kendrick dominic.kendrick
fetchSnapshotList.ts
in public/src/app/components/api
22 - 2026-10-06 2026-10-06 1 1 +38 / -0 dominic.kendrick dominic.kendrick
devenv.yaml
in .devcontainer
21 - 2026-08-04 2026-09-15 8 1 +141 / -13 dominic.kendrick dominic.kendrick
hooks.ts
in public/src/app/components/store
20 - 2026-10-06 2026-10-06 1 1 +33 / -0 dominic.kendrick dominic.kendrick
dateFormat.ts
in public/src/app/components/utils
19 - 2026-10-06 2026-10-06 1 1 +36 / -0 dominic.kendrick dominic.kendrick
ArticleElementView.tsx
in public/src/app/components/content-viewer/article
18 - 2026-10-06 2026-10-06 1 1 +25 / -0 dominic.kendrick dominic.kendrick
ArticleBody.tsx
in public/src/app/components/content-viewer/article
17 - 2026-10-06 2026-10-06 1 1 +23 / -0 dominic.kendrick dominic.kendrick
main.tsx
in public/src/app
16 - 2026-10-06 2026-10-06 1 1 +21 / -0 dominic.kendrick dominic.kendrick
analytics.ts
in public/src/app/components/utils
15 - 2026-10-06 2026-10-06 1 1 +17 / -0 dominic.kendrick dominic.kendrick
14 - 2026-10-06 2026-10-06 1 1 +34 / -4 dominic.kendrick dominic.kendrick
palette.ts
in public/src/app/components/styles
13 - 2026-10-06 2026-10-06 1 1 +16 / -0 dominic.kendrick dominic.kendrick
apiError.ts
in public/src/app/components/store
11 - 2026-10-06 2026-10-06 1 1 +16 / -0 dominic.kendrick dominic.kendrick
icons.ts
in public/src/app/components/styles
10 - 2026-10-06 2026-10-06 1 1 +13 / -0 dominic.kendrick dominic.kendrick
SplashView.tsx
in public/src/app/components/views
10 - 2026-10-06 2026-10-06 1 1 +16 / -0 dominic.kendrick dominic.kendrick
RawHtml.tsx
in public/src/app/components/content-viewer/article
7 - 2026-10-06 2026-10-06 1 1 +18 / -0 dominic.kendrick dominic.kendrick
NotFoundView.tsx
in public/src/app/components/views
3 - 2026-10-06 2026-10-06 1 1 +7 / -0 dominic.kendrick dominic.kendrick
Attempt.scala
in app/models
92 13 2016-06-27 2016-06-30 3 2 +314 / -0 simon.hildrew simon
28 2 2024-05-30 2026-09-01 6 2 +116 / -40 tom.richards dominic.kendrick
5 - 2026-07-24 2026-08-18 3 2 +18 / -0 david.furey dom
Correlations

File Size vs. Number of Changes: 82 points

public/src/app/components/App.tsx x: 45 lines of code y: 1 # changes public/src/app/components/styles/globalStyles.ts x: 75 lines of code y: 1 # changes public/src/app/components/views/NotFoundView.tsx x: 3 lines of code y: 1 # changes public/src/app/components/views/SplashView.tsx x: 10 lines of code y: 1 # changes public/src/app/components/views/VersionsView.tsx x: 42 lines of code y: 1 # changes public/src/app/components/AppHeader.tsx x: 23 lines of code y: 1 # changes public/src/app/components/SearchForm.tsx x: 40 lines of code y: 1 # changes public/src/app/components/api/fetchRestoreDestinations.ts x: 78 lines of code y: 1 # changes public/src/app/components/api/fetchSnapshot.ts x: 27 lines of code y: 1 # changes public/src/app/components/api/fetchSnapshotList.ts x: 22 lines of code y: 1 # changes public/src/app/components/api/fetchUser.ts x: 34 lines of code y: 1 # changes public/src/app/components/api/restoreContent.ts x: 29 lines of code y: 1 # changes public/src/app/components/content-viewer/ContentActions.tsx x: 81 lines of code y: 1 # changes public/src/app/components/content-viewer/ContentFurniture.tsx x: 46 lines of code y: 1 # changes public/src/app/components/content-viewer/ContentPanels.tsx x: 55 lines of code y: 1 # changes public/src/app/components/content-viewer/ContentViewer.tsx x: 83 lines of code y: 1 # changes public/src/app/components/content-viewer/article/ArticleBody.tsx x: 17 lines of code y: 1 # changes public/src/app/components/content-viewer/article/ArticleElementView.tsx x: 18 lines of code y: 1 # changes public/src/app/components/content-viewer/article/ListElementView.tsx x: 30 lines of code y: 1 # changes public/src/app/components/content-viewer/article/RawHtml.tsx x: 7 lines of code y: 1 # changes public/src/app/components/content-viewer/article/TimelineElementView.tsx x: 31 lines of code y: 1 # changes public/src/app/components/error-modal/ErrorModal.tsx x: 64 lines of code y: 1 # changes public/src/app/components/hooks/useRestoreForm.ts x: 123 lines of code y: 1 # changes public/src/app/components/hooks/useSnapshotContent.ts x: 98 lines of code y: 1 # changes public/src/app/components/hooks/useSnapshotKeyboardNav.ts x: 70 lines of code y: 1 # changes public/src/app/components/models/snapshotContent.ts x: 129 lines of code y: 1 # changes public/src/app/components/models/snapshotId.ts x: 125 lines of code y: 1 # changes public/src/app/components/restore-modal/RestoreModal.tsx x: 502 lines of code y: 1 # changes public/src/app/components/snapshot-sidebar/ArticleHeader.tsx x: 73 lines of code y: 1 # changes public/src/app/components/snapshot-sidebar/DeltaRow.tsx x: 36 lines of code y: 1 # changes public/src/app/components/snapshot-sidebar/SnapshotList.tsx x: 50 lines of code y: 1 # changes public/src/app/components/snapshot-sidebar/SnapshotListItem.tsx x: 227 lines of code y: 1 # changes public/src/app/components/store/apiError.ts x: 11 lines of code y: 1 # changes public/src/app/components/store/flexibleApi.ts x: 52 lines of code y: 1 # changes public/src/app/components/store/hooks.ts x: 20 lines of code y: 1 # changes public/src/app/components/store/store.ts x: 25 lines of code y: 1 # changes public/src/app/components/styles/palette.ts x: 13 lines of code y: 1 # changes public/src/app/components/utils/analytics.ts x: 15 lines of code y: 1 # changes public/src/app/components/utils/dateFormat.ts x: 19 lines of code y: 1 # changes public/src/app/main.tsx x: 16 lines of code y: 1 # changes eslint.config.mjs x: 14 lines of code y: 1 # changes app/views/main.scala.html x: 26 lines of code y: 32 # changes .devcontainer/devenv.yaml x: 21 lines of code y: 8 # changes app/views/authError.scala.html x: 17 lines of code y: 10 # changes app/logic/FlexibleApi.scala x: 63 lines of code y: 13 # changes project/Dependencies.scala x: 28 lines of code y: 23 # changes app/config/AppConfig.scala x: 56 lines of code y: 10 # changes app/controllers/Restore.scala x: 63 lines of code y: 21 # changes cdk/lib/restorer2.ts x: 155 lines of code y: 11 # changes app/AppComponents.scala x: 47 lines of code y: 39 # changes app/auth/PanDomainAuthActions.scala x: 28 lines of code y: 6 # changes app/AppLoader.scala x: 32 lines of code y: 8 # changes app/config/AWS.scala x: 28 lines of code y: 11 # changes riff-raff.yaml x: 23 lines of code y: 22 # changes app/controllers/Application.scala x: 45 lines of code y: 47 # changes app/controllers/Export.scala x: 167 lines of code y: 12 # changes cdk/eslint.config.mjs x: 5 lines of code y: 3 # changes app/controllers/Login.scala x: 42 lines of code y: 24 # changes app/controllers/Management.scala x: 30 lines of code y: 20 # changes app/controllers/Versions.scala x: 67 lines of code y: 43 # changes app/permissions/Permissions.scala x: 9 lines of code y: 16 # changes app/helpers/HSTSFilter.scala x: 10 lines of code y: 4 # changes app/logic/SnapshotApi.scala x: 61 lines of code y: 7 # changes app/models/SnapshotId.scala x: 14 lines of code y: 5 # changes app/models/SnapshotMetadata.scala x: 6 lines of code y: 4 # changes app/models/Version.scala x: 4 lines of code y: 4 # changes conf/logback.xml x: 27 lines of code y: 4 # changes app/models/FlexibleStack.scala x: 34 lines of code y: 8 # changes app/helpers/CORSable.scala x: 22 lines of code y: 6 # changes app/models/ChangeDetails.scala x: 9 lines of code y: 5 # changes app/models/Destination.scala x: 22 lines of code y: 7 # changes app/models/Attempt.scala x: 92 lines of code y: 3 # changes app/models/Snapshot.scala x: 3 lines of code y: 3 # changes nginx/nginx-mapping.yml x: 5 lines of code y: 2 # changes app/helpers/Loggable.scala x: 5 lines of code y: 5 # changes
47.0
# changes
  min: 1.0
  average: 6.1
  25th percentile: 1.0
  median: 1.0
  75th percentile: 7.0
  max: 47.0
0 502.0
lines of code
min: 3.0 | average: 48.79 | 25th percentile: 15.75 | median: 29.5 | 75th percentile: 63.0 | max: 502.0

Number of Contributors vs. Number of Changes: 82 points

public/src/app/components/App.tsx x: 1 # contributors y: 1 # changes app/views/main.scala.html x: 14 # contributors y: 32 # changes .devcontainer/devenv.yaml x: 1 # contributors y: 8 # changes app/views/authError.scala.html x: 6 # contributors y: 10 # changes app/logic/FlexibleApi.scala x: 7 # contributors y: 13 # changes project/Dependencies.scala x: 13 # contributors y: 23 # changes app/controllers/Restore.scala x: 9 # contributors y: 21 # changes cdk/lib/restorer2.ts x: 3 # contributors y: 11 # changes app/AppComponents.scala x: 16 # contributors y: 39 # changes app/auth/PanDomainAuthActions.scala x: 2 # contributors y: 6 # changes app/AppLoader.scala x: 6 # contributors y: 8 # changes app/config/AWS.scala x: 5 # contributors y: 11 # changes riff-raff.yaml x: 10 # contributors y: 22 # changes app/controllers/Application.scala x: 18 # contributors y: 47 # changes app/controllers/Export.scala x: 9 # contributors y: 12 # changes cdk/eslint.config.mjs x: 2 # contributors y: 3 # changes app/controllers/Login.scala x: 15 # contributors y: 24 # changes app/controllers/Management.scala x: 9 # contributors y: 20 # changes app/controllers/Versions.scala x: 12 # contributors y: 43 # changes app/permissions/Permissions.scala x: 10 # contributors y: 16 # changes app/helpers/HSTSFilter.scala x: 3 # contributors y: 4 # changes app/logic/SnapshotApi.scala x: 6 # contributors y: 7 # changes app/models/SnapshotId.scala x: 3 # contributors y: 5 # changes app/helpers/CORSable.scala x: 3 # contributors y: 6 # changes app/models/Destination.scala x: 3 # contributors y: 7 # changes nginx/nginx-mapping.yml x: 3 # contributors y: 2 # changes app/helpers/Loggable.scala x: 4 # contributors y: 5 # changes
47.0
# changes
  min: 1.0
  average: 6.1
  25th percentile: 1.0
  median: 1.0
  75th percentile: 7.0
  max: 47.0
0 18.0
# contributors
min: 1.0 | average: 3.32 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 3.0 | max: 18.0

Number of Contributors vs. File Size: 82 points

public/src/app/components/App.tsx x: 1 # contributors y: 45 lines of code public/src/app/components/styles/globalStyles.ts x: 1 # contributors y: 75 lines of code public/src/app/components/views/NotFoundView.tsx x: 1 # contributors y: 3 lines of code public/src/app/components/views/SplashView.tsx x: 1 # contributors y: 10 lines of code public/src/app/components/views/VersionsView.tsx x: 1 # contributors y: 42 lines of code public/src/app/components/AppHeader.tsx x: 1 # contributors y: 23 lines of code public/src/app/components/SearchForm.tsx x: 1 # contributors y: 40 lines of code public/src/app/components/api/fetchRestoreDestinations.ts x: 1 # contributors y: 78 lines of code public/src/app/components/api/fetchSnapshot.ts x: 1 # contributors y: 27 lines of code public/src/app/components/api/fetchUser.ts x: 1 # contributors y: 34 lines of code public/src/app/components/api/restoreContent.ts x: 1 # contributors y: 29 lines of code public/src/app/components/content-viewer/ContentActions.tsx x: 1 # contributors y: 81 lines of code public/src/app/components/content-viewer/ContentFurniture.tsx x: 1 # contributors y: 46 lines of code public/src/app/components/content-viewer/ContentPanels.tsx x: 1 # contributors y: 55 lines of code public/src/app/components/content-viewer/ContentViewer.tsx x: 1 # contributors y: 83 lines of code public/src/app/components/content-viewer/article/ArticleBody.tsx x: 1 # contributors y: 17 lines of code public/src/app/components/content-viewer/article/ArticleElementView.tsx x: 1 # contributors y: 18 lines of code public/src/app/components/content-viewer/article/ListElementView.tsx x: 1 # contributors y: 30 lines of code public/src/app/components/content-viewer/article/RawHtml.tsx x: 1 # contributors y: 7 lines of code public/src/app/components/error-modal/ErrorModal.tsx x: 1 # contributors y: 64 lines of code public/src/app/components/hooks/useRestoreForm.ts x: 1 # contributors y: 123 lines of code public/src/app/components/hooks/useSnapshotContent.ts x: 1 # contributors y: 98 lines of code public/src/app/components/hooks/useSnapshotKeyboardNav.ts x: 1 # contributors y: 70 lines of code public/src/app/components/models/snapshotContent.ts x: 1 # contributors y: 129 lines of code public/src/app/components/models/snapshotId.ts x: 1 # contributors y: 125 lines of code public/src/app/components/restore-modal/RestoreModal.tsx x: 1 # contributors y: 502 lines of code public/src/app/components/snapshot-sidebar/ArticleHeader.tsx x: 1 # contributors y: 73 lines of code public/src/app/components/snapshot-sidebar/DeltaRow.tsx x: 1 # contributors y: 36 lines of code public/src/app/components/snapshot-sidebar/SnapshotList.tsx x: 1 # contributors y: 50 lines of code public/src/app/components/snapshot-sidebar/SnapshotListItem.tsx x: 1 # contributors y: 227 lines of code public/src/app/components/store/flexibleApi.ts x: 1 # contributors y: 52 lines of code public/src/app/components/store/hooks.ts x: 1 # contributors y: 20 lines of code public/src/app/components/store/store.ts x: 1 # contributors y: 25 lines of code public/src/app/components/styles/palette.ts x: 1 # contributors y: 13 lines of code public/src/app/components/utils/analytics.ts x: 1 # contributors y: 15 lines of code app/views/main.scala.html x: 14 # contributors y: 26 lines of code app/views/authError.scala.html x: 6 # contributors y: 17 lines of code app/logic/FlexibleApi.scala x: 7 # contributors y: 63 lines of code project/Dependencies.scala x: 13 # contributors y: 28 lines of code app/config/AppConfig.scala x: 6 # contributors y: 56 lines of code app/controllers/Restore.scala x: 9 # contributors y: 63 lines of code cdk/lib/restorer2.ts x: 3 # contributors y: 155 lines of code app/AppComponents.scala x: 16 # contributors y: 47 lines of code app/auth/PanDomainAuthActions.scala x: 2 # contributors y: 28 lines of code app/AppLoader.scala x: 6 # contributors y: 32 lines of code app/config/AWS.scala x: 5 # contributors y: 28 lines of code riff-raff.yaml x: 10 # contributors y: 23 lines of code app/controllers/Application.scala x: 18 # contributors y: 45 lines of code app/controllers/Export.scala x: 9 # contributors y: 167 lines of code cdk/eslint.config.mjs x: 2 # contributors y: 5 lines of code app/controllers/Login.scala x: 15 # contributors y: 42 lines of code app/controllers/Management.scala x: 9 # contributors y: 30 lines of code app/controllers/Versions.scala x: 12 # contributors y: 67 lines of code app/permissions/Permissions.scala x: 10 # contributors y: 9 lines of code app/helpers/HSTSFilter.scala x: 3 # contributors y: 10 lines of code app/logic/SnapshotApi.scala x: 6 # contributors y: 61 lines of code app/models/SnapshotId.scala x: 3 # contributors y: 14 lines of code app/models/SnapshotMetadata.scala x: 3 # contributors y: 6 lines of code app/models/Version.scala x: 3 # contributors y: 4 lines of code conf/logback.xml x: 3 # contributors y: 27 lines of code app/models/FlexibleStack.scala x: 6 # contributors y: 34 lines of code app/helpers/CORSable.scala x: 3 # contributors y: 22 lines of code app/models/ChangeDetails.scala x: 3 # contributors y: 9 lines of code app/models/Attempt.scala x: 2 # contributors y: 92 lines of code app/models/Snapshot.scala x: 2 # contributors y: 3 lines of code app/helpers/Loggable.scala x: 4 # contributors y: 5 lines of code
502.0
lines of code
  min: 3.0
  average: 48.79
  25th percentile: 15.75
  median: 29.5
  75th percentile: 63.0
  max: 502.0
0 18.0
# contributors
min: 1.0 | average: 3.32 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 3.0 | max: 18.0

Number of Changes vs. Line Churn: 604 points

public/src/app/components/App.tsx x: 1 # changes y: 338 line churn e2e-tests/features/analytics.feature x: 3 # changes y: 44 line churn e2e-tests/features/content-restore.feature x: 3 # changes y: 576 line churn e2e-tests/features/content-search.feature x: 5 # changes y: 170 line churn e2e-tests/features/content-snapshot-content.feature x: 5 # changes y: 492 line churn e2e-tests/setup/stackContainers.ts x: 15 # changes y: 1777 line churn e2e-tests/steps/content-snapshot-content.steps.ts x: 10 # changes y: 1678 line churn e2e-tests/steps/content-version-list.steps.ts x: 6 # changes y: 1130 line churn jest.config.js x: 6 # changes y: 80 line churn package.json x: 54 # changes y: 749 line churn public/javascripts/app/components/App.tsx x: 4 # changes y: 641 line churn public/javascripts/app/components/AppHeader.tsx x: 4 # changes y: 243 line churn public/javascripts/app/components/SearchForm.tsx x: 7 # changes y: 255 line churn public/javascripts/app/components/hooks/useSnapshotContent.ts x: 5 # changes y: 874 line churn public/javascripts/app/components/models/snapshotId.ts x: 6 # changes y: 531 line churn public/javascripts/app/components/restore-modal/RestoreModal.tsx x: 7 # changes y: 2605 line churn public/javascripts/app/components/snapshot-sidebar/ArticleHeader.tsx x: 9 # changes y: 482 line churn public/javascripts/app/components/snapshot-sidebar/DeltaRow.tsx x: 10 # changes y: 270 line churn public/javascripts/app/components/snapshot-sidebar/SnapshotList.tsx x: 9 # changes y: 282 line churn public/javascripts/app/components/snapshot-sidebar/SnapshotSidebar.tsx x: 10 # changes y: 776 line churn public/javascripts/app/lib/icons/svg/arrow-down.svg x: 2 # changes y: 9 line churn public/src/app/components/restore-modal/RestoreModal.tsx x: 1 # changes y: 575 line churn tsconfig.json x: 8 # changes y: 76 line churn webpack.config.js x: 11 # changes y: 336 line churn .github/workflows/ci.yml x: 23 # changes y: 334 line churn package-lock.json x: 28 # changes y: 110160 line churn app/views/main.scala.html x: 32 # changes y: 294 line churn conf/routes x: 41 # changes y: 187 line churn public/javascripts/app/controllers/SnapshotListCtrl.js x: 26 # changes y: 477 line churn public/javascripts/app/controllers/index.js x: 16 # changes y: 130 line churn public/javascripts/app/main.js x: 21 # changes y: 280 line churn public/javascripts/app/models/SnapshotIdModel.js x: 15 # changes y: 656 line churn public/javascripts/app/services/index.js x: 15 # changes y: 114 line churn public/javascripts/app/templates/restore-list.html x: 53 # changes y: 2369 line churn public/sass/components/sidebar.scss x: 14 # changes y: 87 line churn public/sass/components/snapshot-list.scss x: 23 # changes y: 1421 line churn public/sass/components/text.scss x: 29 # changes y: 885 line churn public/javascripts/app/collections/SnapshotIdModels.js x: 12 # changes y: 404 line churn public/javascripts/app/collections/SnapshotIdModels.test.js x: 4 # changes y: 952 line churn public/javascripts/app/components/utils/mediator.ts x: 8 # changes y: 764 line churn rfc/redux-migration-spec.md x: 2 # changes y: 452 line churn public/sass/components/modal.scss x: 13 # changes y: 981 line churn e2e-tests/fixtures/snapshots/6aa258d98f080f2ddaddc8dd/2026-09-10T23:02:47.676Z.json x: 2 # changes y: 3662 line churn public/javascripts/app/controllers/SnapshotContentCtrl.js x: 29 # changes y: 665 line churn public/javascripts/app/models/SnapshotModel.js x: 35 # changes y: 1050 line churn public/sass/components/snapshot-content.scss x: 22 # changes y: 468 line churn README.md x: 23 # changes y: 675 line churn e2e-tests/steps/content-restore.steps.ts x: 7 # changes y: 1684 line churn build.sbt x: 59 # changes y: 585 line churn public/javascripts/app/components/snapshot-sidebar/styles.ts x: 4 # changes y: 2094 line churn public/javascripts/app/controllers/RestoreFormCtrl.js x: 16 # changes y: 835 line churn public/javascripts/app/services/RestoreService.js x: 19 # changes y: 432 line churn public/javascripts/app/controllers/SnapshotListInteractionCtrl.js x: 17 # changes y: 590 line churn app/logic/FlexibleApi.scala x: 13 # changes y: 207 line churn app/controllers/Restore.scala x: 21 # changes y: 667 line churn e2e-tests/fixtures/snapshots/000000000000000000000001/2026-06-26T11:26:27.839Z.json x: 2 # changes y: 2096 line churn e2e-tests/fixtures/snapshots/54a2b86be4b048dfa4053a48/2026-06-26T12:16:14.669Z.json x: 2 # changes y: 3182 line churn e2e-tests/fixtures/snapshots/55901e70e4b0c9bda8d8ab20/2026-06-26T13:01:07.919Z.json x: 2 # changes y: 2316 line churn e2e-tests/fixtures/snapshots/568c4110e4b0c73bdb0e52df/2026-06-12T03_21_15.018Z.json x: 4 # changes y: 3762 line churn e2e-tests/fixtures/snapshots/569cdccee4b0e63c102ed861/2026-06-26T17:01:25.174Z.json x: 2 # changes y: 1362 line churn e2e-tests/fixtures/snapshots/58e4eab7e4b01ca21818a13e/2026-06-26T16:31:05.633Z.json x: 2 # changes y: 2862 line churn e2e-tests/fixtures/snapshots/5a65beade4b063d00a114104/2026-06-26T16:16:07.560Z.json x: 2 # changes y: 1132 line churn cdk/lib/__snapshots__/restorer2.test.ts.snap x: 9 # changes y: 16744 line churn cdk/lib/restorer2.ts x: 11 # changes y: 1022 line churn app/AppComponents.scala x: 39 # changes y: 1043 line churn tests/e2e/stack.spec.js x: 3 # changes y: 1010 line churn tests/e2e/steps/content-snapshot-content.steps.ts x: 5 # changes y: 1570 line churn tests/package-lock.json x: 2 # changes y: 7026 line churn conf/application.conf x: 30 # changes y: 302 line churn cloudformation/restorer.cfn.yaml x: 5 # changes y: 2444 line churn riff-raff.yaml x: 22 # changes y: 256 line churn app/controllers/Application.scala x: 47 # changes y: 672 line churn app/controllers/Export.scala x: 12 # changes y: 616 line churn cdk/package-lock.json x: 3 # changes y: 34176 line churn app/controllers/Login.scala x: 24 # changes y: 263 line churn app/controllers/Management.scala x: 20 # changes y: 172 line churn app/controllers/Versions.scala x: 43 # changes y: 872 line churn app/config/RestorerConfig.scala x: 42 # changes y: 832 line churn app/assets/javascripts/index.js x: 13 # changes y: 760 line churn public/config.js x: 22 # changes y: 1437 line churn app/s3/S3.scala x: 35 # changes y: 1349 line churn cloudformation/restorer.json x: 29 # changes y: 3060 line churn app/views/Versions/index.scala.html x: 17 # changes y: 334 line churn conf/whitelist.conf x: 25 # changes y: 865 line churn workbench.xmi x: 2 # changes y: 7672 line churn
110160.0
line churn
  min: 1.0
  average: 599.42
  25th percentile: 48.0
  median: 96.0
  75th percentile: 317.0
  max: 110160.0
0 59.0
# changes
min: 1.0 | average: 5.09 | 25th percentile: 2.0 | median: 3.0 | 75th percentile: 5.0 | max: 59.0

Number of Contributors vs. Line Churn: 82 points

public/src/app/components/App.tsx x: 1 # contributors y: 338 line churn public/src/app/components/styles/globalStyles.ts x: 1 # contributors y: 87 line churn public/src/app/components/views/NotFoundView.tsx x: 1 # contributors y: 7 line churn public/src/app/components/views/SplashView.tsx x: 1 # contributors y: 16 line churn public/src/app/components/views/VersionsView.tsx x: 1 # contributors y: 50 line churn public/src/app/components/AppHeader.tsx x: 1 # contributors y: 29 line churn public/src/app/components/SearchForm.tsx x: 1 # contributors y: 61 line churn public/src/app/components/api/fetchRestoreDestinations.ts x: 1 # contributors y: 109 line churn public/src/app/components/api/fetchSnapshot.ts x: 1 # contributors y: 40 line churn public/src/app/components/api/fetchUser.ts x: 1 # contributors y: 49 line churn public/src/app/components/content-viewer/ContentActions.tsx x: 1 # contributors y: 93 line churn public/src/app/components/content-viewer/ContentPanels.tsx x: 1 # contributors y: 66 line churn public/src/app/components/content-viewer/ContentViewer.tsx x: 1 # contributors y: 105 line churn public/src/app/components/content-viewer/article/ArticleBody.tsx x: 1 # contributors y: 23 line churn public/src/app/components/content-viewer/article/ArticleElementView.tsx x: 1 # contributors y: 25 line churn public/src/app/components/content-viewer/article/RawHtml.tsx x: 1 # contributors y: 18 line churn public/src/app/components/error-modal/ErrorModal.tsx x: 1 # contributors y: 70 line churn public/src/app/components/hooks/useRestoreForm.ts x: 1 # contributors y: 158 line churn public/src/app/components/hooks/useSnapshotContent.ts x: 1 # contributors y: 134 line churn public/src/app/components/models/snapshotContent.ts x: 1 # contributors y: 166 line churn public/src/app/components/models/snapshotId.ts x: 1 # contributors y: 169 line churn public/src/app/components/restore-modal/RestoreModal.tsx x: 1 # contributors y: 575 line churn public/src/app/components/snapshot-sidebar/SnapshotList.tsx x: 1 # contributors y: 62 line churn public/src/app/components/snapshot-sidebar/SnapshotListItem.tsx x: 1 # contributors y: 269 line churn public/src/app/components/snapshot-sidebar/SnapshotSidebar.tsx x: 1 # contributors y: 112 line churn public/src/app/components/store/hooks.ts x: 1 # contributors y: 33 line churn app/views/main.scala.html x: 14 # contributors y: 294 line churn .devcontainer/devenv.yaml x: 1 # contributors y: 154 line churn app/views/authError.scala.html x: 6 # contributors y: 52 line churn app/logic/FlexibleApi.scala x: 7 # contributors y: 207 line churn project/Dependencies.scala x: 13 # contributors y: 242 line churn app/config/AppConfig.scala x: 6 # contributors y: 302 line churn app/controllers/Restore.scala x: 9 # contributors y: 667 line churn cdk/lib/restorer2.ts x: 3 # contributors y: 1022 line churn app/AppComponents.scala x: 16 # contributors y: 1043 line churn app/auth/PanDomainAuthActions.scala x: 2 # contributors y: 156 line churn app/AppLoader.scala x: 6 # contributors y: 137 line churn app/config/AWS.scala x: 5 # contributors y: 386 line churn riff-raff.yaml x: 10 # contributors y: 256 line churn app/controllers/Application.scala x: 18 # contributors y: 672 line churn app/controllers/Export.scala x: 9 # contributors y: 616 line churn cdk/eslint.config.mjs x: 2 # contributors y: 18 line churn app/controllers/Login.scala x: 15 # contributors y: 263 line churn app/controllers/Management.scala x: 9 # contributors y: 172 line churn app/controllers/Versions.scala x: 12 # contributors y: 872 line churn app/permissions/Permissions.scala x: 10 # contributors y: 341 line churn app/helpers/HSTSFilter.scala x: 3 # contributors y: 30 line churn app/logic/SnapshotApi.scala x: 6 # contributors y: 208 line churn app/models/SnapshotId.scala x: 3 # contributors y: 58 line churn app/models/SnapshotMetadata.scala x: 3 # contributors y: 24 line churn app/models/User.scala x: 3 # contributors y: 26 line churn app/models/Version.scala x: 3 # contributors y: 20 line churn conf/logback.xml x: 3 # contributors y: 90 line churn app/models/FlexibleStack.scala x: 6 # contributors y: 100 line churn app/helpers/CORSable.scala x: 3 # contributors y: 80 line churn app/models/ChangeDetails.scala x: 3 # contributors y: 38 line churn app/models/Destination.scala x: 3 # contributors y: 74 line churn app/models/Attempt.scala x: 2 # contributors y: 314 line churn app/models/Snapshot.scala x: 2 # contributors y: 30 line churn nginx/nginx-mapping.yml x: 3 # contributors y: 14 line churn app/helpers/Loggable.scala x: 4 # contributors y: 81 line churn
1043.0
line churn
  min: 7.0
  average: 156.62
  25th percentile: 32.25
  median: 69.5
  75th percentile: 169.75
  max: 1043.0
0 18.0
# contributors
min: 1.0 | average: 3.32 | 25th percentile: 1.0 | median: 1.0 | 75th percentile: 3.0 | max: 18.0

File Size vs. Line Churn: 82 points

public/src/app/components/App.tsx x: 45 lines of code y: 338 line churn public/src/app/components/styles/globalStyles.ts x: 75 lines of code y: 87 line churn public/src/app/components/views/NotFoundView.tsx x: 3 lines of code y: 7 line churn public/src/app/components/views/SplashView.tsx x: 10 lines of code y: 16 line churn public/src/app/components/views/VersionsView.tsx x: 42 lines of code y: 50 line churn public/src/app/components/AppHeader.tsx x: 23 lines of code y: 29 line churn public/src/app/components/SearchForm.tsx x: 40 lines of code y: 61 line churn public/src/app/components/api/fetchRestoreDestinations.ts x: 78 lines of code y: 109 line churn public/src/app/components/api/fetchSnapshot.ts x: 27 lines of code y: 40 line churn public/src/app/components/api/fetchSnapshotList.ts x: 22 lines of code y: 38 line churn public/src/app/components/api/fetchUser.ts x: 34 lines of code y: 49 line churn public/src/app/components/api/restoreContent.ts x: 29 lines of code y: 41 line churn public/src/app/components/content-viewer/ContentActions.tsx x: 81 lines of code y: 93 line churn public/src/app/components/content-viewer/ContentFurniture.tsx x: 46 lines of code y: 58 line churn public/src/app/components/content-viewer/ContentPanels.tsx x: 55 lines of code y: 66 line churn public/src/app/components/content-viewer/ContentViewer.tsx x: 83 lines of code y: 105 line churn public/src/app/components/content-viewer/article/ArticleBody.tsx x: 17 lines of code y: 23 line churn public/src/app/components/content-viewer/article/ArticleElementView.tsx x: 18 lines of code y: 25 line churn public/src/app/components/content-viewer/article/ListElementView.tsx x: 30 lines of code y: 40 line churn public/src/app/components/content-viewer/article/RawHtml.tsx x: 7 lines of code y: 18 line churn public/src/app/components/content-viewer/article/TimelineElementView.tsx x: 31 lines of code y: 41 line churn public/src/app/components/error-modal/ErrorModal.tsx x: 64 lines of code y: 70 line churn public/src/app/components/hooks/useRestoreForm.ts x: 123 lines of code y: 158 line churn public/src/app/components/hooks/useSnapshotContent.ts x: 98 lines of code y: 134 line churn public/src/app/components/hooks/useSnapshotKeyboardNav.ts x: 70 lines of code y: 90 line churn public/src/app/components/models/snapshotContent.ts x: 129 lines of code y: 166 line churn public/src/app/components/models/snapshotId.ts x: 125 lines of code y: 169 line churn public/src/app/components/restore-modal/RestoreModal.tsx x: 502 lines of code y: 575 line churn public/src/app/components/snapshot-sidebar/ArticleHeader.tsx x: 73 lines of code y: 92 line churn public/src/app/components/snapshot-sidebar/DeltaRow.tsx x: 36 lines of code y: 50 line churn public/src/app/components/snapshot-sidebar/SnapshotList.tsx x: 50 lines of code y: 62 line churn public/src/app/components/snapshot-sidebar/SnapshotListItem.tsx x: 227 lines of code y: 269 line churn public/src/app/components/snapshot-sidebar/SnapshotSidebar.tsx x: 81 lines of code y: 112 line churn public/src/app/components/store/apiError.ts x: 11 lines of code y: 16 line churn public/src/app/components/store/flexibleApi.ts x: 52 lines of code y: 68 line churn public/src/app/components/store/hooks.ts x: 20 lines of code y: 33 line churn public/src/app/components/store/store.ts x: 25 lines of code y: 35 line churn public/src/app/components/store/viewerSlice.ts x: 78 lines of code y: 92 line churn public/src/app/components/styles/palette.ts x: 13 lines of code y: 16 line churn public/src/app/components/utils/analytics.ts x: 15 lines of code y: 17 line churn public/src/app/components/utils/dateFormat.ts x: 19 lines of code y: 36 line churn public/src/app/main.tsx x: 16 lines of code y: 21 line churn eslint.config.mjs x: 14 lines of code y: 38 line churn app/views/main.scala.html x: 26 lines of code y: 294 line churn .devcontainer/devenv.yaml x: 21 lines of code y: 154 line churn app/views/authError.scala.html x: 17 lines of code y: 52 line churn app/logic/FlexibleApi.scala x: 63 lines of code y: 207 line churn project/Dependencies.scala x: 28 lines of code y: 242 line churn app/config/AppConfig.scala x: 56 lines of code y: 302 line churn app/controllers/Restore.scala x: 63 lines of code y: 667 line churn cdk/lib/restorer2.ts x: 155 lines of code y: 1022 line churn app/AppComponents.scala x: 47 lines of code y: 1043 line churn app/auth/PanDomainAuthActions.scala x: 28 lines of code y: 156 line churn app/AppLoader.scala x: 32 lines of code y: 137 line churn app/config/AWS.scala x: 28 lines of code y: 386 line churn riff-raff.yaml x: 23 lines of code y: 256 line churn app/controllers/Application.scala x: 45 lines of code y: 672 line churn app/controllers/Export.scala x: 167 lines of code y: 616 line churn cdk/eslint.config.mjs x: 5 lines of code y: 18 line churn app/controllers/Login.scala x: 42 lines of code y: 263 line churn app/controllers/Management.scala x: 30 lines of code y: 172 line churn app/controllers/Versions.scala x: 67 lines of code y: 872 line churn app/permissions/Permissions.scala x: 9 lines of code y: 341 line churn app/helpers/HSTSFilter.scala x: 10 lines of code y: 30 line churn app/logic/SnapshotApi.scala x: 61 lines of code y: 208 line churn app/models/SnapshotId.scala x: 14 lines of code y: 58 line churn app/models/SnapshotMetadata.scala x: 6 lines of code y: 24 line churn app/models/User.scala x: 6 lines of code y: 26 line churn app/models/Version.scala x: 4 lines of code y: 20 line churn conf/logback.xml x: 27 lines of code y: 90 line churn app/models/FlexibleStack.scala x: 34 lines of code y: 100 line churn app/helpers/CORSable.scala x: 22 lines of code y: 80 line churn app/models/ChangeDetails.scala x: 9 lines of code y: 38 line churn app/models/Destination.scala x: 22 lines of code y: 74 line churn app/models/Attempt.scala x: 92 lines of code y: 314 line churn app/models/Snapshot.scala x: 3 lines of code y: 30 line churn nginx/nginx-mapping.yml x: 5 lines of code y: 14 line churn app/helpers/Loggable.scala x: 5 lines of code y: 81 line churn
1043.0
line churn
  min: 7.0
  average: 156.62
  25th percentile: 32.25
  median: 69.5
  75th percentile: 169.75
  max: 1043.0
0 502.0
lines of code
min: 3.0 | average: 48.79 | 25th percentile: 15.75 | median: 29.5 | 75th percentile: 63.0 | max: 502.0