Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
819d6fd
Update dependencies and Dockerfiles across multiple modules
Chromeninja Jun 12, 2026
291e232
refactor: remove NPM_TOKEN usage from Dockerfiles and workflows
Chromeninja Jun 14, 2026
19e3a83
refactor: optimize security scan job to conditionally run based on ch…
Chromeninja Jun 14, 2026
4700064
chore: remove stale docker-compose backup files
Chromeninja Jun 23, 2026
e1fd3cc
chore: consolidate env example files into single annotated .env.example
Chromeninja Jun 23, 2026
c147646
chore: remove archive/ directory of defunct modules
Chromeninja Jun 23, 2026
02e6501
chore: remove deprecated module-level docker-compose files; annotate …
Chromeninja Jun 23, 2026
fa7bad0
chore: remove legacy k8s/manifests/ directory (superseded by kustomiz…
Chromeninja Jun 23, 2026
d0dc58d
chore: track package-lock.json (required per dependency pinning stand…
Chromeninja Jun 23, 2026
8893fd0
chore: replace plaintext secret defaults with REPLACE_ME placeholders…
Chromeninja Jun 23, 2026
3bac1aa
chore: implement empty Makefile targets; add explicit errors for CI-o…
Chromeninja Jun 23, 2026
7226ae9
docs: document canonical libs/ source and interactive-social module b…
Chromeninja Jun 23, 2026
3c15694
chore: pin external K8s images to SHA256 digests; replace Alpine with…
Chromeninja Jun 23, 2026
627f36d
fix(security): real JWT verification and DB-backed identity lookups i…
Chromeninja Jun 23, 2026
1bb601b
fix(security): enforce authorization on marketplace refund endpoint
Chromeninja Jun 23, 2026
9379208
test(marketplace): add jest config and lockfile for refund authz tests
Chromeninja Jun 23, 2026
be812c4
fix: implement Twitch app access token (client-credentials) flow; sto…
Chromeninja Jun 23, 2026
5246135
chore: pin Node package.json dependencies to exact versions (no ^/~) …
Chromeninja Jun 23, 2026
3976ab8
hardening(k8s): set readOnlyRootFilesystem: true with writable emptyD…
Chromeninja Jun 23, 2026
2e66b55
chore: update dependencies and add npm audit script
Jul 25, 2026
fdbd656
feat(csrf): implement CSRF protection middleware with tests
Jul 25, 2026
1c1e78f
fix(csrf): enhance CSRF protection with rate limiting and cookie name…
Jul 25, 2026
f160f70
chore(android): add gradle.properties to enable AndroidX support
Jul 25, 2026
aadfc0c
chore: remove tracked build artifacts and strengthen gitignore
Jul 25, 2026
73fb27b
chore: remove tracked build artifacts and strengthen gitignore
Jul 25, 2026
3b8df49
feat: add gRPC support to core-identity service
Chromeninja Jul 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
# Environment files
**/.env
**/.env.*
**/.npmrc
!**/.env.example
!**/.env-example

Expand Down
379 changes: 0 additions & 379 deletions .env-example

This file was deleted.

515 changes: 384 additions & 131 deletions .env.example

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Unix launchers must retain an executable POSIX shebang in Linux CI.
/mobile/android/gradlew text eol=lf
77 changes: 77 additions & 0 deletions .github/scripts/npm-audit.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import { spawnSync } from 'node:child_process';

const highSeverities = new Set(['high', 'critical']);
const allowedAdvisories = new Set(
(process.env.NPM_AUDIT_ALLOW ?? '')
.split(',')
.map((advisory) => advisory.trim())
.filter(Boolean),
);

const isWindows = process.platform === 'win32';
const npmCommand = isWindows ? process.env.ComSpec : 'npm';
const npmArguments = isWindows
? ['/d', '/s', '/c', 'npm audit --omit=dev --audit-level=high --json']
: ['audit', '--omit=dev', '--audit-level=high', '--json'];
const audit = spawnSync(
npmCommand,
npmArguments,
{
encoding: 'utf8',
},
);

if (audit.error) {
console.error(`Unable to run npm audit: ${audit.error.message}`);
process.exit(1);
}

let report;
try {
report = JSON.parse(audit.stdout);
} catch {
process.stderr.write(audit.stderr);
console.error('npm audit did not return valid JSON.');
process.exit(1);
}

const foundAllowed = new Set();
const blocking = [];

for (const vulnerability of Object.values(report.vulnerabilities ?? {})) {
for (const advisory of vulnerability.via ?? []) {
if (typeof advisory === 'string' || !highSeverities.has(advisory.severity)) {
continue;
}

const advisoryId = new URL(advisory.url).pathname.split('/').filter(Boolean).at(-1);
if (allowedAdvisories.has(advisoryId)) {
foundAllowed.add(advisoryId);
} else {
blocking.push(`${advisoryId}: ${advisory.title}`);
}
}
}

const staleAllowances = [...allowedAdvisories].filter(
(advisoryId) => !foundAllowed.has(advisoryId),
);

if (blocking.length > 0) {
console.error('Blocking production dependency advisories:');
blocking.forEach((advisory) => console.error(`- ${advisory}`));
process.exit(1);
}

if (staleAllowances.length > 0) {
console.error(`Remove stale npm audit allowances: ${staleAllowances.join(', ')}`);
process.exit(1);
}

if (foundAllowed.size > 0) {
console.warn(
`Temporarily allowed advisories without a patched stable release: ${[...foundAllowed].join(', ')}`,
);
}

console.log('No unapproved high or critical production dependency advisories found.');
Loading
Loading