Skip to content

Add image generation workbench#4701

Open
qiyan233 wants to merge 5 commits intoQuantumNous:mainfrom
qiyan233:image-workbench
Open

Add image generation workbench#4701
qiyan233 wants to merge 5 commits intoQuantumNous:mainfrom
qiyan233:image-workbench

Conversation

@qiyan233
Copy link
Copy Markdown

@qiyan233 qiyan233 commented May 8, 2026

Summary

  • add an authenticated image generation workbench page under /image-workbench
  • route playground image requests through /pg/images/generations so existing relay auth, channel selection, quota pre-consume/refund, and billing settlement are reused
  • add gpt-image-2/codex-gpt-image-2 model recognition and sidebar/module/i18n wiring

Verification

  • parsed updated en/zh locale JSON successfully
  • ran prettier check for touched frontend files
  • added image model detection tests

Notes

  • Go tests/gofmt were not run locally because Go is not available in PATH in this environment
  • Full frontend build/typecheck could not be completed because this checkout has no installed project dependencies and npm install hit native binding/dependency resolution issues; route tree was patched manually for /image-workbench

Summary by CodeRabbit

  • New Features

    • Added two image-generation models (gpt-image-2, codex-gpt-image-2).
    • Introduced Image Workbench UI: generate, preview, download, and manage recent images (prompt, model, size, quality, count, output format).
    • Added Image Workbench route, sidebar entry, and default sidebar enable; enabled relay billing and related UI strings.
  • Tests

    • Added unit tests verifying recognition of the new image models.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 8, 2026

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds an image generation workbench: backend support (new PlaygroundImage handler, relay-mode mapping, model allowlists, middleware group handling) and a full frontend feature (types, API wrapper, UI component, routing, sidebar integration, and i18n strings). Also standardizes frontend ApiRequestConfig typing and replaces inline untyped request option casts.

Changes

Image Generation Workbench

Layer / File(s) Summary
Frontend Type Contracts
web/default/src/features/image-workbench/types.ts
ImageWorkbenchRequest, ImageWorkbenchData, ImageWorkbenchResponse, GeneratedImage, and ImageHistoryItem added.
Backend Model Definitions
common/model.go, relay/channel/openai/constant.go, common/model_test.go
ImageGenerationModels and OpenAI ModelList expanded with gpt-image-2 and codex-gpt-image-2; tests added to validate recognition.
Backend Image Handler & Middleware
controller/playground.go, middleware/distributor.go
New PlaygroundImage handler creates temporary token and relays image requests; Distribute() and getModelRequest() consolidate playground parsing for chat and image endpoints and enforce group access control.
Backend Relay Routing
relay/constant/relay_mode.go, router/relay-router.go
Path2RelayMode maps /pg/images/generations to RelayModeImagesGenerations; new POST /pg/images/generations route wired to PlaygroundImage.
Frontend API Integration
web/default/src/features/image-workbench/api.ts
generateWorkbenchImages() posts requests to /pg/images/generations and returns response payload.
Frontend UI Component
web/default/src/features/image-workbench/index.tsx
ImageWorkbench component with form controls, React Query fetching, generation handler, results grid, history persistence, and download support.
Frontend Route Registration
web/default/src/routeTree.gen.ts, web/default/src/routes/_authenticated/image-workbench/index.tsx
Authenticated route for /image-workbench added to generated route tree and registered under authenticated branch; page wraps component in Main layout.
Sidebar & Navigation
web/default/src/features/profile/components/sidebar-modules-card.tsx, web/default/src/features/system-settings/maintenance/*, web/default/src/hooks/use-sidebar-*.ts, web/default/src/hooks/use-sidebar-data.ts
Image Workspace module integrated into sidebar with default enabled; navigation item /image-workbench added and visibility gated by sidebar config.
Internationalization
web/default/src/i18n/locales/en.json, web/default/src/i18n/locales/zh.json, web/default/src/i18n/static-keys.ts
English and Simplified Chinese translations and static i18n keys for image workspace labels, status messages, and relay billing guidance.
ApiRequestConfig Typing & Usage
web/default/src/lib/api.ts and many web modules
Add exported ApiRequestConfig type and update numerous frontend modules to use typed request config objects in place of inline casts.
OAuth / Auth Hook Typing
web/default/src/routes/oauth/$provider.tsx, web/default/src/features/auth/hooks/use-oauth-login.ts, web/default/src/features/auth/reset-password-confirm/index.tsx
Replace local Axios request-config aliases with shared ApiRequestConfig usage.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

ready to merge

Suggested reviewers

  • creamlike1024
  • seefs001
  • Calcium-Ion

Poem

🐰 At the bench I nibble code and light,

Prompts bloom into pictures in the night,
Tokens hum, relays set the pace,
Sidebar opens — click, behold the place,
A rabbit cheers: "New images take flight!"

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 34.15% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add image generation workbench' directly and clearly summarizes the main change in this pull request—introducing a new authenticated image generation feature with supporting backend and frontend infrastructure.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
web/default/src/i18n/locales/en.json (1)

1976-2000: 🛠️ Refactor suggestion | 🟠 Major | 🏗️ Heavy lift

Use hierarchical i18n keys for the new image workbench strings.

These newly added entries use raw English sentence keys, which makes key evolution and cross-locale consistency harder. Please move these to semantic keys (e.g., imageWorkbench.status.completed, imageWorkbench.form.outputFormat, etc.) and update call sites accordingly.

♻️ Suggested key shape
- "Image generation completed.": "Image generation completed.",
- "Image generation failed.": "Image generation failed.",
- "Output format": "Output format",
+ "imageWorkbench.status.completed": "Image generation completed.",
+ "imageWorkbench.status.failed": "Image generation failed.",
+ "imageWorkbench.form.outputFormat": "Output format",

As per coding guidelines, web/default/src/i18n/**/*.{ts,tsx,json}: "Use hierarchical and semantically clear translation key names such as dashboard.overview.title and maintain naming consistency".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/default/src/i18n/locales/en.json` around lines 1976 - 2000, Replace the
raw English sentence keys in this JSON (e.g., "Image generation completed.",
"Image input", "Generating image...", etc.) with hierarchical semantic keys
(suggested: imageWorkbench.status.completed, imageWorkbench.status.failed,
imageWorkbench.workspace.title, imageWorkbench.input.label,
imageWorkbench.input.price, imageWorkbench.output.label,
imageWorkbench.output.price, imageWorkbench.preview.title,
imageWorkbench.ratio.label, imageWorkbench.tools.toVideo,
imageWorkbench.tokens.label, imageWorkbench.generate.description,
imageWorkbench.generate.relayFlow, imageWorkbench.generate.costsExplanation,
imageWorkbench.form.promptPlaceholder, imageWorkbench.errors.noData,
imageWorkbench.errors.generationFailed, imageWorkbench.form.outputFormat,
imageWorkbench.recent.title, imageWorkbench.recent.hint,
imageWorkbench.generating.label, imageWorkbench.emptyState.message,
imageWorkbench.relay.note) and then update all call sites that reference the old
literal English keys to use these new keys (search for the original strings in
UI components and change i18n lookup calls to the corresponding imageWorkbench.*
keys).
🧹 Nitpick comments (3)
web/default/src/i18n/locales/zh.json (1)

1976-2000: 🏗️ Heavy lift

Use hierarchical i18n keys for new image-workbench strings

The new entries use sentence-literal keys; this should be namespaced (e.g., imageWorkbench.status.completed, imageWorkbench.help.relayBilling) to match the required i18n key strategy and keep this module maintainable as it grows.

As per coding guidelines, "Use hierarchical and semantically clear translation key names such as dashboard.overview.title and maintain naming consistency".

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/default/src/i18n/locales/zh.json` around lines 1976 - 2000, Current
literal sentence keys (e.g., "Image generation completed.", "Generate images
with relay billing.", "Image Workspace", "Please enter an image prompt.", etc.)
should be replaced with hierarchical, namespaced keys and kept with the same
translations; for example map UI strings to keys like
imageWorkbench.status.completed, imageWorkbench.status.failed,
imageWorkbench.ui.workspace, imageWorkbench.input.placeholder,
imageWorkbench.billing.relayInfo, imageWorkbench.recent.title,
imageWorkbench.preview.label, imageWorkbench.format.output and so on—update each
corresponding key in the JSON to the new dotted names and keep the existing
Chinese values, ensuring naming consistency and grouping all image-workbench
strings under the imageWorkbench namespace.
web/default/src/features/image-workbench/types.ts (1)

23-33: ⚡ Quick win

Narrow GeneratedImage.outputFormat to a union instead of string.

Using a broad string weakens compile-time validation and allows invalid persisted values. Reuse explicit output format unions across request/state types.

♻️ Suggested typing cleanup
+export type ImageOutputFormat = 'png' | 'jpeg' | 'webp'
+
 export type ImageWorkbenchRequest = {
   model: string
   group?: string
   prompt: string
   n: number
   size: string
   quality: string
   response_format: 'b64_json' | 'url'
-  output_format?: 'png' | 'jpeg' | 'webp'
+  output_format?: ImageOutputFormat
 }
@@
 export type GeneratedImage = {
@@
-  outputFormat: string
+  outputFormat: ImageOutputFormat
   createdAt: string
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@web/default/src/features/image-workbench/types.ts` around lines 23 - 33,
Replace the loose string type for GeneratedImage.outputFormat with the shared
explicit union type used elsewhere (e.g., the OutputFormat or ImageFormat union
used in request/state types); update the GeneratedImage type to reference that
union instead of string so persisted values are validated at compile time and
consistent across request and state types.
controller/playground.go (1)

63-108: ⚡ Quick win

Extract a shared helper to avoid the ~90% duplication between Playground and PlaygroundImage.

The two handlers differ only in the relay format, token-name prefix, and a single c.Set("relay_mode", ...) line. Keeping them separate means any future change to the shared logic (error handling, userCache, token construction) must be applied in two places.

♻️ Proposed refactor
+func playgroundRelay(
+	c *gin.Context,
+	relayFormat types.RelayFormatType,
+	tokenPrefix string,
+) {
+	var newAPIError *types.NewAPIError
+	defer func() {
+		if newAPIError != nil {
+			c.JSON(newAPIError.StatusCode, gin.H{"error": newAPIError.ToOpenAIError()})
+		}
+	}()
+
+	useAccessToken := c.GetBool("use_access_token")
+	if useAccessToken {
+		newAPIError = types.NewError(
+			errors.New("暂不支持使用 access token"),
+			types.ErrorCodeAccessDenied,
+			types.ErrOptionWithSkipRetry(),
+		)
+		return
+	}
+
+	relayInfo, err := relaycommon.GenRelayInfo(c, relayFormat, nil, nil)
+	if err != nil {
+		newAPIError = types.NewError(err, types.ErrorCodeInvalidRequest, types.ErrOptionWithSkipRetry())
+		return
+	}
+
+	userId := c.GetInt("id")
+	userCache, err := model.GetUserCache(userId)
+	if err != nil {
+		newAPIError = types.NewError(err, types.ErrorCodeQueryDataError, types.ErrOptionWithSkipRetry())
+		return
+	}
+	userCache.WriteContext(c)
+
+	tempToken := &model.Token{
+		UserId: userId,
+		Name:   fmt.Sprintf("%s-%s", tokenPrefix, relayInfo.UsingGroup),
+		Group:  relayInfo.UsingGroup,
+	}
+	_ = middleware.SetupContextForToken(c, tempToken)
+	Relay(c, relayFormat)
+}

 func Playground(c *gin.Context) {
-	var newAPIError *types.NewAPIError
-	defer func() { ... }()
-	// ... identical body ...
-	Relay(c, types.RelayFormatOpenAI)
+	playgroundRelay(c, types.RelayFormatOpenAI, "playground")
 }

 func PlaygroundImage(c *gin.Context) {
     c.Set("relay_mode", relayconstant.RelayModeImagesGenerations)
-	var newAPIError *types.NewAPIError
-	defer func() { ... }()
-	// ... identical body ...
-	Relay(c, types.RelayFormatOpenAIImage)
+	playgroundRelay(c, types.RelayFormatOpenAIImage, "image-workbench")
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@controller/playground.go` around lines 63 - 108, Extract the shared logic in
PlaygroundImage and Playground into a helper like runPlayground(c *gin.Context,
relayFormat string, tokenPrefix string, relayMode string) that performs the
access-token check, calls relaycommon.GenRelayInfo(c, relayFormat, ...), fetches
userCache via model.GetUserCache, calls userCache.WriteContext(c), constructs
the temp token Name with fmt.Sprintf("%s-%s", tokenPrefix,
relayInfo.UsingGroup), calls middleware.SetupContextForToken(c, tempToken), sets
c.Set("relay_mode", relayMode) and finally calls Relay(c, relayFormat); have
both PlaygroundImage and Playground call this helper with
types.RelayFormatOpenAIImage / "image-workbench" /
relayconstant.RelayModeImagesGenerations and the other handler pass its
respective relayFormat, tokenPrefix and relayMode, and surface any errors from
GenRelayInfo or GetUserCache back as types.NewError consistent with existing
error handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/default/src/features/image-workbench/api.ts`:
- Around line 7-9: Create a central extended request config type in lib/api.ts
that extends AxiosRequestConfig and adds the custom flags (skipErrorHandler,
skipBusinessError, disableDuplicate), export that type, then replace the unsafe
cast in features/image-workbench/api.ts (the api.post call using "as
Record<string, unknown>") to use the new exported type; also update any other
API calls that rely on those interceptor flags to import and use this extended
config so the custom properties are properly typed across the codebase.

In `@web/default/src/features/image-workbench/index.tsx`:
- Around line 102-111: persistHistory currently attempts to store full
GeneratedImage objects (including large b64_json image data) into localStorage
which will trigger QuotaExceededError and is silently swallowed; change
persistHistory to persist only a lightweight metadata object (fields like
prompt, model, size, quality, createdAt, id, outputFormat) and exclude
src/b64_json, and if thumbnails are needed add code that generates and stores a
small low-resolution data URL via canvas resizing before saving; update any code
that reads history to expect the reduced shape and retain the full image
elsewhere (e.g., server or indexedDB) or regenerate on demand.
- Around line 156-169: The fallback group option strings in the useMemo for
groupOptions are hard-coded ('Auto' and 'Circuit Breaker') and must be wrapped
with the i18n t() function; update the component to obtain t from
useTranslation() (if not already present) and replace the label and desc values
in the DEFAULT_GROUP fallback object to use t('imageWorkbench.auto') and
t('imageWorkbench.circuitBreaker') (or appropriate keys), and ensure those keys
are added to the locale files so translations work on language change; keep the
rest of the logic around groupsData, DEFAULT_GROUP, and useMemo unchanged.
- Around line 470-523: The CardContent contains a two-level nested ternary using
isGenerating ? ... : resultImages.length === 0 ? ... : ..., which violates the
nested-ternary guideline; refactor by extracting the JSX into a small render
helper or assign the conditional block to a variable (e.g., renderImageContent
or imageContent) above the component's return, and inside that helper use clear
if/else or early returns to handle the three cases (isGenerating, empty
resultImages, and populated resultImages) while keeping references to
resultImages.map, image.id, image.src, image.prompt, and downloadImage unchanged
so the button behavior and badges remain intact.

---

Outside diff comments:
In `@web/default/src/i18n/locales/en.json`:
- Around line 1976-2000: Replace the raw English sentence keys in this JSON
(e.g., "Image generation completed.", "Image input", "Generating image...",
etc.) with hierarchical semantic keys (suggested:
imageWorkbench.status.completed, imageWorkbench.status.failed,
imageWorkbench.workspace.title, imageWorkbench.input.label,
imageWorkbench.input.price, imageWorkbench.output.label,
imageWorkbench.output.price, imageWorkbench.preview.title,
imageWorkbench.ratio.label, imageWorkbench.tools.toVideo,
imageWorkbench.tokens.label, imageWorkbench.generate.description,
imageWorkbench.generate.relayFlow, imageWorkbench.generate.costsExplanation,
imageWorkbench.form.promptPlaceholder, imageWorkbench.errors.noData,
imageWorkbench.errors.generationFailed, imageWorkbench.form.outputFormat,
imageWorkbench.recent.title, imageWorkbench.recent.hint,
imageWorkbench.generating.label, imageWorkbench.emptyState.message,
imageWorkbench.relay.note) and then update all call sites that reference the old
literal English keys to use these new keys (search for the original strings in
UI components and change i18n lookup calls to the corresponding imageWorkbench.*
keys).

---

Nitpick comments:
In `@controller/playground.go`:
- Around line 63-108: Extract the shared logic in PlaygroundImage and Playground
into a helper like runPlayground(c *gin.Context, relayFormat string, tokenPrefix
string, relayMode string) that performs the access-token check, calls
relaycommon.GenRelayInfo(c, relayFormat, ...), fetches userCache via
model.GetUserCache, calls userCache.WriteContext(c), constructs the temp token
Name with fmt.Sprintf("%s-%s", tokenPrefix, relayInfo.UsingGroup), calls
middleware.SetupContextForToken(c, tempToken), sets c.Set("relay_mode",
relayMode) and finally calls Relay(c, relayFormat); have both PlaygroundImage
and Playground call this helper with types.RelayFormatOpenAIImage /
"image-workbench" / relayconstant.RelayModeImagesGenerations and the other
handler pass its respective relayFormat, tokenPrefix and relayMode, and surface
any errors from GenRelayInfo or GetUserCache back as types.NewError consistent
with existing error handling.

In `@web/default/src/features/image-workbench/types.ts`:
- Around line 23-33: Replace the loose string type for
GeneratedImage.outputFormat with the shared explicit union type used elsewhere
(e.g., the OutputFormat or ImageFormat union used in request/state types);
update the GeneratedImage type to reference that union instead of string so
persisted values are validated at compile time and consistent across request and
state types.

In `@web/default/src/i18n/locales/zh.json`:
- Around line 1976-2000: Current literal sentence keys (e.g., "Image generation
completed.", "Generate images with relay billing.", "Image Workspace", "Please
enter an image prompt.", etc.) should be replaced with hierarchical, namespaced
keys and kept with the same translations; for example map UI strings to keys
like imageWorkbench.status.completed, imageWorkbench.status.failed,
imageWorkbench.ui.workspace, imageWorkbench.input.placeholder,
imageWorkbench.billing.relayInfo, imageWorkbench.recent.title,
imageWorkbench.preview.label, imageWorkbench.format.output and so on—update each
corresponding key in the JSON to the new dotted names and keep the existing
Chinese values, ensuring naming consistency and grouping all image-workbench
strings under the imageWorkbench namespace.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f0aa6afd-37d6-4c26-81bb-2fef1c84436b

📥 Commits

Reviewing files that changed from the base of the PR and between 560ba57 and 7d14a89.

📒 Files selected for processing (20)
  • common/model.go
  • common/model_test.go
  • controller/playground.go
  • middleware/distributor.go
  • relay/channel/openai/constant.go
  • relay/constant/relay_mode.go
  • router/relay-router.go
  • web/default/src/features/image-workbench/api.ts
  • web/default/src/features/image-workbench/index.tsx
  • web/default/src/features/image-workbench/types.ts
  • web/default/src/features/profile/components/sidebar-modules-card.tsx
  • web/default/src/features/system-settings/maintenance/config.ts
  • web/default/src/features/system-settings/maintenance/sidebar-modules-section.tsx
  • web/default/src/hooks/use-sidebar-config.ts
  • web/default/src/hooks/use-sidebar-data.ts
  • web/default/src/i18n/locales/en.json
  • web/default/src/i18n/locales/zh.json
  • web/default/src/i18n/static-keys.ts
  • web/default/src/routeTree.gen.ts
  • web/default/src/routes/_authenticated/image-workbench/index.tsx

Comment thread web/default/src/features/image-workbench/api.ts Outdated
Comment thread web/default/src/features/image-workbench/index.tsx Outdated
Comment thread web/default/src/features/image-workbench/index.tsx
Comment thread web/default/src/features/image-workbench/index.tsx Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@web/default/src/lib/api.ts`:
- Line 2: Run the project's type checker (bun run typecheck) and fix all
TypeScript errors until typecheck passes; specifically, in the module that
imports AxiosRequestConfig ensure the imported symbol (AxiosRequestConfig) is
either used in function signatures or removed, correct any incorrect
parameter/return types on the API functions that rely on that config, and add
explicit typing or casts where necessary so the file compiles cleanly with the
project's tsconfig/type rules.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d8962282-8173-44c7-b30d-3bd21126922a

📥 Commits

Reviewing files that changed from the base of the PR and between 2f44203 and 214d2e5.

📒 Files selected for processing (11)
  • web/default/src/features/auth/hooks/use-oauth-login.ts
  • web/default/src/features/auth/reset-password-confirm/index.tsx
  • web/default/src/features/channels/api.ts
  • web/default/src/features/channels/hooks/use-channel-upstream-updates.ts
  • web/default/src/features/image-workbench/api.ts
  • web/default/src/features/models/api.ts
  • web/default/src/features/playground/api.ts
  • web/default/src/features/system-settings/general/channel-affinity/api.ts
  • web/default/src/features/wallet/api.ts
  • web/default/src/lib/api.ts
  • web/default/src/routes/oauth/$provider.tsx
✅ Files skipped from review due to trivial changes (2)
  • web/default/src/features/wallet/api.ts
  • web/default/src/routes/oauth/$provider.tsx
🚧 Files skipped from review as they are similar to previous changes (1)
  • web/default/src/features/image-workbench/api.ts

Comment thread web/default/src/lib/api.ts
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.

1 participant