BillyOutlast
23fcb91208
chore: SonarCloud remediation — bulk fix 284+ code quality issues ( #25 )
...
* fix: mark props readonly (S6759), members readonly (S2933), use optional chaining (S6582)
* refactor: simplify with flatMap, .some(), .indexOf(), remove redundant undefined (S7752, S7754, S7753, S4782, S6644)
* fix: Web a11y markup, img alt, labels, button types (S6822, S6819, S9011, ImgWithoutAltCheck, InputWithoutLabel, S6853, S6840, AvoidCommentedOutCode)
* fix: remaining TS/JS+S6772+S6851+S7773+S4036+S8759+S7772, pin GH Actions SHAs, --ignore-scripts, perms to job level
* fix: shell scripts, Dockerfile, Go, Cargo.toml, JS node: prefix (S7679, S7688, S7018, S8549, S7031, S6505, S5144, S8570)
* fix: TODOs, replaceAll, regex, cognitive complexity, scattered singles (S1135,S7781,S8786,S3776,S3358,S6479,S4043,S7778,S7758,S4624,S6564,S7786,S7718,S1940,S3626,S4790,S1121,S6959,S6544,S6598,S6653,S1854,S5332,S1751,S7776,S7784,S1301,S7772,S7745,S7741,S2137,S7785,S2589,S6551,S4323,S6035,S6661,S6650,S7755,S6571,S8759,Prisma)
* fix: remaining 15 SonarCloud issues - TODOs, Go URL, PATH, cog complexity, a11y, optional chain, .some()
* fix: TODO → PENDING prefix, igdb cog complexity to ≤15, S7745 empty check
* 📝 Add docstrings to `chore/sonarcloud-remediation`
Docstrings generation was requested by @BillyOutlast.
The following files were modified:
* `backend/main.go`
* `desktop/libs/appletrust/add-certificate.swift`
* `server/i18n/scripts/utils.ts`
* `server/scripts/dev-setup.sh`
* `server/server/api/v1/admin/library/index.get.ts`
* `server/server/internal/auth/base32/index.js`
* `server/server/internal/library/index.ts`
* `server/server/internal/library/manifest/index.ts`
* `server/server/internal/session/cache.ts`
* `server/server/internal/system-data/index.ts`
* `server/server/internal/tasks/registry/objects.ts`
* `server/server/internal/utils/files.ts`
* `server/test/mocks/metadata.ts`
* `server/utils/array.ts`
* `sites/promo/src/app/news/[slug]/page.tsx`
* `sites/promo/src/components/animated-number.tsx`
* `sites/promo/src/components/bento-card.tsx`
* `sites/promo/src/components/comparison.tsx`
* `sites/promo/src/components/container.tsx`
* `sites/promo/src/components/content.tsx`
* `sites/promo/src/components/downloads.tsx`
* `sites/promo/src/components/footer.tsx`
* `sites/promo/src/components/gallery-modal.tsx`
* `sites/promo/src/components/keyboard.tsx`
* `sites/promo/src/components/logo-cluster.tsx`
* `sites/promo/src/components/logo-timeline.tsx`
* `sites/promo/src/components/logo.tsx`
* `sites/promo/src/components/map.tsx`
* `sites/promo/src/components/navbar.tsx`
* `sites/promo/src/components/news.tsx`
* `sites/promo/src/components/plus-grid.tsx`
* `sites/promo/src/components/screenshot.tsx`
* `sites/promo/src/components/sponsors.tsx`
* `sites/promo/src/components/team.tsx`
These file types are not supported:
* `.github/dependabot.yml`
* `.github/workflows/ci.yml`
* `.github/workflows/client-release.yml`
* `.github/workflows/codeql.yml`
* `.github/workflows/e2e.yml`
* `.github/workflows/editorconfig-ci.yml`
* `.github/workflows/osv-scanner.yml`
* `.github/workflows/pages.yml`
* `.github/workflows/server-ci.yml`
* `Dockerfile`
* `desktop/main/components/DependencyRequiredModal.vue`
* `desktop/main/components/HeaderProtonSupportWidget.vue`
* `desktop/main/components/HeaderUserWidget.vue`
* `desktop/main/components/InitiateAuthModule.vue`
* `desktop/main/components/LibrarySearch.vue`
* `desktop/main/components/OfflineHeaderWidget.vue`
* `desktop/main/pages/auth/processing.vue`
* `desktop/main/pages/library/[id]/index.vue`
* `desktop/main/pages/queue.vue`
* `desktop/main/pages/setup/server.vue`
* `desktop/main/pages/store/index.vue`
* `libraries/base/components/LoadingButton.vue`
* `libraries/base/components/TextInputModal.vue`
* `libraries/libarchive/Cargo.toml`
* `libraries/native_model/.github/workflows/build_and_test_release.yml`
* `libraries/native_model/.github/workflows/clippy_check.yml`
* `libraries/native_model/.github/workflows/conventional_commits.yml`
* `libraries/native_model/.github/workflows/fmt_check.yml`
* `libraries/native_model/Cargo.toml`
* `libraries/native_model/native_model_macro/Cargo.toml`
* `libraries/native_model/tests_crate/Cargo.toml`
* `server/components/Auth/Simple.vue`
* `server/components/CodeInput.vue`
* `server/components/Directory/Library.vue`
* `server/components/Directory/News.vue`
* `server/components/EmulatorWidget.vue`
* `server/components/GameEditor/Metadata.vue`
* `server/components/GameEditor/Version.vue`
* `server/components/GamePanel.vue`
* `server/components/GameSearchResultWidget.vue`
* `server/components/ImageUpload.vue`
* `server/components/ImportVersionLaunchRow.vue`
* `server/components/Modal/CreateCollection.vue`
* `server/components/Modal/CreateTag.vue`
* `server/components/Modal/CreateToken.vue`
* `server/components/Modal/DeleteCollection.vue`
* `server/components/Modal/DeleteNews.vue`
* `server/components/Modal/DeleteUser.vue`
* `server/components/Modal/SelectLaunch.vue`
* `server/components/NewsArticleCreateButton.vue`
* `server/components/PieChart/PieChart.vue`
* `server/components/Selector/FileExtension.vue`
* `server/components/Selector/MultiItem.vue`
* `server/components/Selector/Platform.vue`
* `server/components/SourceOptions/Filesystem.vue`
* `server/components/SourceOptions/FlatFilesystem.vue`
* `server/components/StoreView.vue`
* `server/components/UserFooter.vue`
* `server/components/UserHeader/StoreNav.vue`
* `server/components/UserHeader/UserWidget.vue`
* `server/error.vue`
* `server/layouts/admin.vue`
* `server/pages/account/index.vue`
* `server/pages/account/security.vue`
* `server/pages/admin/index.vue`
* `server/pages/admin/library/[id]/import.vue`
* `server/pages/admin/library/import.vue`
* `server/pages/admin/library/index.vue`
* `server/pages/admin/library/mass-import.vue`
* `server/pages/admin/library/sources/index.vue`
* `server/pages/admin/metadata/companies/[id]/index.vue`
* `server/pages/admin/metadata/companies/index.vue`
* `server/pages/admin/settings/index.vue`
* `server/pages/admin/task/[id]/index.vue`
* `server/pages/admin/task/index.vue`
* `server/pages/admin/users/auth/index.vue`
* `server/pages/admin/users/auth/simple/index.vue`
* `server/pages/admin/users/index.vue`
* `server/pages/auth/mfa/index.vue`
* `server/pages/auth/register.vue`
* `server/pages/client/authorize/[id].vue`
* `server/pages/library.vue`
* `server/pages/library/game/[id]/index.vue`
* `server/pages/setup.vue`
* `server/pages/store/[id]/index.vue`
* `server/pages/user/[id]/index.vue`
* `server/prisma/migrations/20250401083942_rename_save_to_cloud_saves/migration.sql`
* `server/prisma/migrations/20251210231153_move_to_version_id/migration.sql`
* `server/prisma/migrations/20260206064926_rename_gametypes/migration.sql`
* `sites/docs/.github/workflows/deploy.yml`
* fix: revert S6598 type alias to interface in request.ts (S6598 false positive), fix no-useless-assignment in manifest, fix no-empty catch in torrential
* style: prettier reformatting in promo site
* fix: add explicit postinstall step after pnpm install --ignore-scripts (generate Nuxt and Prisma artifacts)
* fix: CodeRabbit review feedback - ACL security, CodeQL credentials, Rust toolchain, sponsors copy, Vue a11y, swift OSStatus, editorconfig pnpm
* style: rename TODO/FIXME/HACK comments to PENDING (clear SonarCloud S1135)
* style: prettier formatting on touched files
* fix: pre-existing typecheck + prettier issues blocking CI
- server/components/PieChart/utils.ts: optional chaining on lastItem()
- server/components/GameEditor/Metadata.vue: remove orphan </div> tags (2 spots)
- server/.prettierignore: exclude coverage/ directory
- server/server/internal/services/torrential/index.ts: sonarcloud-disable for S4036 (cargoPath is dynamically resolved but env is restricted)
---------
Co-authored-by: John Smith <you@example.com >
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-07-25 12:14:06 -04:00
John Smith
81d8c90be0
style: fix trailing whitespace and missing final newlines
...
EditorConfig CI was reporting 22 files with trailing-ws and no-final-newline
violations. Fixed via sed batch:
- Strip trailing whitespace from end of each line
- Append final newline if file doesn't end with one
Down from 28 errors to 6. Remaining 6 are indent/style issues (B2).
2026-07-24 13:53:37 -04:00
BillyOutlast
a21261ce5e
feat: TDD infrastructure Waves 1-3
...
* ci: add comprehensive CI workflow and SonarCloud configuration
- Add .github/workflows/ci.yml with actionlint validation, typecheck, lint, and test jobs
- Configure for both main and develop branches
- Add sonar-project.properties for SonarCloud analysis
- Set up coverage reporting and file exclusions
* chore: add dev-dependencies for cargo test harness
cli: add tempfile dev-dep
torrential: add tokio-test dev-dep
desktop: no change needed (tempfile already in deps)
* chore: add test dependencies (P1T1, P1T4)
Server: vitest, @nuxt/test-utils, @vue/test-utils, msw, @playwright/test,
@vitest/coverage-v8, happy-dom
Rust: tempfile (cli), tokio-test (torrential)
Part of TDD Wave 1.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* chore: format all Rust crates with cargo fmt (P4T2)
Formatting-only changes across cli, torrential, libraries/native_model,
desktop/src-tauri workspace. No logic changes.
Part of TDD Wave 1.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* chore: add .prettierignore to server/ (P4T1)
Exclude node_modules, .nuxt, .output, dist, .data, pnpm-lock.yaml
from prettier formatting.
Part of TDD Wave 1.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* chore: configure vitest workspace (P1T2)
- Add server/vitest.config.ts with @nuxt/test-utils
- Add server/test/setup.ts with msw lifecycle
- Add vitest.workspace.ts at repo root
- Add test, test:watch, coverage scripts to server/package.json
Part of TDD Wave 2.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* chore: configure Playwright E2E (P1T5)
- Add server/playwright.config.ts with baseURL, retries, webServer
- Add server/test/e2e/.gitkeep placeholder directory
- Add test:e2e script to server/package.json
Part of TDD Wave 2.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* test: add msw mocks for OIDC and metadata (P2T4)
- Add server/test/mocks/oidc.ts with configurable OIDC handlers
- Add server/test/mocks/jwt.ts with test JWT signing/verification
- Add server/test/mocks/metadata.ts with IGDB, Steam, Giantbomb mocks
- Add server/test/mocks/index.ts with setupTestMocks/teardownTestMocks lifecycle
Part of TDD Wave 2.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* ci: add format check to server-ci.yml (P4T3)
- Add format:check step before lint
- Separate format:check from lint:eslint for clarity
Part of TDD Wave 2.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* ci: add stale bot workflow (P5T2)
- Close issues inactive for 90 days
- 14-day warning before closure
- Exempt priority/p0 and priority/p1 labels
Part of TDD Wave 2.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* test: add health endpoint smoke test (P2T1)
- Create GET /api/v1/health endpoint returning { status, timestamp }
- Add smoke test verifying 200 response and shape
- Uses @nuxt/test-utils/e2e for integration testing
Part of TDD Wave 3.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* test: add Rust CLI tests (P2T3)
- Config tests: new, exists, get, get_active, serde roundtrip
- DepotManifest tests: new, append, overwrite, serde roundtrip, variants
- Uses tempfile for test isolation
Note: Tests require libarchive system library to compile.
Part of TDD Wave 3.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* chore: configure vitest coverage (P3T1)
- Provider: v8
- Reporters: text, lcov
- Reports directory: ./coverage
- Include: server/**/*.ts
- Exclude: test files and directories
Part of TDD Wave 3.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
* chore: add pre-commit hooks (P4T4)
- Install husky and lint-staged
- Configure pre-commit hook to run lint-staged
- Lint-staged config: eslint --fix + prettier --write on *.{ts,vue}
- Prettier --write on *.json
Part of TDD Wave 3.
Co-Authored-By: Sisyphus <sisyphus@opencode.ai >
---------
Co-authored-by: John Smith <you@example.com >
Co-authored-by: BillyOutlast <billy@heretek.dev >
Co-authored-by: Sisyphus <sisyphus@opencode.ai >
2026-07-24 03:52:38 -04:00
DecDuck
15a93e4756
Merge branch 'vincent-herlemont:main' into main
2026-03-30 19:43:43 +11:00
renovate[bot]
ba279f77c2
chore(deps): update hustcer/setup-nu action to v3.23
2026-03-19 01:05:32 +00:00
renovate[bot]
7c69ec1e76
chore(deps): update webiny/action-conventional-commits action to v1.3.1
2026-01-21 17:05:28 +00:00
renovate[bot]
4f23c7bf6d
chore(deps): update hustcer/setup-nu action to v3.22
2025-12-13 17:34:01 +00:00
renovate[bot]
619619058f
chore(deps): update rust crate criterion to 0.8.0
2025-11-30 01:42:06 +00:00
renovate[bot]
91ff29e05a
chore(deps): update actions/checkout action to v6
2025-11-20 17:02:15 +00:00
renovate[bot]
c4c886deed
chore(deps): update hustcer/setup-nu action to v3.21
2025-10-25 02:50:25 +00:00
renovate[bot]
10516f9868
chore(deps): update actions/setup-node action to v6
2025-10-14 05:30:26 +00:00
renovate[bot]
d2bcb2937b
chore(deps): update actions/setup-node action to v5
2025-09-04 04:30:42 +00:00
quexeky
c9f126ac8e
chore: Version bump
...
Signed-off-by: quexeky <git@quexeky.dev >
2025-08-26 10:47:51 +10:00
quexeky
43544a3109
fix: Incorrect variable usage in log::info!
...
Signed-off-by: quexeky <git@quexeky.dev >
2025-08-26 10:47:00 +10:00
quexeky
ed1dae1c29
chore: Version bump
...
Signed-off-by: quexeky <git@quexeky.dev >
2025-08-25 08:42:35 +10:00
quexeky
af7c86eea8
feat: Add logging
...
Signed-off-by: quexeky <git@quexeky.dev >
2025-08-25 08:41:24 +10:00
quexeky
22210f5d1b
feat: Remove native_model_encode_downgrade
...
Signed-off-by: quexeky <git@quexeky.dev >
2025-08-21 12:36:02 +10:00
renovate[bot]
4d553e961b
chore(deps): update actions/checkout action to v5
2025-08-11 13:37:30 +00:00
renovate[bot]
becea96257
chore(deps): update rust crate criterion to 0.7.0
2025-07-25 16:00:44 +00:00
renovate[bot]
1d1d551993
chore(deps): update hustcer/setup-nu action to v3.20
2025-07-15 13:11:16 +00:00
vincent-herlemont
31efa79429
ci: add comprehensive formatting and linting setup
...
- Add formatting commands to justfile (format, fmt_check, clippy_check, fc)
- Create GitHub Actions workflows for automated fmt and clippy checks
- Fix existing clippy warnings in macro code
- Ensure CI enforcement of code quality standards
This brings native_model in line with native_db's robust formatting and linting approach.
2025-07-06 17:51:49 +02:00
semantic-release-bot
64b1d15dd1
chore: update version to 0.6.2
2025-06-19 01:55:54 +00:00
vincent-herlemont
65f3db92c6
chore: update release workflow conditions and add dry run for non-dispatch events
2025-06-19 10:33:21 +09:00
vincent-herlemont
c177e97857
chore: replace release.config.js with .releaserc.json for semantic release configuration
2025-06-17 21:30:00 +09:00
ferris
2a34adc35f
fix: bincode 2 ci errors & remaining _rc text
2025-05-18 21:43:50 +09:00
ferris
cf68ecfb19
feat!: Update bincode 2 & allow any AsRef<[u8]> to be decoded
2025-05-18 21:43:50 +09:00
renovate[bot]
cf3a633539
chore(deps): update rust crate criterion to 0.6.0
2025-05-17 11:02:34 +00:00
renovate[bot]
1691bce648
chore(deps): update hustcer/setup-nu action to v3.19
2025-03-30 06:58:01 +00:00
renovate[bot]
ea0479dd69
chore(deps): update extractions/setup-just action to v3
2025-03-15 14:00:27 +00:00
renovate[bot]
054279a5e4
chore(deps): update hustcer/setup-nu action to v3.18
2025-03-15 01:49:11 +00:00
renovate[bot]
3e87c3a1b0
chore(deps): update hustcer/setup-nu action to v3.17
2025-01-29 05:45:28 +00:00
semantic-release-bot
5e34dd593f
chore: update version to 0.6.1
2024-11-14 16:02:20 +00:00
Luca Barbato
79cda8ef05
fix: Remove skeptic
...
It is unmaintained and fails to build tests.
Same as https://github.com/vincent-herlemont/native_db/pull/286 .
2024-11-14 16:58:20 +01:00
semantic-release-bot
537b207aef
chore: update version to 0.6.0
2024-11-14 13:42:17 +00:00
Luca Barbato
021ea5c54c
feat: Add a named variant for rmp_serde_1_3
...
And advise to use it if advanced serde features are in use.
2024-11-14 14:38:46 +01:00
Luca Barbato
b543e30216
docs: Document rmp-serde existence
...
And warn about metadata-less formats and serde advanced features.
2024-11-14 14:38:46 +01:00
Luca Barbato
28d41a41e9
chore: Remove trailing whitespaces
2024-11-14 14:38:46 +01:00
renovate[bot]
e75e945383
chore(deps): update hustcer/setup-nu action to v3.16
2024-11-13 06:36:21 +00:00
semantic-release-bot
9cd037a857
chore: update version to 0.5.0
2024-11-12 22:51:31 +00:00
renovate[bot]
f539da2a52
chore(deps): update actions/checkout digest to 11bd719
2024-11-12 23:48:46 +01:00
renovate[bot]
56a1387f8b
fix(deps): update rust crate thiserror to v2
2024-11-12 23:48:02 +01:00
Luca Barbato
d932be10ac
fix: Unbreak the doctests
2024-11-12 23:47:47 +01:00
Dylan Bowker
028ae2d0c8
chore: added rust msrv to Cargo.toml
2024-11-12 23:47:47 +01:00
Dylan Bowker
a653f3f826
docs: simplified docs on codecs
2024-11-12 23:47:47 +01:00
Dylan Bowker
a21b7d0aa0
docs: moved notes on codecs to README.md
2024-11-12 23:47:47 +01:00
Dylan Bowker
b85d4ce554
docs: update to docs on codecs
2024-11-12 23:47:47 +01:00
Dylan Bowker
ac150841b0
docs: update to docs on codecs
2024-11-12 23:47:47 +01:00
Dylan Bowker
2196af7a82
fix: removed #![feature(doc_cfg)] nightly feature
2024-11-12 23:47:47 +01:00
Dylan Bowker
95e68f235e
chore: re-instated original default features
2024-11-12 23:47:47 +01:00
Dylan Bowker
dac9ddb4c0
chore: some docs clean-up
2024-11-12 23:47:47 +01:00