Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
bbf7d03
Update copyright year and holder in LICENSE
simonbs Jan 7, 2026
2ff4902
Merge pull request #653 from shapehq/simonbs-patch-1
simonbs Jan 7, 2026
b3c4494
Update SECURITY.md
simonbs Jan 7, 2026
0782dfd
Merge pull request #654 from shapehq/simonbs-patch-1
simonbs Jan 7, 2026
f71800a
Bump next from 16.1.1 to 16.1.6
dependabot[bot] Jan 27, 2026
f039098
Merge pull request #658 from shapehq/dependabot/npm_and_yarn/next-16.1.6
simonbs Jan 27, 2026
5126b7f
Bump the everything-else group with 14 updates
dependabot[bot] Feb 1, 2026
8c1e71e
Merge pull request #660 from shapehq/dependabot/npm_and_yarn/everythi…
simonbs Feb 1, 2026
cd424d5
Bump the react group with 2 updates
dependabot[bot] Feb 1, 2026
0d977b8
Merge pull request #659 from shapehq/dependabot/npm_and_yarn/react-47…
simonbs Feb 1, 2026
7d78075
Bump minimatch from 3.1.2 to 3.1.4
dependabot[bot] Feb 25, 2026
46da2e9
Merge pull request #661 from shapehq/dependabot/npm_and_yarn/minimatc…
ulrikandersen Feb 25, 2026
e3e8b87
Bump fast-xml-parser from 4.5.3 to 4.5.4
dependabot[bot] Mar 3, 2026
5b4372a
Merge pull request #663 from shapehq/dependabot/npm_and_yarn/fast-xml…
simonbs Mar 4, 2026
f191c0f
Bump dompurify from 3.3.0 to 3.3.2
dependabot[bot] Mar 6, 2026
1f5bf63
Merge pull request #665 from shapehq/dependabot/npm_and_yarn/dompurif…
simonbs Mar 6, 2026
567ccff
Bump next from 16.1.6 to 16.1.7
dependabot[bot] Mar 17, 2026
a6815eb
Merge pull request #666 from shapehq/dependabot/npm_and_yarn/next-16.1.7
ulrikandersen Mar 18, 2026
4436e41
Bump handlebars from 4.7.8 to 4.7.9
dependabot[bot] Mar 27, 2026
e19c57b
Merge pull request #671 from shapehq/dependabot/npm_and_yarn/handleba…
simonbs Mar 27, 2026
e9ad143
Bump yaml
dependabot[bot] Mar 27, 2026
38ba882
Merge pull request #670 from shapehq/dependabot/npm_and_yarn/multi-c1…
simonbs Mar 27, 2026
2750238
Bump picomatch from 2.3.1 to 2.3.2
dependabot[bot] Mar 27, 2026
16f432a
Merge pull request #669 from shapehq/dependabot/npm_and_yarn/picomatc…
simonbs Mar 27, 2026
86247a6
Bump flatted from 3.3.3 to 3.4.2
dependabot[bot] Mar 27, 2026
90bd7bc
Bump the everything-else group across 1 directory with 28 updates
dependabot[bot] Mar 27, 2026
ecd5d1b
Merge pull request #668 from shapehq/dependabot/npm_and_yarn/flatted-…
simonbs Mar 27, 2026
bec8718
Bump the everything-else group across 1 directory with 28 updates
dependabot[bot] Mar 27, 2026
7997f2f
Fixes dependencies
simonbs Mar 27, 2026
99cec8a
Merge branch 'dependabot/npm_and_yarn/everything-else-104c1b235d' of …
simonbs Mar 27, 2026
7190308
Merge pull request #673 from shapehq/dependabot/npm_and_yarn/everythi…
simonbs Mar 27, 2026
4f29b61
Adds next-typescript-eslint group
simonbs Mar 27, 2026
d5e26e8
Moves group items
simonbs Mar 27, 2026
36943b2
Merge pull request #674 from shapehq/dependabot-groups
simonbs Mar 27, 2026
617bc84
Bump flatted from 3.3.3 to 3.4.2
dependabot[bot] Mar 27, 2026
9e5ebf6
Bump brace-expansion from 1.1.12 to 1.1.13
dependabot[bot] Mar 27, 2026
603fd07
Merge pull request #676 from shapehq/dependabot/npm_and_yarn/flatted-…
simonbs Mar 27, 2026
7da67a8
Merge branch 'develop' into dependabot/npm_and_yarn/brace-expansion-1…
simonbs Mar 27, 2026
a7bfcdb
Bump picomatch from 2.3.1 to 2.3.2
dependabot[bot] Mar 27, 2026
238dfa3
Merge pull request #677 from shapehq/dependabot/npm_and_yarn/picomatc…
simonbs Mar 27, 2026
658acaa
Merge branch 'develop' into dependabot/npm_and_yarn/brace-expansion-1…
simonbs Mar 27, 2026
a77c90c
Merge pull request #678 from shapehq/dependabot/npm_and_yarn/brace-ex…
simonbs Mar 27, 2026
f0f3b62
Bump next from 16.2.1 to 16.2.2 in the react group
dependabot[bot] Apr 1, 2026
ff937cb
Merge pull request #679 from shapehq/dependabot/npm_and_yarn/react-84…
simonbs Apr 1, 2026
53d1765
Bump fast-xml-parser from 4.5.4 to 4.5.6
dependabot[bot] Apr 9, 2026
ec96edc
Merge pull request #681 from shapehq/dependabot/npm_and_yarn/fast-xml…
simonbs Apr 9, 2026
56f7959
Bump next from 16.2.2 to 16.2.3
dependabot[bot] Apr 11, 2026
239d88b
Implement two-phase project loading
ulrikandersen Apr 14, 2026
2de069c
Merge pull request #682 from shapehq/dependabot/npm_and_yarn/next-16.2.3
ulrikandersen Apr 15, 2026
9cae7cc
Merge branch 'develop' into fix/two-phase-project-loading
ulrikandersen Apr 15, 2026
48b443e
Merge pull request #683 from shapehq/fix/two-phase-project-loading
ulrikandersen Apr 15, 2026
719b24a
Bump dompurify from 3.3.2 to 3.4.0
dependabot[bot] Apr 16, 2026
80d8666
Merge pull request #684 from shapehq/dependabot/npm_and_yarn/dompurif…
simonbs Apr 16, 2026
0a557bc
Bump postcss from 8.5.8 to 8.5.10
dependabot[bot] Apr 25, 2026
ba534bb
Merge pull request #685 from framna-dk/dependabot/npm_and_yarn/postcs…
ulrikandersen Apr 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,28 @@ updates:
patterns:
- "react"
- "react-*"
- "next"
- "react-dom"
- "@types/react"
- "@types/react-dom"
next-typescript-eslint:
patterns:
- "eslint"
- "eslint-config-next"
- "typescript"
- "typescript-eslint"
- "@typescript-eslint/*"
everything-else:
patterns:
- "*"
exclude-patterns:
- "react"
- "react-*"
- "react-dom"
- "@types/react"
- "@types/react-dom"
- "eslint"
- "eslint-config-next"
- "typescript"
- "typescript-eslint"
- "@typescript-eslint/*"
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2024 Shape ApS
Copyright (c) 2026 Framna Denmark ApS

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

