From b15742ae98e3e63ee6dd8a54d75c587e661fd40c Mon Sep 17 00:00:00 2001 From: Natalia Luzuriaga Date: Tue, 17 Feb 2026 12:03:17 -0800 Subject: [PATCH 1/4] Update urls in index.html Signed-off-by: Natalia Luzuriaga --- index.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/index.html b/index.html index f14cab5d..3c760b45 100644 --- a/index.html +++ b/index.html @@ -34,12 +34,12 @@

Developers

href="https://github.com/GSA/code-gov/blob/master/README.md" target="_blank">contribute here. Help improve America's Code by exploring projects.

- Explore projects + Explore projects

Source Code Inventory

Review source code development across the entire federal government.

- View by Agency + View by Agency

Agency Partners

@@ -47,7 +47,7 @@

Agency Partners

Federal agency partners use Code.gov to share usable open source code, promote open source projects, and track compliance with federal open source policy.

- Agency Compliance + Agency Compliance
From a0145a5a62d5a917a7ebf97b787d0d03348ab39e Mon Sep 17 00:00:00 2001 From: Natalia Luzuriaga Date: Tue, 17 Feb 2026 12:08:33 -0800 Subject: [PATCH 2/4] Fix issues link in index.html Signed-off-by: Natalia Luzuriaga --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 3c760b45..cf6b1e34 100644 --- a/index.html +++ b/index.html @@ -108,7 +108,7 @@

OPT-IN WITH LABELS

- Browse Issues + Browse Issues
From ba9889eec5a0b6d84a0cffbd2bc8243eb1d2b194 Mon Sep 17 00:00:00 2001 From: Natalia Luzuriaga Date: Tue, 17 Feb 2026 12:13:24 -0800 Subject: [PATCH 3/4] Add privacy policy page Signed-off-by: Natalia Luzuriaga --- content/privacy-policy/index.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 content/privacy-policy/index.md diff --git a/content/privacy-policy/index.md b/content/privacy-policy/index.md new file mode 100644 index 00000000..0d19cf9a --- /dev/null +++ b/content/privacy-policy/index.md @@ -0,0 +1,16 @@ +--- +title: Privacy Policy +description: 'Privacy Policy' +permalink: /privacy-policy/ +layout: layouts/page +tags: codegov +eleventyNavigation: + parent: codegov-privacypolicy + key: codegov-privacypolicy-main + order: 1 + title: Privacy Policy +sidenav: false +sticky_sidenav: false +--- + +This website follows the [HHS Privacy Policy](https://www.hhs.gov/web/policies-and-standards/hhs-web-policies/privacy/index.html). \ No newline at end of file From be841c44cf36e3f862e679fbd6b137403277738d Mon Sep 17 00:00:00 2001 From: Natalia Luzuriaga Date: Tue, 17 Feb 2026 12:22:06 -0800 Subject: [PATCH 4/4] Fix linting errors Signed-off-by: Natalia Luzuriaga --- _data/codegovData.js | 6 +++--- assets/_common/js/filters.js | 6 ++---- assets/_common/js/issue-filters.js | 10 +++------- config/updateCodeGov.js | 10 +++++----- config/updateIssuePool.js | 28 ++++++++++++++-------------- 5 files changed, 27 insertions(+), 33 deletions(-) diff --git a/_data/codegovData.js b/_data/codegovData.js index 9c4f5511..38e261eb 100644 --- a/_data/codegovData.js +++ b/_data/codegovData.js @@ -87,8 +87,8 @@ module.exports = function() { agencies.push({ code: agencyName, name: agencyName, - version: "1.0.0", - measurementType: "Projects", + version: '1.0.0', + measurementType: 'Projects', organizations: agencyOrgs, projectCount: releases.length, totalLaborHours: releases.reduce((acc, curr) => acc + (curr.laborHours || 0), 0) @@ -112,7 +112,7 @@ module.exports = function() { projects.push({ agencyCode: agencyName, - agencyName: agencyName, + agencyName, organization: release.organization, name: release.name, description: release.description, diff --git a/assets/_common/js/filters.js b/assets/_common/js/filters.js index 36b6b2a7..2974e14e 100644 --- a/assets/_common/js/filters.js +++ b/assets/_common/js/filters.js @@ -30,8 +30,7 @@ const applySearchFilter = (data, searchTerm, targetType) => { }); }; -const applySelectFilters = (data, filters, targetType) => { - return Object.entries(filters).reduce((filtered, [key, value]) => { +const applySelectFilters = (data, filters, targetType) => Object.entries(filters).reduce((filtered, [key, value]) => { if (!value || key === 'search') return filtered; return filtered.filter(item => { @@ -80,13 +79,12 @@ const applySelectFilters = (data, filters, targetType) => { } }); }, data); -}; const sortData = (data, sortBy) => { const [field, direction] = sortBy.split('-'); return [...data].sort((a, b) => { - let aVal, bVal; + let aVal; let bVal; switch (field) { case 'name': diff --git a/assets/_common/js/issue-filters.js b/assets/_common/js/issue-filters.js index b834e010..808fd6bd 100644 --- a/assets/_common/js/issue-filters.js +++ b/assets/_common/js/issue-filters.js @@ -34,8 +34,7 @@ const applySearchFilter = (data, searchTerm) => { }); }; -const applySelectFilters = (data, filters) => { - return Object.entries(filters).reduce((filtered, [key, value]) => { +const applySelectFilters = (data, filters) => Object.entries(filters).reduce((filtered, [key, value]) => { if (!value || key === 'search') return filtered; return filtered.filter(issue => { @@ -58,13 +57,12 @@ const applySelectFilters = (data, filters) => { } }); }, data); -}; const sortData = (data, sortBy) => { const [field, direction] = sortBy.split('-'); return [...data].sort((a, b) => { - let aVal, bVal; + let aVal; let bVal; switch (field) { case 'created': @@ -294,8 +292,7 @@ const bindEvents = (state, setState) => { } }; -const preprocessIssuesData = (issues) => { - return issues.map(issue => { +const preprocessIssuesData = (issues) => issues.map(issue => { // Extract repo name from URL if (issue.url) { const urlParts = issue.url.split('/'); @@ -310,7 +307,6 @@ const preprocessIssuesData = (issues) => { return issue; }); -}; const initializeIssueFilters = (data) => { const processedData = preprocessIssuesData(data); diff --git a/config/updateCodeGov.js b/config/updateCodeGov.js index 492a88fc..03608c9d 100644 --- a/config/updateCodeGov.js +++ b/config/updateCodeGov.js @@ -1,10 +1,10 @@ -const fs = require("fs").promises +const fs = require('fs').promises const path = require('path') // these will always stay constant const CONFIG = { - agencyDirectory: path.resolve(__dirname, "../agency-indexes"), - outputFile: path.resolve(__dirname, "../codegov.json"), + agencyDirectory: path.resolve(__dirname, '../agency-indexes'), + outputFile: path.resolve(__dirname, '../codegov.json'), regex: /^(.*?)-.*\.json$/ } @@ -25,7 +25,7 @@ async function updateCodeGov() { const filePath = path.join(CONFIG.agencyDirectory, file) try { - const content = await fs.readFile(filePath, "utf-8") + const content = await fs.readFile(filePath, 'utf-8') const jsonData = JSON.parse(content) // store the agency name only for readability in codegov.json @@ -45,7 +45,7 @@ async function updateCodeGov() { return updatedJSON } catch (error) { - console.error("❌ Failed to update codegov.json:", error) + console.error('❌ Failed to update codegov.json:', error) } } diff --git a/config/updateIssuePool.js b/config/updateIssuePool.js index c157a63e..2c347e2b 100644 --- a/config/updateIssuePool.js +++ b/config/updateIssuePool.js @@ -1,9 +1,9 @@ -const fs = require("fs").promises +const fs = require('fs').promises const path = require('path') const CONFIG = { - repoFilePath: path.resolve(__dirname, "../codegov.json"), - issueFilePath: path.resolve(__dirname, "../issue-pool.json"), + repoFilePath: path.resolve(__dirname, '../codegov.json'), + issueFilePath: path.resolve(__dirname, '../issue-pool.json'), regex: /https?:\/\/github\.com\/([^\/]+)\/([^\/]+)/, githubToken: process.env.GITHUB_TOKEN, requiredLabel: 'code-gov', @@ -41,10 +41,10 @@ async function fetchWithRateLimit(url, options = {}) { } async function getRepoInfo() { // dont know how i feel about this double loop setup... - let repoInfo = [] + const repoInfo = [] try { - const content = await fs.readFile(CONFIG.repoFilePath, "utf-8") + const content = await fs.readFile(CONFIG.repoFilePath, 'utf-8') const jsonData = JSON.parse(content) for (const agencyKey in jsonData) { @@ -71,7 +71,7 @@ async function getRepoInfo() { // dont know how i feel about this double loop se } } } catch (error) { - console.error("Error in getting repo information:", error) + console.error('Error in getting repo information:', error) } // console.log(repoInfo) @@ -102,11 +102,11 @@ function transformIssue(issue, repo, repoLanguage) { id: String(issue.id), number: issue.number, url: issue.html_url, - content_title: issue.title || "", - content_description: issue.body || "", + content_title: issue.title || '', + content_description: issue.body || '', repo_name: repo.repoName, repo_url: `https://github.com/${repo.ownerName}/${repo.repoName}`, - repo_language: repoLanguage || "", + repo_language: repoLanguage || '', repo_owner: repo.ownerName, status_is_open: issue.state === 'open', status_has_assignee: issue.assignee !== null, @@ -115,9 +115,9 @@ function transformIssue(issue, repo, repoLanguage) { time_last_updated: issue.updated_at, time_days_old: daysBetween(createdDate, now), time_last_activity_days_ago: daysBetween(updatedDate, now), - people_author: issue.user?.login || "", + people_author: issue.user?.login || '', people_assignee: issue.assignee?.login || null, - people_author_type: issue.user?.type || "", + people_author_type: issue.user?.type || '', labels_list: labelNames, labels_count: labelNames.length, labels_has_priority: checkLabelKeywords(issue.labels, ['priority', 'p0', 'p1', 'p2', 'urgent']), @@ -146,7 +146,7 @@ async function processSingleRepository(repo, headers) { } const repoData = await repoResponse.json() - const repoLanguage = repoData.language || "" + const repoLanguage = repoData.language || '' let page = 1 let hasMore = true @@ -215,9 +215,9 @@ async function updateIssuePool() { try { await fs.writeFile(CONFIG.issueFilePath, JSON.stringify(issuePool, null, 2)) - console.log(`Successfully saved issues!`) + console.log('Successfully saved issues!') } catch (error) { - console.error("Error saving issue pool:", error) + console.error('Error saving issue pool:', error) } return issuePool