203 Commits

Author SHA1 Message Date
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