Dependencies between components in same commits (primary)
The number on the lines shows the number of shared commits.
flowchart TB
    n0["kahuna"]
    n1["media-api"]
    n2["common-lib"]
    n3["image-cache-purger"]
    n4["cdk"]
    n5["ROOT"]
    n6["dev"]
    n7["scripts"]
    n8["image-loader"]
    n9["usage"]
    n0 ---|"57"| n0
    n1 ---|"13"| n1
    n1 ---|"8"| n0
    n0 ---|"8"| n2
    n3 ---|"7"| n4
    n3 ---|"7"| n3
    n5 ---|"7"| n4
    n5 ---|"7"| n3
    n1 ---|"7"| n6
    n2 ---|"7"| n2
    n2 ---|"6"| n1
    n6 ---|"5"| n4
    n3 ---|"5"| n6
    n0 ---|"5"| n6
    n1 ---|"5"| n4
    n1 ---|"5"| n3
    n5 ---|"5"| n6
    n5 ---|"5"| n1
    n7 ---|"5"| n1
    n6 ---|"4"| n2
    n8 ---|"4"| n2
    n8 ---|"4"| n8
    n0 ---|"4"| n8
    n7 ---|"4"| n0
    n7 ---|"3"| n4
    n7 ---|"3"| n6
    n7 ---|"3"| n3
    n7 ---|"3"| n5
    n9 ---|"3"| n0
    n9 ---|"3"| n1
    n9 ---|"3"| n9
    n7 ---|"3"| n2
    n4 ---|"2"| n0
    n2 ---|"2"| n4
    n6 ---|"2"| n6
    n3 ---|"2"| n0
    n3 ---|"2"| n2
    n5 ---|"2"| n0
    n5 ---|"2"| n2
    n8 ---|"2"| n1
    n7 ---|"2"| n8
    n9 ---|"1"| n4
    n9 ---|"1"| n2
    n9 ---|"1"| n6
    n9 ---|"1"| n3
    n9 ---|"1"| n5
    n9 ---|"1"| n7
    n8 ---|"1"| n4
    n8 ---|"1"| n6
    n8 ---|"1"| n3
    classDef default fill:#00b2ee,stroke:#ffffff,color:#000000;
    classDef highlighted fill:#00b2ee,stroke:#ffffff,color:#000000;
    linkStyle 0 stroke:#a0a0a0FF,stroke-width:10px
    linkStyle 1 stroke:#a0a0a070,stroke-width:2px
    linkStyle 2 stroke:#00688b5E,stroke-width:1px
    linkStyle 3 stroke:#00688b5E,stroke-width:1px
    linkStyle 4 stroke:#00688b5E,stroke-width:1px
    linkStyle 5 stroke:#a0a0a05E,stroke-width:1px
    linkStyle 6 stroke:#00688b5E,stroke-width:1px
    linkStyle 7 stroke:#00688b5E,stroke-width:1px
    linkStyle 8 stroke:#00688b5E,stroke-width:1px
    linkStyle 9 stroke:#a0a0a05E,stroke-width:1px
    linkStyle 10 stroke:#00688b5E,stroke-width:1px
    linkStyle 11 stroke:#00688b4C,stroke-width:1px
    linkStyle 12 stroke:#00688b4C,stroke-width:1px
    linkStyle 13 stroke:#00688b4C,stroke-width:1px
    linkStyle 14 stroke:#00688b4C,stroke-width:1px
    linkStyle 15 stroke:#00688b4C,stroke-width:1px
    linkStyle 16 stroke:#00688b4C,stroke-width:1px
    linkStyle 17 stroke:#00688b4C,stroke-width:1px
    linkStyle 18 stroke:#00688b4C,stroke-width:1px
    linkStyle 19 stroke:#00688b4C,stroke-width:1px
    linkStyle 20 stroke:#00688b4C,stroke-width:1px
    linkStyle 21 stroke:#a0a0a04C,stroke-width:1px
    linkStyle 22 stroke:#00688b4C,stroke-width:1px
    linkStyle 23 stroke:#00688b4C,stroke-width:1px
    linkStyle 24 stroke:#00688b4C,stroke-width:1px
    linkStyle 25 stroke:#00688b4C,stroke-width:1px
    linkStyle 26 stroke:#00688b4C,stroke-width:1px
    linkStyle 27 stroke:#00688b4C,stroke-width:1px
    linkStyle 28 stroke:#00688b4C,stroke-width:1px
    linkStyle 29 stroke:#00688b4C,stroke-width:1px
    linkStyle 30 stroke:#a0a0a04C,stroke-width:1px
    linkStyle 31 stroke:#00688b4C,stroke-width:1px
    linkStyle 32 stroke:#00688b4C,stroke-width:1px
    linkStyle 33 stroke:#00688b4C,stroke-width:1px
    linkStyle 34 stroke:#a0a0a04C,stroke-width:1px
    linkStyle 35 stroke:#00688b4C,stroke-width:1px
    linkStyle 36 stroke:#00688b4C,stroke-width:1px
    linkStyle 37 stroke:#00688b4C,stroke-width:1px
    linkStyle 38 stroke:#00688b4C,stroke-width:1px
    linkStyle 39 stroke:#00688b4C,stroke-width:1px
    linkStyle 40 stroke:#00688b4C,stroke-width:1px
    linkStyle 41 stroke:#00688b4C,stroke-width:1px
    linkStyle 42 stroke:#00688b4C,stroke-width:1px
    linkStyle 43 stroke:#00688b4C,stroke-width:1px
    linkStyle 44 stroke:#00688b4C,stroke-width:1px
    linkStyle 45 stroke:#00688b4C,stroke-width:1px
    linkStyle 46 stroke:#00688b4C,stroke-width:1px
    linkStyle 47 stroke:#00688b4C,stroke-width:1px
    linkStyle 48 stroke:#00688b4C,stroke-width:1px
    linkStyle 49 stroke:#00688b4C,stroke-width:1px


Open 2D force graph (file dependencies)... Open 3D force graph (file dependencies)...

Files Most Frequently Changed Together (Top 50)

data...

Pairs # same commits # commits 1 # commits 2 latest commit
kahuna/public/js/search/query.js
kahuna/public/js/search/index.js
13 300 (4%) 282 (4%) 2026-10-06
kahuna/public/stylesheets/main.css
kahuna/public/js/search/results.html
13 1209 (1%) 416 (3%) 2026-10-06
kahuna/public/js/search/results.js
kahuna/public/js/search/results.html
12 473 (2%) 416 (2%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/takedown-page.tsx
12 14 (85%) 12 (100%) 2026-10-06
kahuna/public/js/takedown/takedown-page.tsx
kahuna/app/lib/KahunaConfig.scala
10 12 (83%) 153 (6%) 2026-10-06
kahuna/public/js/takedown/takedown-page.tsx
kahuna/public/js/takedown/index.ts
10 12 (83%) 10 (100%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/app/lib/KahunaConfig.scala
10 14 (71%) 153 (6%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/app/views/main.scala.html
10 14 (71%) 286 (3%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/index.ts
10 14 (71%) 10 (100%) 2026-10-06
kahuna/public/js/util/constants/standThemeOverride.ts
kahuna/public/js/takedown/takedown-page.tsx
10 10 (100%) 12 (83%) 2026-10-06
kahuna/public/js/util/constants/standThemeOverride.ts
kahuna/public/js/types/image.ts
10 10 (100%) 14 (71%) 2026-10-06
kahuna/public/js/window.ts
kahuna/app/views/main.scala.html
10 38 (26%) 286 (3%) 2026-10-06
kahuna/public/js/window.ts
kahuna/public/js/types/image.ts
10 38 (26%) 14 (71%) 2026-10-06
kahuna/public/stylesheets/main.css
kahuna/public/js/search/results.js
10 1209 (<1%) 473 (2%) 2026-10-06
kahuna/public/js/takedown/takedown-page.tsx
kahuna/public/js/takedown/takedown-context.tsx
9 12 (75%) 9 (100%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/delete-from-content-step.tsx
9 14 (64%) 9 (100%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/takedown-context.tsx
9 14 (64%) 9 (100%) 2026-10-06
kahuna/public/js/search/index.js
kahuna/public/js/components/gr-permissions-filter/gr-permissions-filter.tsx
8 282 (2%) 42 (19%) 2026-10-06
kahuna/public/js/search/query.js
kahuna/public/js/components/gr-permissions-filter/gr-permissions-filter.tsx
8 300 (2%) 42 (19%) 2026-10-06
kahuna/app/views/main.scala.html
kahuna/app/lib/KahunaConfig.scala
8 286 (2%) 153 (5%) 2026-10-06
kahuna/public/js/takedown/controller.ts
kahuna/app/lib/KahunaConfig.scala
8 8 (100%) 153 (5%) 2026-10-06
kahuna/public/js/takedown/controller.ts
kahuna/app/views/main.scala.html
8 8 (100%) 286 (2%) 2026-10-06
kahuna/public/js/takedown/index.ts
kahuna/app/lib/KahunaConfig.scala
8 10 (80%) 153 (5%) 2026-10-06
kahuna/public/js/takedown/index.ts
kahuna/app/views/main.scala.html
8 10 (80%) 286 (2%) 2026-10-06
kahuna/public/js/takedown/index.ts
kahuna/public/js/takedown/controller.ts
8 10 (80%) 8 (100%) 2026-10-06
kahuna/public/js/takedown/takedown-page.tsx
kahuna/app/views/main.scala.html
8 12 (66%) 286 (2%) 2026-10-06
kahuna/public/js/takedown/takedown-page.tsx
kahuna/public/js/takedown/controller.ts
8 12 (66%) 8 (100%) 2026-10-06
kahuna/public/js/takedown/view.html
kahuna/app/lib/KahunaConfig.scala
8 8 (100%) 153 (5%) 2026-10-06
kahuna/public/js/takedown/view.html
kahuna/app/views/main.scala.html
8 8 (100%) 286 (2%) 2026-10-06
kahuna/public/js/takedown/view.html
kahuna/public/js/takedown/controller.ts
8 8 (100%) 8 (100%) 2026-10-06
kahuna/public/js/takedown/view.html
kahuna/public/js/takedown/index.ts
8 8 (100%) 10 (80%) 2026-10-06
kahuna/public/js/takedown/view.html
kahuna/public/js/takedown/takedown-page.tsx
8 8 (100%) 12 (66%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/controller.ts
8 14 (57%) 8 (100%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/view.html
8 14 (57%) 8 (100%) 2026-10-06
kahuna/public/js/util/constants/standThemeOverride.ts
kahuna/app/lib/KahunaConfig.scala
8 10 (80%) 153 (5%) 2026-10-06
kahuna/public/js/util/constants/standThemeOverride.ts
kahuna/public/js/takedown/index.ts
8 10 (80%) 10 (80%) 2026-10-06
kahuna/public/js/window.ts
kahuna/app/lib/KahunaConfig.scala
8 38 (21%) 153 (5%) 2026-10-06
kahuna/public/js/window.ts
kahuna/public/js/takedown/controller.ts
8 38 (21%) 8 (100%) 2026-10-06
kahuna/public/js/window.ts
kahuna/public/js/takedown/index.ts
8 38 (21%) 10 (80%) 2026-10-06
kahuna/public/js/window.ts
kahuna/public/js/takedown/takedown-page.tsx
8 38 (21%) 12 (66%) 2026-10-06
kahuna/public/js/window.ts
kahuna/public/js/takedown/view.html
8 38 (21%) 8 (100%) 2026-10-06
kahuna/public/js/takedown/delete-from-grid-step.tsx
kahuna/public/js/takedown/crops-and-usages.tsx
7 22 (31%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/FastlyApiKeyProvider.scala
cdk/lib/image-cache-purger.ts
7 7 (100%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/FastlyPurger.scala
cdk/lib/image-cache-purger.ts
7 7 (100%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/FastlyPurger.scala
image-cache-purger/src/main/scala/com/gu/mediaservice/FastlyApiKeyProvider.scala
7 7 (100%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/ImageCachePurger.scala
cdk/lib/image-cache-purger.ts
7 7 (100%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/ImageCachePurger.scala
image-cache-purger/src/main/scala/com/gu/mediaservice/FastlyApiKeyProvider.scala
7 7 (100%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/ImageCachePurger.scala
image-cache-purger/src/main/scala/com/gu/mediaservice/FastlyPurger.scala
7 7 (100%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/LocalRun.scala
cdk/lib/image-cache-purger.ts
7 7 (100%) 7 (100%) 2026-10-06
image-cache-purger/src/main/scala/com/gu/mediaservice/LocalRun.scala
image-cache-purger/src/main/scala/com/gu/mediaservice/FastlyApiKeyProvider.scala
7 7 (100%) 7 (100%) 2026-10-06

Files from Different Folders Most Frequently Changed Together (Top 20)

data...

Pairs # same commits # commits 1 # commits 2 latest commit
kahuna/public/stylesheets/main.css
kahuna/public/js/search/results.html
13 1209 (1%) 416 (3%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/takedown-page.tsx
12 14 (85%) 12 (100%) 2026-10-06
kahuna/public/js/takedown/takedown-page.tsx
kahuna/app/lib/KahunaConfig.scala
10 12 (83%) 153 (6%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/app/lib/KahunaConfig.scala
10 14 (71%) 153 (6%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/app/views/main.scala.html
10 14 (71%) 286 (3%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/index.ts
10 14 (71%) 10 (100%) 2026-10-06
kahuna/public/js/util/constants/standThemeOverride.ts
kahuna/public/js/takedown/takedown-page.tsx
10 10 (100%) 12 (83%) 2026-10-06
kahuna/public/js/util/constants/standThemeOverride.ts
kahuna/public/js/types/image.ts
10 10 (100%) 14 (71%) 2026-10-06
kahuna/public/js/window.ts
kahuna/app/views/main.scala.html
10 38 (26%) 286 (3%) 2026-10-06
kahuna/public/js/window.ts
kahuna/public/js/types/image.ts
10 38 (26%) 14 (71%) 2026-10-06
kahuna/public/stylesheets/main.css
kahuna/public/js/search/results.js
10 1209 (<1%) 473 (2%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/delete-from-content-step.tsx
9 14 (64%) 9 (100%) 2026-10-06
kahuna/public/js/types/image.ts
kahuna/public/js/takedown/takedown-context.tsx
9 14 (64%) 9 (100%) 2026-10-06
kahuna/public/js/search/index.js
kahuna/public/js/components/gr-permissions-filter/gr-permissions-filter.tsx
8 282 (2%) 42 (19%) 2026-10-06
kahuna/public/js/search/query.js
kahuna/public/js/components/gr-permissions-filter/gr-permissions-filter.tsx
8 300 (2%) 42 (19%) 2026-10-06
kahuna/app/views/main.scala.html
kahuna/app/lib/KahunaConfig.scala
8 286 (2%) 153 (5%) 2026-10-06
kahuna/public/js/takedown/controller.ts
kahuna/app/lib/KahunaConfig.scala
8 8 (100%) 153 (5%) 2026-10-06
kahuna/public/js/takedown/controller.ts
kahuna/app/views/main.scala.html
8 8 (100%) 286 (2%) 2026-10-06
kahuna/public/js/takedown/index.ts
kahuna/app/lib/KahunaConfig.scala
8 10 (80%) 153 (5%) 2026-10-06
kahuna/public/js/takedown/index.ts
kahuna/app/views/main.scala.html
8 10 (80%) 286 (2%) 2026-10-06