Skip to content

merge stage into main#79

Merged
aditya-arcot merged 58 commits intomainfrom
stage
Mar 3, 2026
Merged

merge stage into main#79
aditya-arcot merged 58 commits intomainfrom
stage

Conversation

@aditya-arcot
Copy link
Member

No description provided.

aditya-arcot and others added 30 commits February 22, 2026 01:16
Bumps the client-dependencies group in /client with 3 updates: [react-hook-form](https://github.com/react-hook-form/react-hook-form), [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) and [eslint](https://github.com/eslint/eslint).


Updates `react-hook-form` from 7.71.1 to 7.71.2
- [Release notes](https://github.com/react-hook-form/react-hook-form/releases)
- [Changelog](https://github.com/react-hook-form/react-hook-form/blob/master/CHANGELOG.md)
- [Commits](react-hook-form/react-hook-form@v7.71.1...v7.71.2)

Updates `@eslint/js` from 9.39.2 to 9.39.3
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](https://github.com/eslint/eslint/commits/v9.39.3/packages/js)

Updates `eslint` from 9.39.2 to 9.39.3
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v9.39.2...v9.39.3)

---
updated-dependencies:
- dependency-name: react-hook-form
  dependency-version: 7.71.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: client-dependencies
- dependency-name: "@eslint/js"
  dependency-version: 9.39.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: client-dependencies
- dependency-name: eslint
  dependency-version: 9.39.3
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: client-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the server-dependencies group in /server with 4 updates: [pydantic-settings](https://github.com/pydantic/pydantic-settings), [greenlet](https://github.com/python-greenlet/greenlet), [ruff](https://github.com/astral-sh/ruff) and [ty](https://github.com/astral-sh/ty).


Updates `pydantic-settings` from 2.13.0 to 2.13.1
- [Release notes](https://github.com/pydantic/pydantic-settings/releases)
- [Commits](pydantic/pydantic-settings@v2.13.0...v2.13.1)

Updates `greenlet` from 3.3.1 to 3.3.2
- [Changelog](https://github.com/python-greenlet/greenlet/blob/master/CHANGES.rst)
- [Commits](python-greenlet/greenlet@3.3.1...3.3.2)

Updates `ruff` from 0.15.1 to 0.15.2
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.1...0.15.2)

Updates `ty` from 0.0.17 to 0.0.18
- [Release notes](https://github.com/astral-sh/ty/releases)
- [Changelog](https://github.com/astral-sh/ty/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ty@0.0.17...0.0.18)

---
updated-dependencies:
- dependency-name: pydantic-settings
  dependency-version: 2.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: server-dependencies
- dependency-name: greenlet
  dependency-version: 3.3.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: server-dependencies
- dependency-name: ruff
  dependency-version: 0.15.2
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: server-dependencies
- dependency-name: ty
  dependency-version: 0.0.18
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: server-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
…/stage/client-dependencies-bc6fe7a1f7

Bump the client-dependencies group in /client with 3 updates
…ver-dependencies-09593107bb

Bump the server-dependencies group in /server with 4 updates
Bumps the npm_and_yarn group with 1 update in the /client directory: [rollup](https://github.com/rollup/rollup).


Updates `rollup` from 4.54.0 to 4.59.0
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](rollup/rollup@v4.54.0...v4.59.0)

---
updated-dependencies:
- dependency-name: rollup
  dependency-version: 4.59.0
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
…/npm_and_yarn-b2936519f3

Bump rollup from 4.54.0 to 4.59.0 in /client in the npm_and_yarn group across 1 directory
Bumps the npm_and_yarn group with 1 update in the /client directory: [minimatch](https://github.com/isaacs/minimatch).


Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v3.1.2...v3.1.5)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Copilot AI review requested due to automatic review settings March 3, 2026 16:37
@github-advanced-security
Copy link

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR merges changes from stage into main, primarily refactoring the server to use dependency-injected Settings (instead of a global settings singleton), adding coverage/type-check tooling, expanding test coverage, and adding client-side theming support.

Changes:

  • Server: introduce get_settings() + DI throughout services/dependencies; add app factory (create_app) and update logging/health endpoints.
  • Tooling/CI: add Pyright + pytest-cov + coverage config; update Makefile targets and CI workflows to run coverage.
  • Client: add theme toggling (next-themes) and migrate several UI primitive imports to radix-ui; regenerate API client for new endpoints.

Reviewed changes

Copilot reviewed 88 out of 100 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
server/uv.lock Updates Python dependency lock (adds pyright/coverage/pytest-cov, bumps packages).
server/pyproject.toml Adds deps + pyright/coverage tool config.
server/makefile Adds cov/open-cov, switches check to pyright, renames migrate target.
server/conftest.py Registers new pytest fixtures (logging/settings).
server/app/tests/test_main.py Adds test verifying app.main import behavior.
server/app/tests/services/test_email.py Updates email tests for new service signatures/settings fixture.
server/app/tests/services/auth/test_request_access.py Updates tests for settings injection + background task args.
server/app/tests/services/auth/test_login.py Updates login tests for settings injection.
server/app/tests/fixtures/settings.py Adds centralized test Settings fixture and disables env file loading.
server/app/tests/fixtures/overrides.py Refactors settings/email override fixtures (no global mutation).
server/app/tests/fixtures/logging.py Adds root logger restoration fixture for logging tests.
server/app/tests/fixtures/database.py Improves test DB setup; flags migrations as testing; safer rollback.
server/app/tests/fixtures/client.py Builds test app via factory + overrides get_settings/get_db.
server/app/tests/core/test_logging.py Adds tests for setup_logging behavior and file output.
server/app/tests/core/test_handlers.py Adds tests for exception handler prod vs non-prod behavior.
server/app/tests/core/test_config.py Adds tests for settings validation/caching and env-specific behavior.
server/app/tests/core/security/test_verify_jwt.py Adds verify_jwt tests with settings-driven secrets.
server/app/tests/core/security/test_get_token.py Adds token retrieval tests for registration/reset tokens.
server/app/tests/core/security/test_expire_tokens.py Adds tests for expiring existing tokens.
server/app/tests/core/security/test_create_token.py Adds tests for token creation helpers/wrappers.
server/app/tests/core/security/test_create_jwt.py Adds tests for JWT creation helpers/wrappers.
server/app/tests/core/security/test_create_access_token.py Removes old access token test (superseded by new suite).
server/app/tests/core/security/test_authenticate_user.py Updates auth tests; renames one test case.
server/app/tests/core/dependencies/test_get_sessionmaker.py Adds tests for cached sessionmaker behavior.
server/app/tests/core/dependencies/test_get_db.py Adds tests for get_db(settings) yielding configured session.
server/app/tests/core/dependencies/test_get_current_user.py Updates dependency tests for settings injection + JWT helpers.
server/app/tests/core/dependencies/test_get_current_admin.py Updates admin dependency tests to use settings fixture.
server/app/tests/api/utilities.py Refactors test request helper and admin login helper (settings-aware).
server/app/tests/api/test_user_get_current_user.py Updates API tests to use login_admin(..., settings).
server/app/tests/api/test_feedback_create_feedback.py Adds API tests for feedback creation endpoint.
server/app/tests/api/health/test_get_health.py Adds status-code comment; no logic change.
server/app/tests/api/health/test_get_db_health.py Adds API test for new /api/health/db endpoint.
server/app/tests/api/auth/test_reset_password.py Updates tests for settings fixture + status code constant.
server/app/tests/api/auth/test_request_access.py Updates expected 422 status constant.
server/app/tests/api/auth/test_register.py Updates tests for settings fixture + status code constant.
server/app/tests/api/auth/test_refresh_token.py Updates test to use settings-aware login helper.
server/app/tests/api/auth/test_logout.py Updates test to use settings-aware login helper.
server/app/tests/api/auth/test_login.py Updates tests for settings fixture + status code constant.
server/app/tests/api/auth/test_forgot_password.py Updates test signature to use settings fixture.
server/app/tests/api/admin/test_update_access_request_status.py Updates admin API tests for settings injection.
server/app/tests/api/admin/test_get_users.py Updates admin API tests for settings injection + typing ignores.
server/app/tests/api/admin/test_get_access_requests.py Updates admin API tests for settings injection + typing ignores.
server/app/services/github.py Makes GitHub service settings-driven via DI and call-time settings arg.
server/app/services/feedback.py Passes settings into feedback storage + GitHub issue creation.
server/app/services/email.py Makes email service settings-driven via DI; updates send signatures.
server/app/services/auth.py Threads settings through auth flows (JWT/email/background tasks).
server/app/services/admin.py Threads settings through admin flow for email background tasks.
server/app/migrations/versions/2025_12_22_1054-b38ada12f56b_seed_admin_user.py Adds test-mode branch to avoid reading .env during test migrations.
server/app/migrations/env.py Switches migrations config to get_settings() instead of global settings.
server/app/main.py Simplifies to app factory usage (fastapi_app, app = create_app()).
server/app/core/security.py Refactors security helpers to require settings; improves typing.
server/app/core/logging.py Refactors logging setup to accept params instead of global settings.
server/app/core/handlers.py Makes prod/non-prod error detail behavior app-state driven.
server/app/core/dependencies.py Makes DB/session/JWT dependencies settings-driven; adds cached sessionmaker.
server/app/core/config.py Introduces cached get_settings() and is_prod_like; adjusts settings model.
server/app/api/endpoints/health.py Adds /api/health/db endpoint that validates DB connectivity.
server/app/api/endpoints/feedback.py Passes settings into background task for feedback creation.
server/app/api/endpoints/auth.py Threads settings into auth endpoints and cookie behavior.
server/app/api/endpoints/admin.py Threads settings into admin endpoint to support email flows.
server/app/init.py Adds create_app() factory; installs swagger dark in non-prod-like envs.
server/.gitignore Ignores .coverage output.
scripts/generate_api.sh Suppresses logging while importing app for OpenAPI generation.
package.json Adds check:py and runs pyright in lint/lint-staged.
package-lock.json Updates dev tooling deps (lint-staged/npm-check-updates/etc.).
client/src/main.tsx Wraps app with ThemeProvider.
client/src/layout/AppLayout.tsx Adds theme mode toggle control to layout.
client/src/components/ui/separator.tsx Switches separator primitive import to radix-ui.
client/src/components/ui/select.tsx Switches select primitive import to radix-ui.
client/src/components/ui/popover.tsx Switches popover primitive import to radix-ui.
client/src/components/ui/label.tsx Switches label primitive import to radix-ui.
client/src/components/ui/dropdown-menu.tsx Switches dropdown menu primitive import to radix-ui.
client/src/components/ui/dialog.tsx Switches dialog primitive import to radix-ui.
client/src/components/ui/checkbox.tsx Switches checkbox primitive import to radix-ui.
client/src/components/ui/button.tsx Switches Slot usage to radix-ui API (Slot.Root).
client/src/components/ui/badge.tsx Switches Slot usage to radix-ui API (Slot.Root).
client/src/components/ModeToggle.tsx Adds theme mode dropdown UI using next-themes.
client/src/api/generated/zod.gen.ts Regenerates Zod schemas (includes new db health endpoint + minor schema changes).
client/src/api/generated/types.gen.ts Regenerates TS API types (adds GetDbHealth*).
client/src/api/generated/sdk.gen.ts Regenerates SDK (adds HealthService.getDbHealth).
client/src/api/generated/index.ts Re-exports newly generated endpoint types.
client/src/api/generated/core/params.gen.ts Fixes empty-slot stripping logic for array params.
client/src/api/generated/client/types.gen.ts Allows async CreateClientConfig and exposes onRequest.
client/src/api/generated/client.gen.ts Aligns CreateClientConfig type with async support.
client/src/App.tsx Removes hard-coded toaster theme (to follow app theme).
client/package.json Adds radix-ui, bumps assorted deps.
.vscode/settings.json Enables nearest Python analysis configuration.
.prettierignore Ignores server/htmlcov/ and server/logs/.
.github/workflows/test-server.yml Renames workflow and runs tests via make cov.
.github/workflows/merge-main-into-stage.yml Renames workflow/job for clarity.
.github/workflows/generate-api.yml Renames workflow/job, adds macOS keychain unlock, adjusts env creation.
.github/workflows/format-and-lint.yml Renames workflow/job and updates trigger workflow name.
.github/workflows/deploy.yml Renames workflow/jobs for clarity and updates reusable workflow wiring.
.github/workflows/deploy-server.yml Renames reusable workflow and job.
.github/workflows/deploy-infra.yml Renames reusable workflow and job.
.github/workflows/deploy-client.yml Renames reusable workflow and job.
.github/workflows/codeql.yml Renames workflow/job for clarity.
.github/workflows/build.yml Renames workflow/jobs for clarity.

@aditya-arcot aditya-arcot merged commit c0094e1 into main Mar 3, 2026
19 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants