* Fix linter warnings in the webview (part 2)
Replace protobus calls using object literals to use Message.create({...})
Fix incorrect property name detected after this change in webview-ui/src/components/settings/SettingsView.tsx
Optimised imports in vscode.
* formatting
* feat(lint): Add custom ESLint rules for protobuf type checking
Add two custom ESLint rules to enforce proper usage patterns when creating protobuf objects.
Using .create() to build protobufs ensures that the protobuf is type checked when it is created. Protobufs created using
object literals are not type checked, which can lead to subtle bugs and type mismatches. The linter rules detect when protobufs are created without using .create() or .fromPartial().
- no-protobuf-object-literals: Enforces the use of `.create()` or `.fromPartial()` methods instead of object literals when creating protobuf types.
```
/Users/sjf/cline/src/shared/proto-conversions/state/chat-settings-conversion.ts
9:9 warning Use ChatSettings.create() or ChatSettings.fromPartial() instead of object literal for protobuf type
Found: return {
mode: chatSettings.mode === "plan" ? PlanActMode.PLAN : PlanActMode.ACT,
preferredLanguage: chatSettings.preferredLanguage,
openAiReasoningEffort: chatSettings.openAIReasoningEffort,
}
Suggestion: ChatSettings.create({
mode: chatSettings.mode === "plan" ? PlanActMode.PLAN : PlanActMode.ACT,
preferredLanguage: chatSettings.preferredLanguage,
openAiReasoningEffort: chatSettings.openAIReasoningEffort,
})
```
- no-grpc-client-object-literals: Enforces proper protobuf creation for gRPC service client parameters. This needs a separate rule
because the type signatures of the ServiceClients methods are too generic to be detected by the previous rule.
```
/Users/sjf/cline/webview-ui/src/components/mcp/configuration/tabs/add-server/AddRemoteServerForm.tsx
41:62 warning Use the appropriate protobuf .create() or .fromPartial() method instead of object literal for gRPC client parameters.
Found: McpServiceClient.addRemoteMcpServer({
serverName: serverName.trim(),
serverUrl: serverUrl.trim(),
})
```
These rules help maintain code quality by enforcing consistent patterns for working with protocol buffers throughout the codebase, reducing potential runtime errors from improper message construction.
* Update test
* Add custom eslint rules to new webview-ui config
* Only include webview grpc ServiceClient check
* Fix lint errors
* formatting
* Update package-lock.json
* Update package.json
The webview and the cline package were using different version of eslint,
which makes it difficult to use custom rules because the webview version wants the rules as
ES modules, but the cline version wants commonJS modules.
Switch the webview to use the same version as the cline package.
Switch the webview eslint JS config to the json config file.
* add a matrix strategy for testing
* Handle EOL on Windows
* use bash as shell on every os and run the test-ci script
* fix tsconfig path resolution using the __dirnname
* print test results regardless of status
* Limit artifact upload to Linux
* update the test-cli
* Add windows-specific dependencies as optional dependencies
lightningcss-win32-x64-msvc
rollup-win32-x64-msvc
* Do not collect coverage on Windows
* Use UTF-8 on the Python Scripts
* force the ubuntu-latest name to be `test`
* initial protobuf setup & rough domains
* delete old protos for now
* phase 1
* initial working demo
* simplify call a bit more
* remomve some comments
* use common.proto
* remove redundant browser-service layer, clean up naming
* delete mcp proto for now
* better client layout & easier service imports
* a reflection-based way to create grpc services automatically
* better code layout for grpc implementations
* switch to auto-generating the method registration via bash
* hook protobufs into package.json scripts
* make service implementations more generic
* warn user that they must install protoc deps
* delete old message passing for getBrowserConnectionInfo
* format fix
* format fix
* rewrite build-protos in node & update package.json
* don't protoc during package
* change how imports work based on feedback
* package lock seems necessary now
---------
Co-authored-by: Andrei Edell <andrei@nugbase.com>
* Add Coverage Reporting
* automate tests via github workflow
* ensure documents are cleaned up at the end of the workflow
* add changeset
* backout github workflow changes
* update changeset to reflect split
---------
Co-authored-by: Dennis Bartlett <bartlett.dc.1@gmail.com>
* Accounts Modal mocked
* fix dividers
* Fix flex styling
* Fix account card in other views
* Move AccountInfoCard to tailwind and fix flex styling
* Get credits data from endpoint
* refactor creditshistorytable
* prettier
* changeset
* Properly connect and format data from endpoint
* Overflow scroll box
* linter
* Update webview-ui/src/utils/format.ts
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
* Make svg asset a component
* fix svg type
* Use clineprovider weakref
* Move shared types to shared folder
* Make account view buttons full width
* Make history table take full height
* Update webview-ui/src/components/account/AccountView.tsx
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
---------
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
* welcome page now shows login button
* adding cline apikey to context
* added cline provider + making sure welcome page closes
* adjusting welcome page language
* swapped cline provider to use openai flavor requests
* handling credit limit errors (super hacky ugh)
* welcome view hiding api options by default
* added back account page and relying more heavily on the firebase custom token to ensure persistent login
* persisting login state through window reloads
* renaming Account -> Cline Account
* use openrouter format with cline api
* Update welcome experience
* Fix error handling
* added generation details tracking to cline provider
* small edit to account view
* logging cline instead of openrouter
* logging cline instead of openrouter
* response.data instead of response.data.data
* set isdev to false for prerelease
* changeset added
* Update tricky-zebras-talk.md
* Update tricky-zebras-talk.md
* welcome page language
* more logging and updated authentication system to be more robust and reliable
* only removing custom token on explicit log out action
* even more aggressive custom token fetching + storing in apiConfig
* moving firebase auth logic to webview because nodejs firebase token refresh is not supported
* cleaned up all old logic for extension server side auth persistence
* reconciling merge conflicts with main
* reconciling merge conflicts
* package-lock.json
* package lock
* package-lock
* packagejson + lock
* use standard API Request Failed title for all API errors while maintaining detailed credit limit information in error content
* deleting packagejson line for vertexai
* reverting package-lock changes
* package-lock.json straight from main
* removing redundant csp allowance
* Fix package-lock
* Add missing options to cline stream
* Remove duplicate csp
* Remove email subscribe
* Update welcome page and cline account view
* Fixes
* Fix errors
---------
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
* Initial webview vite migration
* Make vite work
* Fix test running
* Enable HMR, disable vite chunking
* Silence type checking errors
* Vite doesn't use browserslist
* get rid of breaking css flag
* add doc to getHMRHtmlContent
* Make it work
* Changeset
* Add IS_DEV to env definitions
* Update tasks to include HMR
* Update CSP image rules
* prettier
* reintroduce IS_DEV in env
* add new deps to pkg lock
---------
Co-authored-by: Dennis Bartlett <bartlett.dc.1@gmail.com>
* showing images after mcp responses
* images now open in a webview tab
* Open Graph link metadata display for MCP responses
* almost totally working rich mcp response display with images and embeds
* closer
* header for response display
* updated styling of mcp responses
* default to plain text if rich response is loading
* formatting fix
* added changeset output
* remove some old code
* add the dashed border back
* avoid XSS attacks by sanitizing the preview image urls and embeds
* remove incorrect vendor prefix css
* delete old version of open image implementation
* undo some comment removals and cleanups to make PR easier to read
---------
Co-authored-by: Andrei Edell <andrei@nugbase.com>
* Chore: Pretier for consistant formatting
- TODO: This PR needs to be updated by Saoud after he runs `npm install` & `npm format:fix` and commits the results of the prettier changes.
* Revert prettier config
* Run npm install
* Fix prettier config and ignore package lock
* Run format
---------
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>