## Reporting a Vulnerability

Please contact us at security@shape.dk if you find a security vulnerability in the software. Do note that we do not offer a bug bounty program.
Please contact us at security@dk.framna.com if you find a security vulnerability in the software. Do note that we do not offer a bug bounty program.
49 changes: 0 additions & 49 deletions __test__/projects/CachingProjectDataSource.test.ts

This file was deleted.

102 changes: 102 additions & 0 deletions __test__/projects/CachingProjectListDataSource.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
import { ProjectSummary, CachingProjectListDataSource } from "@/features/projects/domain"

const projects: ProjectSummary[] = [{
id: "acme-foo",
name: "foo",
displayName: "Foo",
owner: "acme",
ownerUrl: "https://github.com/acme"
}]

test("It returns cached projects when cache is populated", async () => {
let didCallDataSource = false
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
didCallDataSource = true
return projects
}
},
repository: {
async get() {
return projects
},
async set() {},
async delete() {}
}
})
const result = await sut.getProjectList()
expect(result).toEqual(projects)
expect(didCallDataSource).toBe(false)
})

test("It fetches and caches projects when cache is empty", async () => {
let cachedProjects: ProjectSummary[] | undefined
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
return projects
}
},
repository: {
async get() {
return undefined
},
async set(value) {
cachedProjects = value
},
async delete() {}
}
})
const result = await sut.getProjectList()
expect(result).toEqual(projects)
expect(cachedProjects).toEqual(projects)
})

test("It treats an empty cached list as a valid cache hit and does not call the data source", async () => {
let didCallDataSource = false
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
didCallDataSource = true
return []
}
},
repository: {
async get() {
return []
},
async set() {},
async delete() {}
}
})
const result = await sut.getProjectList()
expect(result).toEqual([])
expect(didCallDataSource).toBe(false)
})

test("It bypasses cache and refreshes when refresh=true", async () => {
let didCallDataSource = false
let cachedProjects: ProjectSummary[] | undefined
const sut = new CachingProjectListDataSource({
dataSource: {
async getProjectList() {
didCallDataSource = true
return projects
}
},
repository: {
async get() {
return projects
},
async set(value) {
cachedProjects = value
},
async delete() {}
}
})
const result = await sut.getProjectList({ refresh: true })
expect(result).toEqual(projects)
expect(didCallDataSource).toBe(true)
expect(cachedProjects).toEqual(projects)
})
125 changes: 0 additions & 125 deletions __test__/projects/FilteringGitHubRepositoryDataSource.test.ts

This file was deleted.

Loading
Loading