Skip to content
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

feat: support property ThemeColor id #4298

Merged
merged 12 commits into from
Jan 14, 2025
Merged

Conversation

quxingkai
Copy link
Contributor

@quxingkai quxingkai commented Jan 3, 2025

Types

  • 🎉 New Features

Background or solution

Changelog

Summary by CodeRabbit

  • 新功能

    • ThemeColor 类添加了 id 属性,提供颜色的唯一标识符。
  • 改进

    • 终端选项现在支持更灵活的颜色设置。
    • 状态栏项目的背景颜色处理更加严格和类型安全。
  • 类型更新

    • 优化了颜色相关接口和类的类型定义,增强了代码健壮性。

@opensumi opensumi bot added the 🎨 feature feature required label Jan 3, 2025
Copy link
Contributor

coderabbitai bot commented Jan 3, 2025

Warning

There were issues while running some tools. Please review the errors and either fix the tool’s configuration or disable the tool if it’s a critical failure.

🔧 eslint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

warning eslint@8.57.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.
warning eslint > @humanwhocodes/config-array@0.13.0: Use @eslint/config-array instead
warning eslint > @humanwhocodes/config-array > @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
warning eslint > file-entry-cache > flat-cache > rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
warning eslint > file-entry-cache > flat-cache > rimraf > glob@7.2.3: Glob versions prior to v9 are no longer supported
warning eslint > file-entry-cache > flat-cache > rimraf > glob > inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
warning eslint-import-resolver-typescript > glob@7.2.3: Glob versions prior to v9 are no longer supported
error Couldn't find any versions for "@opensumi/ide-dev-tool" that matches "workspace:*"

变更概览

变更说明

本次拉取请求(PR)涉及三个文件中的类型和接口定义的修改,主要集中在颜色和主题相关的类型处理上。变更包括为 ThemeColor 添加 id 属性,扩展终端选项中颜色属性的类型,以及调整状态栏项目背景颜色的类型约束。

变更

文件路径 变更摘要
packages/types/vscode/typings/vscode.theme.d.ts ThemeColor 类添加只读 id 属性
packages/terminal-next/src/common/pty.ts 修改 TerminalOptionsICreateTerminalOptions 接口中 color 属性的类型,允许接受字符串和 ThemeColor
packages/extension/src/hosted/api/vscode/ext.host.statusbar.ts 限制 StatusBarItemImpl 类中背景颜色属性的类型为仅 ThemeColor

可能相关的 PR

建议的审阅者

  • Ricbet

时序图

由于变更主要涉及类型定义,不适合生成时序图。


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cf530fb and 3a9ab2e.

📒 Files selected for processing (1)
  • packages/terminal-next/src/common/pty.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/terminal-next/src/common/pty.ts
⏰ Context from checks skipped due to timeout of 90000ms (8)
  • GitHub Check: unittest (ubuntu-latest, 18.x, jsdom)
  • GitHub Check: unittest (ubuntu-latest, 18.x, node)
  • GitHub Check: build (ubuntu-latest, 20.x)
  • GitHub Check: unittest (macos-latest, 18.x, jsdom)
  • GitHub Check: build (macos-latest, 20.x)
  • GitHub Check: build-windows
  • GitHub Check: unittest (macos-latest, 18.x, node)
  • GitHub Check: ubuntu-latest, Node.js 20.x

Finishing Touches

  • 📝 Generate Docstrings

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR. (Beta)
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
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: 0

🧹 Nitpick comments (2)
packages/extension/src/hosted/api/vscode/ext.host.statusbar.ts (2)

82-82: 建议在注释中补充 _backgroundColor 的使用范围。
为了帮助后续维护者快速了解该属性的用途,最好在声明处或其上方添加简要备注说明 _backgroundColor 主要用于何种场景、可取值范围以及与 _color 的差异。


155-155: 在 setter 内进行字符串检查时存在潜在可维护性风险。
在 setter 中同时使用 ALLOWED_BACKGROUND_CSS_VARSALLOWED_BACKGROUND_COLORS 来限制可用色值。若后期需要扩展可用色值集,可能需要修改多个地方。可以考虑建立统一常量来源或集中配置机制,提高可维护性。

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d5f68e0 and 24a8e8d.

