Skip to content

Feat/lsp UI integration - #2

Open
gat0sy wants to merge 8 commits into
mainfrom
feat/lsp-ui-integration
Open

Feat/lsp UI integration#2
gat0sy wants to merge 8 commits into
mainfrom
feat/lsp-ui-integration

Conversation

@gat0sy

@gat0sy gat0sy commented Aug 8, 2026

Copy link
Copy Markdown
Owner

No description provided.

bajrangCoder and others added 4 commits August 4, 2026 13:07
…ation#2621)

* fix(editor): prevent false language mode recommendations

- recommend only language-mode plugins available in the registry
- suppress built-in, extensionless, and arbitrary file false positives
- remove the direct plugin-request issue action
- add regression tests for unknown extensions

* fix the stale network cache things
…tion#2553)

* fix(admob): harden consent, banners, and variant builds

- integrate UMP consent handling and reactive privacy choices
- serialize adaptive banner visibility across pages and keyboard changes
- make free and paid Cordova variant configuration idempotent
- commit and validate a deterministic self-contained AdMob bundle
- remove vulnerable legacy toolchains and update affected lockfiles
- replace the legacy soft-input workaround with adjustResize
- add tests, lockfile checks, bundle freshness, and security auditing to CI

* fix(admob): harden banner suppression and variant builds

- make banner suppression reason-aware across Pro and rewarded passes
- centralize reward state refresh, expiry scheduling, and failure handling
- remove stale Cordova consent and persisted AdMob variant metadata
- add ES2020-compatible access and Java 21 Android native CI coverage
- enforce transient plugin setup and clean tracked build state
- remove the obsolete large-screen quicktools tutorial

* fix: dev

* chore: remove CI workflow changes

---------

Co-authored-by: Ajit Kumar <dellevenjack@gmail>
Co-authored-by: Raunak Raj <71929976+bajrangCoder@users.noreply.github.com>
…oundation#2627)

* feat(lsp): support multiple language servers per editor

* fix: spell

* fix(lsp): honor diagnostics provider opt-out

* refactor(lsp): consume standalone multi-server client

* fix
@greptile-apps

greptile-apps Bot commented Aug 8, 2026

Copy link
Copy Markdown

Greptile Summary

The PR integrates expanded LSP UI and workspace-edit behavior alongside substantial AdMob, configuration, and build-system updates.

  • Adds multi-client LSP navigation, diagnostics, tooltip, edit, and workspace support.
  • Reworks AdMob consent, banner, reward, and native plugin handling.
  • Updates Cordova configuration, dependencies, development tooling, and tests.

Confidence Score: 2/5

The PR is not safe to merge until workspace edits are constrained to canonical workspace paths and reconnect restores the LSP session.

The workspace-edit handler still permits out-of-workspace modifications for rootless or non-canonical URIs, while the reconnect callback replaces the socket without reinitializing the protocol or reopening tracked documents.

Files Needing Attention: src/cm/lsp/transport.ts

Security Review

The workspace/applyEdit containment fix remains bypassable: rootless clients accept every target URI, and rooted clients use an unnormalized lexical prefix check before opening and editing files.

Important Files Changed

Filename Overview
src/cm/lsp/transport.ts Adds workspace-edit handling and reconnect support, but workspace containment remains bypassable and reconnect still does not restore LSP session state.
src/cm/lsp/clientManager.ts Expands multi-client lifecycle and URI handling while explicitly supporting clients initialized without a workspace root.
src/cm/lsp/workspace.ts Adds multi-view file tracking and host-backed file display used by workspace edits.
src/cm/lsp/tooltipExtensions.ts Expands hover and signature-help UI rendering without an eligible follow-up finding.
src/components/referencesPanel/utils.js Adds LSP reference URI conversion and navigation without an eligible follow-up finding.
src/plugins/admob/src/android/cordova/ads/Banner.kt Substantially revises native banner lifecycle and layout behavior without an eligible follow-up finding.
utils/config.js Reworks Cordova configuration generation and plugin handling without an eligible follow-up finding.

Reviews (2): Last reviewed commit: "feat(editor): resolve LSP file:// URIs a..." | Re-trigger Greptile

Comment thread src/cm/lsp/transport.ts
gat0sy added 4 commits August 10, 2026 03:38
LspToPosition threw range error on format error.
We attempt to fix it here with by clamping so we get the correct line count between the client and server.

applyTextEdit as also been extracted so both transport and client manager can import it from the helper.
LspToPosition threw range error on format error.
We attempt to fix it here with by clamping so we get the correct line count between the client and server.

applyTextEdit as also been extracted so both transport and client manager can import it from the helper.
go to def and similar fonction have been added,
a new interceptFileLink method has been created to solve an FileUriExposedException you may get if taping the signature link on the hover.

if the link is a website, it skips and let the normal behavior occur ( open a web browser page )
if the link is a file, it modifies the uri so the tap behave like a go to instead of crashing the whole app.
There are notably also some fixes for code actions, rename...ect, now they use the new lspPostionToOffset that uses clamping
…actions menu

Added resolveContentUriForFileUri() to map LSP file:// responses back to
content:// and sftp:// URIs via addedFolder matching

Refactor editorManager displayFile/openFile to resolve URIs before
opening, enabling cross-workspace go-to-definition and references

Added SFTP path-aware root URI resolution for remote workspace context

Replace selection menu code-actions button with full LSP actions menu
(definition, declaration, implementation, type-definition, references,
rename, code-actions) with single-item auto-execution
@gat0sy
gat0sy force-pushed the feat/lsp-ui-integration branch from 2b6f880 to 32b9957 Compare August 10, 2026 05:19
Comment thread src/cm/lsp/transport.ts
Comment on lines +235 to +239
const inWorkspace =
!allowedRoots.length ||
allowedRoots.some(
(root) => uri === root || uri.startsWith(`${root}/`),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 security Workspace boundary remains bypassable

When an LSP client has no workspace root, every edit URI passes this check; rooted clients also accept unnormalized URIs that lexically begin with the root. The handler then opens the URI and applies the server-provided edits, allowing an accessible file outside the active workspace to be modified.

How this was verified: The accepted URI was traced from the permissive or lexical boundary check through workspace.displayFile to applyTextEdits.

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.

3 participants