Skip to content

Add GitLab snippet provider support - #681

Merged
hackjutsu merged 4 commits into
masterfrom
codex/issue-262-gitlab-support
Oct 27, 2026
Merged

hackjutsu merged 4 commits into
masterfrom
codex/issue-262-gitlab-support

Conversation

@hackjutsu

@hackjutsu hackjutsu commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

GitLab users cannot manage their snippets in Lepton without moving them to GitHub. This PR lets them organize, search, edit, and sync personal snippets on GitLab.com or self-managed GitLab using a personal access token. Account data stays separate, and login fields accommodate all eight supported languages.

OAuth and project snippets are outside scope. Closes #262, closes #545.

Related: #397 (GitLab support only; offline storage is outside scope), #375 (self-managed GitLab connectivity only; Lepton remains a desktop app).

Validation: Electron E2E passed against local GitLab CE 19.5.1, covering authentication, snippet operations, sync/search, rendering, restart, and recovery. All 356 unit tests, build, lint, and 128 login-layout cases passed. GitLab.com itself and customer-specific configurations remain unverified.

Screenshots: English/French login and live GitLab snippets

GitLab login

French GitLab login

GitLab snippets rendered in Lepton

}
async function textClick (selector, text) {
await until(() => evaluate(`[...document.querySelectorAll(${JSON.stringify(selector)})].some(e => e.innerText.trim() === ${JSON.stringify(text)})`), `visible control ${text}`)
const found = await evaluate(`(() => { const el = [...document.querySelectorAll(${JSON.stringify(selector)})].find(e => e.innerText.trim() === ${JSON.stringify(text)}); if (!el) return false; el.click(); return true })()`)
}
async function textClick (selector, text) {
await until(() => evaluate(`[...document.querySelectorAll(${JSON.stringify(selector)})].some(e => e.innerText.trim() === ${JSON.stringify(text)})`), `visible control ${text}`)
const found = await evaluate(`(() => { const el = [...document.querySelectorAll(${JSON.stringify(selector)})].find(e => e.innerText.trim() === ${JSON.stringify(text)}); if (!el) return false; el.click(); return true })()`)
await pause(100)
}
async function input (selector, value, index = 0) {
await evaluate(`(() => { const el = document.querySelectorAll(${JSON.stringify(selector)})[${index}]; Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value').set.call(el, ${JSON.stringify(value)}); el.dispatchEvent(new Event('input', { bubbles: true })); el.dispatchEvent(new Event('change', { bubbles: true })); })()`)
await pause(100)
}
async function input (selector, value, index = 0) {
await evaluate(`(() => { const el = document.querySelectorAll(${JSON.stringify(selector)})[${index}]; Object.getOwnPropertyDescriptor(HTMLInputElement.prototype, 'value').set.call(el, ${JSON.stringify(value)}); el.dispatchEvent(new Event('input', { bubbles: true })); el.dispatchEvent(new Event('change', { bubbles: true })); })()`)
@hackjutsu
hackjutsu marked this pull request as ready for review October 27, 2026 02:26
@hackjutsu
hackjutsu merged commit 8df67cc into master Oct 27, 2026
6 checks passed
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.

Gitlab support , is there any chance? Possibility of Supporting GitLab?

2 participants