-
Notifications
You must be signed in to change notification settings - Fork 10
Feat: Add review concurrency/comment limits, motion UI components, and stats page refactor #26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Changes from all commits
9a4373d
03b1506
2dc58af
402da0f
0417628
82c0bba
8b03e91
49819a8
5e48346
cf8539a
2da6d8e
ebf33dc
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| version: 2 | ||
| updates: | ||
| - package-ecosystem: "npm" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "weekly" | ||
|
|
||
| - package-ecosystem: "github-actions" | ||
| directory: "/" | ||
| schedule: | ||
| interval: "weekly" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,33 @@ | ||
| name: CodeQL | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| pull_request: | ||
| branches: [main] | ||
| schedule: | ||
| - cron: '0 0 * * 1' | ||
|
|
||
| jobs: | ||
| analyze: | ||
| name: Analyze | ||
| runs-on: ubuntu-latest | ||
| permissions: | ||
| contents: read | ||
| security-events: write | ||
|
|
||
| strategy: | ||
| matrix: | ||
| language: ['javascript-typescript'] | ||
|
|
||
| steps: | ||
| - name: Checkout repository | ||
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
|
|
||
| - name: Initialize CodeQL | ||
| uses: github/codeql-action/init@411c4c9a36b3fca4d674f06b6396b2c6d23522c6 # v3.36.3 | ||
| with: | ||
| languages: ${{ matrix.language }} | ||
|
|
||
| - name: Perform CodeQL Analysis | ||
| uses: github/codeql-action/analyze@411c4c9a36b3fca4d674f06b6396b2c6d23522c6 # v3.36.3 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| # Changelog | ||
|
|
||
| ## v0.9.2 | ||
|
|
||
| ### What's New | ||
|
|
||
| - **UI Redesign:** Full visual overhaul of the dashboard, landing page, and auth flows with an updated color system, improved dark mode, and a cleaner layout overall. | ||
| - **Code Splitting:** All pages now use `React.lazy` for async loading, reducing initial bundle size and improving load times. | ||
| - **Custom LLM Providers:** Manage custom OpenAI-compatible API providers directly from the dashboard. Rate limits are optional. No more hardcoded keys in wrangler config. | ||
| - **Cloudflare Setup Script:** A new Node.js script automates the full Cloudflare deployment setup, making self-hosting significantly easier. | ||
| - **Increased Review Capacity:** Max files processed per review raised from 15 to 100. | ||
|
|
||
| ### Improvements | ||
|
|
||
| - Review jobs are now resumable and lease-aware, stalled reviews can recover automatically. | ||
| - Added retry logic for transient model provider failures. | ||
| - Optimized job polling with ETag caching and adaptive delays. | ||
| - Improved settings UI, error reporting, and API robustness across the board. | ||
| - Added GitHub Actions CI with a disposable test environment for the full test suite. | ||
|
|
||
| ### Bug Fixes | ||
|
|
||
| - Fixed `APP_PRIVATE_KEY` parsing for single-line strings with literal `\n` sequences. | ||
| - Fixed database migration failures on existing deployments. | ||
| - Fixed duplicate `/api/auth/updates-email` calls on page load. | ||
| - Fixed file review status bar rendering on the dashboard. | ||
|
|
||
| **Full Changelog**: https://github.com/devarshishimpi/codra/commits/v0.9.2 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| INSERT INTO global_settings (key, value) VALUES | ||
| ('review_concurrency_level', 'medium'), | ||
| ('review_max_comments', '10') | ||
| ON CONFLICT (key) DO NOTHING; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| ALTER TABLE model_configs DROP COLUMN IF EXISTS rpm; | ||
| ALTER TABLE model_configs DROP COLUMN IF EXISTS tpm; | ||
| ALTER TABLE model_configs DROP COLUMN IF EXISTS rpd; |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,5 @@ | ||
| -- Tracks how many times a job has rescheduled the *same* phase without completing any | ||
| -- file review (a "no-progress continuation"). Reset to 0 whenever a chunk makes progress. | ||
| -- A hard ceiling on this counter (see MAX_JOB_CONTINUATIONS in review.ts) stops a job that | ||
| -- can never make headway from churning indefinitely on transient/budget deferrals. | ||
| ALTER TABLE jobs ADD COLUMN IF NOT EXISTS continuation_count INT NOT NULL DEFAULT 0; |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
|
|
@@ -903,8 +903,7 @@ | |||||
| gap: 0.625rem !important; | ||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The CSS relies heavily on
Suggested change
|
||||||
| padding: 0.75rem 0.875rem !important; | ||||||
| border-radius: 0.625rem !important; | ||||||
| border-width: 1px !important; | ||||||
| border-style: solid !important; | ||||||
| border: none !important; | ||||||
| font-family: var(--font-sans) !important; | ||||||
| font-size: 0.8125rem !important; | ||||||
| line-height: 1.45 !important; | ||||||
|
|
@@ -915,7 +914,6 @@ | |||||
|
|
||||||
| /* light defaults (overridden per-variant below) */ | ||||||
| background: oklch(99.5% 0.004 115) !important; | ||||||
| border-color: oklch(88% 0.008 115) !important; | ||||||
| color: oklch(15% 0.02 115) !important; | ||||||
|
|
||||||
| /* smooth entrance */ | ||||||
|
|
@@ -924,7 +922,6 @@ | |||||
|
|
||||||
| .dark .codra-toast { | ||||||
| background: oklch(13% 0.018 115) !important; | ||||||
| border-color: oklch(22% 0.022 115) !important; | ||||||
| color: oklch(94% 0.006 115) !important; | ||||||
| box-shadow: | ||||||
| 0 6px 24px oklch(0% 0 0 / 0.5), | ||||||
|
|
@@ -983,64 +980,9 @@ | |||||
| background: oklch(28% 0.022 115) !important; | ||||||
| } | ||||||
|
|
||||||
| /* ── SUCCESS ─────────────────────────────────────── */ | ||||||
| .codra-toast-success { | ||||||
| background: oklch(98.5% 0.045 115) !important; | ||||||
| border-color: oklch(82% 0.16 115) !important; | ||||||
| color: oklch(28% 0.10 115) !important; | ||||||
| } | ||||||
|
|
||||||
| .dark .codra-toast-success { | ||||||
| background: oklch(16% 0.08 115) !important; | ||||||
| border-color: oklch(32% 0.14 115) !important; | ||||||
| color: oklch(90% 0.18 115) !important; | ||||||
| } | ||||||
|
|
||||||
| .codra-toast-success .codra-toast-description { | ||||||
| color: oklch(38% 0.10 115) !important; | ||||||
| opacity: 0.85 !important; | ||||||
| } | ||||||
|
|
||||||
| .dark .codra-toast-success .codra-toast-description { | ||||||
| color: oklch(72% 0.12 115) !important; | ||||||
| opacity: 0.9 !important; | ||||||
| } | ||||||
|
|
||||||
| /* ── ERROR ───────────────────────────────────────── */ | ||||||
| .codra-toast-error { | ||||||
| background: oklch(98.5% 0.03 25) !important; | ||||||
| border-color: oklch(80% 0.14 25) !important; | ||||||
| color: oklch(32% 0.14 25) !important; | ||||||
| } | ||||||
|
|
||||||
| .dark .codra-toast-error { | ||||||
| background: oklch(15% 0.07 25) !important; | ||||||
| border-color: oklch(35% 0.14 25) !important; | ||||||
| color: oklch(85% 0.08 25) !important; | ||||||
| } | ||||||
|
|
||||||
| .codra-toast-error .codra-toast-description { | ||||||
| color: oklch(42% 0.12 25) !important; | ||||||
| opacity: 0.85 !important; | ||||||
| } | ||||||
|
|
||||||
| .dark .codra-toast-error .codra-toast-description { | ||||||
| color: oklch(68% 0.10 25) !important; | ||||||
| opacity: 0.9 !important; | ||||||
| } | ||||||
|
|
||||||
| /* ── LOADING ─────────────────────────────────────── */ | ||||||
| .codra-toast-loading { | ||||||
| background: oklch(98% 0.004 115) !important; | ||||||
| border-color: oklch(86% 0.010 115) !important; | ||||||
| color: oklch(20% 0.020 115) !important; | ||||||
| } | ||||||
|
|
||||||
| .dark .codra-toast-loading { | ||||||
| background: oklch(14% 0.020 115) !important; | ||||||
| border-color: oklch(24% 0.025 115) !important; | ||||||
| color: oklch(88% 0.008 115) !important; | ||||||
| } | ||||||
| /* ── SUCCESS / ERROR / LOADING ───────────────────── | ||||||
| Use the default toast text color instead of a | ||||||
| status tint (icon color already conveys status). */ | ||||||
|
|
||||||
| /* spinner inherits accent color */ | ||||||
| .codra-toast-loader svg { | ||||||
|
|
@@ -1049,26 +991,18 @@ | |||||
|
|
||||||
| /* ── WARNING ─────────────────────────────────────── */ | ||||||
| .codra-toast-warning { | ||||||
| background: oklch(98.5% 0.04 65) !important; | ||||||
| border-color: oklch(82% 0.13 65) !important; | ||||||
| color: oklch(35% 0.12 65) !important; | ||||||
| color: oklch(35% 0.12 65) !important; | ||||||
| } | ||||||
|
|
||||||
| .dark .codra-toast-warning { | ||||||
| background: oklch(16% 0.08 65) !important; | ||||||
| border-color: oklch(35% 0.14 65) !important; | ||||||
| color: oklch(82% 0.14 65) !important; | ||||||
| color: oklch(82% 0.14 65) !important; | ||||||
| } | ||||||
|
|
||||||
| /* ── INFO ────────────────────────────────────────── */ | ||||||
| .codra-toast-info { | ||||||
| background: oklch(98.5% 0.03 250) !important; | ||||||
| border-color: oklch(80% 0.12 250) !important; | ||||||
| color: oklch(30% 0.12 250) !important; | ||||||
| color: oklch(30% 0.12 250) !important; | ||||||
| } | ||||||
|
|
||||||
| .dark .codra-toast-info { | ||||||
| background: oklch(15% 0.07 250) !important; | ||||||
| border-color: oklch(33% 0.12 250) !important; | ||||||
| color: oklch(80% 0.12 250) !important; | ||||||
| color: oklch(80% 0.12 250) !important; | ||||||
| } | ||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The migration removes the commands that make 'rpm', 'tpm', and 'rpd' columns nullable (DROP NOT NULL), while simultaneously removing those columns from the subsequent INSERT statements. If these columns remain in the schema as NOT NULL and lack default values, the INSERT queries will fail with a constraint violation error. If these fields are deprecated, they should be explicitly dropped from the table using 'ALTER TABLE model_configs DROP COLUMN ...' to ensure schema consistency across environments.