📒 Files selected for processing (3)
  • packages/extension/src/common/vscode/ext-types.ts (1 hunks)
  • packages/extension/src/hosted/api/vscode/ext.host.statusbar.ts (2 hunks)
  • packages/types/vscode/typings/vscode.theme.d.ts (1 hunks)
🔇 Additional comments (3)
packages/extension/src/hosted/api/vscode/ext.host.statusbar.ts (1)

151-151: 严格仅返回 ThemeColor | undefined 可能导致类型检查失败的风险。
目前对 backgroundColor 的 getter 仅返回 ThemeColor | undefined,如有外部调用者期望使用 string 类型(比如自定义颜色值)可能会出现异常。需要确保在外部完全移除对 string 的依赖或添加相应兼容处理逻辑。

packages/types/vscode/typings/vscode.theme.d.ts (1)

7-10: ThemeColor 新增只读属性 id 的变化可能破坏对某些外部插件的兼容性。
第三方若曾依赖可写的 id 属性进行动态变更,更新后可能导致编译或运行时错误。可在文档中补充变更说明,引导使用者升级相应逻辑。

如果需要,我可以帮忙写一段向后兼容的插桩代码,或者起草快速迁移指南。

packages/extension/src/common/vscode/ext-types.ts (1)

994-994: 确保只读属性 id 设置后不可修改。
当前只读属性设计可防止外部强行更新 ThemeColor.id,符合主题色标识一经创建就不可更改的业务逻辑。不过在某些动态主题切换场景,需要确保不会影响系统的颜色更新机制。

Copy link
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

🧹 Nitpick comments (1)
packages/terminal-next/src/common/pty.ts (1)

542-542: 类型定义保持一致性!

IShellLaunchConfig 接口中 color 属性的类型定义更新与 ITerminalProfile 保持一致,这是一个很好的改进:

  1. 确保了终端配置和启动配置之间的类型兼容性
  2. 统一了颜色属性的处理方式
  3. 提供了相同的主题支持能力

建议在项目中添加一个集中的类型定义文件(如 types/terminal.ts),统一管理这些共享的类型定义,以避免将来可能出现的类型不一致问题。

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 24a8e8d and 5a52ffd.

📒 Files selected for processing (3)
  • packages/terminal-next/src/common/profile.ts (1 hunks)
  • packages/terminal-next/src/common/pty.ts (1 hunks)
  • packages/types/vscode/typings/vscode.window.d.ts (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: build (ubuntu-latest, 20.x)
  • GitHub Check: build (macos-latest, 20.x)
  • GitHub Check: ubuntu-latest, Node.js 20.x
  • GitHub Check: build-windows
🔇 Additional comments (1)
packages/terminal-next/src/common/profile.ts (1)

57-57: 类型定义更新符合预期!

扩展 color 属性的类型定义增加了主题色支持,使终端配置更加灵活。支持以下类型:

  • 字符串类型的颜色值
  • VS Code 主题色
  • 可选(undefined)

这样的改动有助于:

  1. 更好地集成 VS Code 的主题系统
  2. 保持与终端配置的向后兼容性

packages/types/vscode/typings/vscode.window.d.ts Outdated Show resolved Hide resolved
Copy link

codecov bot commented Jan 7, 2025

Codecov Report

Attention: Patch coverage is 50.00000% with 1 line in your changes missing coverage. Please review.

Project coverage is 54.20%. Comparing base (1f0f364) to head (f01dc3c).
Report is 4 commits behind head on main.

Files with missing lines Patch % Lines
...ension/src/hosted/api/vscode/ext.host.statusbar.ts 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4298      +/-   ##
==========================================
- Coverage   54.20%   54.20%   -0.01%     
==========================================
  Files        1634     1634              
  Lines       99941    99941              
  Branches    21703    21703              
==========================================
- Hits        54177    54170       -7     
- Misses      38021    38027       +6     
- Partials     7743     7744       +1     
Flag Coverage Δ
jsdom 49.73% <50.00%> (-0.01%) ⬇️
node 12.24% <0.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@erha19 erha19 merged commit 46c3c0c into opensumi:main Jan 14, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🎨 feature feature required
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants