1<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Log in or sign up · GLPub.dev</title><meta name="twitter:card" content="summary_large_image"><meta name="twitter:image" content="https://glpub.dev/_og/d/c_Default,title_Log+in+or+sign+up,p_Ii9sb2dpbiI,s_4qCqdYUFzqGUrr_D.png"><meta name="twitter:image:src" content="https://glpub.dev/_og/d/c_Default,title_Log+in+or+sign+up,p_Ii9sb2dpbiI,s_4qCqdYUFzqGUrr_D.png"><meta property="og:image" content="https://glpub.dev/_og/d/c_Default,title_Log+in+or+sign+up,p_Ii9sb2dpbiI,s_4qCqdYUFzqGUrr_D.png"><meta property="og:image:type" content="image/png"><meta property="og:image:width" content="1200"><meta name="twitter:image:width" content="1200"><meta property="og:image:height" content="600"><meta name="twitter:image:height" content="600"><style id="nuxt-ui-colors">@layer theme{:root,:host{--ui-color-primary-50:var(--color-indigo-50,oklch(96.2% .018 272.314));--ui-color-primary-100:var(--color-indigo-100,oklch(93% .034 272.788));--ui-color-primary-200:var(--color-indigo-200,oklch(87% .065 274.039));--ui-color-primary-300:var(--color-indigo-300,oklch(78.5% .115 274.713));--ui-color-primary-400:var(--color-indigo-400,oklch(67.3% .182 276.935));--ui-color-primary-500:var(--color-indigo-500,oklch(58.5% .233 277.117));--ui-color-primary-600:var(--color-indigo-600,oklch(51.1% .262 276.966));--ui-color-primary-700:var(--color-indigo-700,oklch(45.7% .24 277.023));--ui-color-primary-800:var(--color-indigo-800,oklch(39.8% .195 277.366));--ui-color-primary-900:var(--color-indigo-900,oklch(35.9% .144 278.697));--ui-color-primary-950:var(--color-indigo-950,oklch(25.7% .09 281.288));--ui-color-secondary-50:var(--color-blue-50,oklch(97% .014 254.604));--ui-color-secondary-100:var(--color-blue-100,oklch(93.2% .032 255.585));--ui-color-secondary-200:var(--color-blue-200,oklch(88.2% .059 254.128));--ui-color-secondary-300:var(--color-blue-300,oklch(80.9% .105 251.813));--ui-color-secondary-400:var(--color-blue-400,oklch(70.7% .165 254.624));--ui-color-secondary-500:var(--color-blue-500,oklch(62.3% .214 259.815));--ui-color-secondary-600:var(--color-blue-600,oklch(54.6% .245 262.881));--ui-color-secondary-700:var(--color-blue-700,oklch(48.8% .243 264.376));--ui-color-secondary-800:var(--color-blue-800,oklch(42.4% .199 265.638));--ui-color-secondary-900:var(--color-blue-900,oklch(37.9% .146 265.522));--ui-color-secondary-950:var(--color-blue-950,oklch(28.2% .091 267.935));--ui-color-success-50:var(--color-green-50,oklch(98.2% .018 155.826));--ui-color-success-100:var(--color-green-100,oklch(96.2% .044 156.743));--ui-color-success-200:var(--color-green-200,oklch(92.5% .084 155.995));--ui-color-success-300:var(--color-green-300,oklch(87.1% .15 154.449));--ui-color-success-400:var(--color-green-400,oklch(79.2% .209 151.711));--ui-color-success-500:var(--color-green-500,oklch(72.3% .219 149.579));--ui-color-success-600:var(--color-green-600,oklch(62.7% .194 149.214));--ui-color-success-700:var(--color-green-700,oklch(52.7% .154 150.069));--ui-color-success-800:var(--color-green-800,oklch(44.8% .119 151.328));--ui-color-success-900:var(--color-green-900,oklch(39.3% .095 152.535));--ui-color-success-950:var(--color-green-950,oklch(26.6% .065 152.934));--ui-color-info-50:var(--color-blue-50,oklch(97% .014 254.604));--ui-color-info-100:var(--color-blue-100,oklch(93.2% .032 255.585));--ui-color-info-200:var(--color-blue-200,oklch(88.2% .059 254.128));--ui-color-info-300:var(--color-blue-300,oklch(80.9% .105 251.813));--ui-color-info-400:var(--color-blue-400,oklch(70.7% .165 254.624));--ui-color-info-500:var(--color-blue-500,oklch(62.3% .214 259.815));--ui-color-info-600:var(--color-blue-600,oklch(54.6% .245 262.881));--ui-color-info-700:var(--color-blue-700,oklch(48.8% .243 264.376));--ui-color-info-800:var(--color-blue-800,oklch(42.4% .199 265.638));--ui-color-info-900:var(--color-blue-900,oklch(37.9% .146 265.522));--ui-color-info-950:var(--color-blue-950,oklch(28.2% .091 267.935));--ui-color-warning-50:var(--color-yellow-50,oklch(98.7% .026 102.212));--ui-color-warning-100:var(--color-yellow-100,oklch(97.3% .071 103.193));--ui-color-warning-200:var(--color-yellow-200,oklch(94.5% .129 101.54));--ui-color-warning-300:var(--color-yellow-300,oklch(90.5% .182 98.111));--ui-color-warning-400:var(--color-yellow-400,oklch(85.2% .199 91.936));--ui-color-warning-500:var(--color-yellow-500,oklch(79.5% .184 86.047));--ui-color-warning-600:var(--color-yellow-600,oklch(68.1% .162 75.834));--ui-color-warning-700:var(--color-yellow-700,oklch(55.4% .135 66.442));--ui-color-warning-800:var(--color-yellow-800,oklch(47.6% .114 61.907));--ui-color-warning-900:var(--color-yellow-900,oklch(42.1% .095 57.708));--ui-color-warning-950:var(--color-yellow-950,oklch(28.6% .066 53.813));--ui-color-error-50:var(--color-red-50,oklch(97.1% .013 17.38));--ui-color-error-100:var(--color-red-100,oklch(93.6% .032 17.717));--ui-color-error-200:var(--color-red-200,oklch(88.5% .062 18.334));--ui-color-error-300:var(--color-red-300,oklch(80.8% .114 19.571));--ui-color-error-400:var(--color-red-400,oklch(70.4% .191 22.216));--ui-color-error-500:var(--color-red-500,oklch(63.7% .237 25.331));--ui-color-error-600:var(--color-red-600,oklch(57.7% .245 27.325));--ui-color-error-700:var(--color-red-700,oklch(50.5% .213 27.518));--ui-color-error-800:var(--color-red-800,oklch(44.4% .177 26.899));--ui-color-error-900:var(--color-red-900,oklch(39.6% .141 25.723));--ui-color-error-950:var(--color-red-950,oklch(25.8% .092 26.042));--ui-color-neutral-50:var(--color-zinc-50,oklch(98.5% 0 0));--ui-color-neutral-100:var(--color-zinc-100,oklch(96.7% .001 286.375));--ui-color-neutral-200:var(--color-zinc-200,oklch(92% .004 286.32));--ui-color-neutral-300:var(--color-zinc-300,oklch(87.1% .006 286.286));--ui-color-neutral-400:var(--color-zinc-400,oklch(70.5% .015 286.067));--ui-color-neutral-500:var(--color-zinc-500,oklch(55.2% .016 285.938));--ui-color-neutral-600:var(--color-zinc-600,oklch(44.2% .017 285.786));--ui-color-neutral-700:var(--color-zinc-700,oklch(37% .013 285.805));--ui-color-neutral-800:var(--color-zinc-800,oklch(27.4% .006 286.033));--ui-color-neutral-900:var(--color-zinc-900,oklch(21% .006 285.885));--ui-color-neutral-950:var(--color-zinc-950,oklch(14.1% .005 285.823))}:root,:host,.light{--ui-primary:var(--ui-color-primary-500);--ui-secondary:var(--ui-color-secondary-500);--ui-success:var(--ui-color-success-500);--ui-info:var(--ui-color-info-500);--ui-warning:var(--ui-color-warning-500);--ui-error:var(--ui-color-error-500)}.dark{--ui-primary:var(--ui-color-primary-400);--ui-secondary:var(--ui-color-secondary-400);--ui-success:var(--ui-color-success-400);--ui-info:var(--ui-color-info-400);--ui-warning:var(--ui-color-warning-400);--ui-error:var(--ui-color-error-400)}}</style><link rel="stylesheet" href="/_nuxt/entry.By4cMCyA.css" crossorigin><style>@layer base{:where(.i-tabler\:brand-github){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 19c-4.3 1.4-4.3-2.5-6-3m12 5v-3.5c0-1 .1-1.4-.5-2c2.8-.3 5.5-1.4 5.5-6a4.6 4.6 0 0 0-1.3-3.2a4.2 4.2 0 0 0-.1-3.2s-1.1-.3-3.5 1.3a12.3 12.3 0 0 0-6.2 0C6.5 2.8 5.4 3.1 5.4 3.1a4.2 4.2 0 0 0-.1 3.2A4.6 4.6 0 0 0 4 9.5c0 4.6 2.7 5.7 5.5 6c-.6.6-.6 1.2-.5 2V21'/%3E%3C/svg%3E")}:where(.i-tabler\:brand-gitlab){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m21 14l-9 7l-9-7L6 3l3 7h6l3-7z'/%3E%3C/svg%3E")}:where(.i-tabler\:brand-google){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M20.945 11a9 9 0 1 1-3.284-5.997l-2.655 2.392A5.5 5.5 0 1 0 17.125 14H13v-3z'/%3E%3C/svg%3E")}:where(.i-tabler\:info-circle){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m9-3h.01'/%3E%3Cpath d='M11 12h1v4h1'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-tabler\:login){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M15 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h7a2 2 0 0 0 2-2v-2'/%3E%3Cpath d='M21 12H8l3-3m0 6l-3-3'/%3E%3C/g%3E%3C/svg%3E")}:where(.i-tabler\:message-circle){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m3 20l1.3-3.9C1.976 12.663 2.874 8.228 6.4 5.726c3.526-2.501 8.59-2.296 11.845.48c3.255 2.777 3.695 7.266 1.029 10.501S11.659 20.922 7.7 19z'/%3E%3C/svg%3E")}:where(.i-tabler\:world){display:inline-block;width:1em;height:1em;background-color:currentColor;-webkit-mask-image:var(--svg);mask-image:var(--svg);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cg fill='none' stroke='black' stroke-linecap='round' stroke-linejoin='round' stroke-width='2'%3E%3Cpath d='M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0m.6-3h16.8M3.6 15h16.8'/%3E%3Cpath d='M11.5 3a17 17 0 0 0 0 18m1-18a17 17 0 0 1 0 18'/%3E%3C/g%3E%3C/svg%3E")}}</style><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DkswmBtB.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DHFFGjP0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/B5ST4a8p.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/h2wBmg4Z.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C3cSInqp.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/bxXMhKYv.js">
1<link rel="modulepreload" as="script" crossorigin href="/_nuxt/D-pctMGk.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BzpplEd5.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/jkdW_prO.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bq_MKERr.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CpjMXsoS.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BRh4XL4Y.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/vxrnJNYu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/W2ttp2uh.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/bgKKBkfV.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CxOOO34e.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/LHpspKZ3.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C-p88UXu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BiDTzb5m.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BETzbD87.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CCpB16aX.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/iik6CYzq.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/Bkz2ndTE.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D4k11_F0.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/BeUO8WOu.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/CLDO55cf.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DCH7dje9.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/DIEw1fpM.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/D9VDziZD.js"><link rel="modulepreload" as="script" crossorigin href="/_nuxt/C6_k-Rp-.js">
1<script type="module" src="/_nuxt/DkswmBtB.js" crossorigin></script>
1<link rel="icon" type="image/x-icon" href="/favicon.ico"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><meta name="description" content="Private Dart package registry integrated with GitLab. Publish, share and consume packages with token-based or GitLab CI authentication."><meta property="og:site_name" content="GLPub.dev"><meta property="og:type" content="website"><meta property="og:title" data-infer="" content="Log in or sign up · GLPub.dev"><meta property="og:description" data-infer="" content="Private Dart package registry integrated with GitLab. Publish, share and consume packages with token-based or GitLab CI authentication."><link rel="canonical" href="https://glpub.dev/login"><meta property="og:url" content="https://glpub.dev/login">
1<script id="unhead:payload" type="application/json">{"titleTemplate":"%s · GLPub.dev"}</script>
1<script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script>
1</head><body><div id="__nuxt" class="isolate"><!--[--><!--[--><!--[--><!--[--><!--[--><div></div><main class="flex flex-col min-h-screen"><!--[--><div class="flex flex-col flex-1"><header class="sticky top-0 z-50 border-b border-default bg-elevated/25"><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 h-16 flex items-center justify-between"><!--[--><a href="/" class="flex items-center gap-3 hover:opacity-80 transition-opacity"><img src="/logo.png" alt="GLPub.dev" class="size-8"><span class="text-xl font-semibold">GLPub.dev</span></a><div><a href="/login" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-primary bg-primary/10 hover:bg-primary/15 active:bg-primary/15 focus:outline-none focus-visible:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10"><!--[--><!--[--><span class="iconify i-tabler:login size-5" aria-hidden="true" style=""></span><!--]--><!--[--> Log In<!--]--><!--[--><!----><!--]--><!--]--></a></div><!--]--></div></header><main class="flex flex-col flex-1"><!--[--><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 flex items-center justify-center flex-1 py-12"><!--[-->
1<div class="w-full max-w-md space-y-8"><div class="text-center space-y-3"><h1 class="text-3xl font-bold tracking-tight">Log in or sign up</h1><p class="text-base text-muted">No account yet? Just sign in with GitLab, GitHub, or Google â your account will be created automatically.</p></div><div data-slot="root" class="rounded-xl overflow-hidden ring ring-default bg-elevated dark:bg-[oklab(0.269_0_0_/_0.5)] divide-y divide-default"><!----><div data-slot="body" class="p-4 sm:p-6"><!--[--><div class="space-y-6"><div class="space-y-3"><div class="flex items-center justify-center gap-2 mb-3"><h3 class="text-base font-semibold">Quick connect</h3><!--[--><!--[--><button type="button" data-state="closed" data-grace-area-trigger padded="false" aria-label="About sign-in providers" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 text-xs gap-1.5 hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 text-muted hover:text-highlighted transition-colors"><!--[--><!--[--><span class="iconify i-tabler:info-circle shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!----><!--v-if--><!--]--><!--]--></div><div class="relative"><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-3 py-2 text-sm gap-2 w-full justify-center text-primary ring ring-inset ring-primary/25 bg-primary/10 hover:bg-primary/15 active:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary"><!--[--><!--[--><span class="iconify i-tabler:brand-gitlab size-5" aria-hidden="true" style=""></span><!--]--><!--[--> Continue with GitLab.com<!--]--><!--[--><!----><!--]--><!--]--></button><!----></div><div class="relative"><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-3 py-2 text-sm gap-2 w-full justify-center ring ring-inset ring-accented text-default bg-default hover:bg-elevated active:bg-elevated disabled:bg-default aria-disabled:bg-default focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted"><!--[--><!--[--><span class="iconify i-tabler:brand-google size-5" aria-hidden="true" style=""></span><!--]--><!--[--> Continue with Google<!--]--><!--[--><!----><!--]--><!--]--></button><!----></div><div class="relative"><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-3 py-2 text-sm gap-2 w-full justify-center ring ring-inset ring-accented text-default bg-default hover:bg-elevated active:bg-elevated disabled:bg-default aria-disabled:bg-default focus:outline-none focus-visible:ring-2 focus-visible:ring-inverted"><!--[--><!--[--><span class="iconify i-tabler:brand-github size-5" aria-hidden="true" style=""></span><!--]--><!--[--> Continue with GitHub<!--]--><!--[--><!----><!--]--><!--]--></button><!----></div></div><div class="flex items-center gap-3"><div class="flex-1 border-t border-default"></div><span class="text-xs uppercase text-muted">Or</span><div class="flex-1 border-t border-default"></div></div><div class="space-y-3"><div class="flex items-center justify-center gap-2 mb-3"><h3 class="text-base font-semibold">Self-Hosted Instance</h3><!--[--><!--[--><button type="button" data-state="closed" data-grace-area-trigger padded="false" aria-label="Self-Hosted GitLab Instance" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 text-xs gap-1.5 hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 text-muted hover:text-highlighted transition-colors"><!--[--><!--[--><span class="iconify i-tabler:info-circle shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!----><!--v-if--><!--]--><!--]--><!----></div><div data-orientation="vertical" data-slot="root" class="text-sm"><div data-slot="wrapper" class=""><div data-slot="labelWrapper" class="flex content-center items-center justify-between gap-1"><label for="v-0-1-0" data-slot="label" class="block font-medium text-default after:content-['*'] after:ms-0.5 after:text-error"><!--[--><!--[-->Your GitLab instance URL<!--]--><!--]--></label><span id="v-0-1-0-hint" data-slot="hint" class="text-muted"><!--[--><!--[--><!--[--><button type="button" data-state="closed" data-grace-area-trigger padded="false" aria-label="Instance URL Format" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 text-xs gap-1.5 hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent p-1.5 text-muted hover:text-highlighted transition-colors"><!--[--><!--[--><span class="iconify i-tabler:info-circle shrink-0 size-4" aria-hidden="true" style="" data-slot="leadingIcon"></span><!--]--><!--[--><!----><!--]--><!--[--><!----><!--]--><!--]--></button><!----><!--v-if--><!--]--><!--]--><!--]--></span></div><!----></div><div class="relative mt-1"><!--[--><div data-slot="root" class="relative inline-flex items-center w-full"><input id="v-0-1-0" type="text" value name="instanceUrl" placeholder="gitlab.example.com" data-slot="base" class="w-full rounded-md border-0 appearance-none placeholder:text-dimmed focus:outline-none disabled:cursor-not-allowed disabled:opacity-75 transition-colors px-2.5 py-1.5 text-base/5 gap-1.5 text-highlighted bg-elevated ring ring-inset ring-accented focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary ps-9 md:text-sm" autocomplete="off" aria-invalid="false"><!--[--><!--]--><span data-slot="leading" class="absolute inset-y-0 start-0 flex items-center ps-2.5"><!--[--><span class="iconify i-tabler:world size-5" aria-hidden="true" style=""></span><!--]--></span><!----></div><!--]--><!----></div></div><button type="button" disabled data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-3 py-2 text-sm gap-2 w-full justify-center text-primary ring ring-inset ring-primary/25 bg-primary/10 hover:bg-primary/15 active:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary"><!--[--><!--[--><span class="iconify i-tabler:login size-5" aria-hidden="true" style=""></span><!--]--><!--[--> Continue with custom instance<!--]--><!--[--><!----><!--]--><!--]--></button><div class="text-center pt-2"><p class="text-sm text-muted">First time using this service? <button type="button" padded="false" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-primary hover:text-primary/75 active:text-primary/75 disabled:text-primary aria-disabled:text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-primary"><!--[--><!--[--><!----><!--]--><!--[-->Register instance<!--]--><!--[--><!----><!--]--><!--]--></button></p></div></div><!----><!----></div><!--]--></div><!----></div></div><!--]--></div><!--]--></main><footer class="border-t border-default mt-auto"><div class="w-full max-w-(--ui-container) mx-auto px-4 sm:px-6 lg:px-8 py-6 flex flex-col gap-4 md:flex-row md:items-center md:justify-between"><!--[--><p class="text-muted text-sm text-center md:text-left"> © 2026 <a href="https://techsnap.eu" target="_blank" rel="noopener noreferrer" class="hover:text-highlighted transition-colors"> TechSnap e.U. </a></p><nav class="flex flex-wrap justify-center gap-x-5 gap-y-2 text-sm" aria-label="Documentation"><!--[--><a href="/documentation" class="text-muted hover:text-highlighted transition-colors py-1">Documentation</a><a href="/pricing" class="text-muted hover:text-highlighted transition-colors py-1">Pricing</a><a href="/imprint" class="text-muted hover:text-highlighted transition-colors py-1">Imprint</a><a href="/terms" class="text-muted hover:text-highlighted transition-colors py-1">Terms of Use</a><a href="/privacy" class="text-muted hover:text-highlighted transition-colors py-1">Privacy Policy</a>
1<!--]--><button type="button" class="text-muted hover:text-highlighted transition-colors py-1">Cookie settings</button></nav><div class="flex justify-center gap-1"><!--[--><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-xs gap-1.5 text-primary bg-primary/10 hover:bg-primary/15 active:bg-primary/15 focus:outline-none focus-visible:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10"><!--[--><!--[--><!----><!--]--><!--[--><span data-slot="label" class="truncate">EN</span><!--]--><!--[--><!----><!--]--><!--]--></button><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-xs gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent"><!--[--><!--[--><!----><!--]--><!--[--><span data-slot="label" class="truncate">DE</span><!--]--><!--[--><!----><!--]--><!--]--></button><!--]--></div><!--]--></div></footer></div><!--]--></main><div class="fixed bottom-4 inset-x-4 max-w-2xl mx-auto z-50"><div data-slot="root" class="rounded-xl overflow-hidden divide-y divide-default bg-elevated dark:bg-elevated ring ring-accented shadow-2xl"><!----><div data-slot="body" class="p-4 sm:p-6 space-y-4"><!--[--><div class="space-y-1"><p class="text-sm font-semibold text-highlighted">Cookies</p><p class="text-sm text-muted">We use optional cookies to enable non-essential features, and only set them if you accept. Cookies required to sign in and run the site stay on either way. <a href="/privacy" class="text-primary underline">Read our Privacy Policy</a></p></div><div class="flex flex-col sm:flex-row gap-2 sm:justify-end"><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-default hover:bg-elevated active:bg-elevated focus:outline-none focus-visible:bg-elevated hover:disabled:bg-transparent dark:hover:disabled:bg-transparent hover:aria-disabled:bg-transparent dark:hover:aria-disabled:bg-transparent"><!--[--><!--[--><!----><!--]--><!--[--><span data-slot="label" class="truncate">Decline</span><!--]--><!--[--><!----><!--]--><!--]--></button><button type="button" data-slot="base" class="rounded-md font-medium inline-flex items-center disabled:cursor-not-allowed aria-disabled:cursor-not-allowed disabled:opacity-75 aria-disabled:opacity-75 transition-colors px-2.5 py-1.5 text-sm gap-1.5 text-primary ring ring-inset ring-primary/25 bg-primary/10 hover:bg-primary/15 active:bg-primary/15 disabled:bg-primary/10 aria-disabled:bg-primary/10 focus:outline-none focus-visible:ring-2 focus-visible:ring-primary"><!--[--><!--[--><!----><!--]--><!--[--><span data-slot="label" class="truncate">Accept</span><!--]--><!--[--><!----><!--]--><!--]--></button></div><!--]--></div><!----></div></div><div class="fixed bottom-5 right-5 z-40 flex flex-col items-end gap-3"><!----><button type="button" aria-label="Live chat (needs cookie consent)" class="size-14 rounded-full bg-elevated text-muted ring ring-default shadow-lg flex items-center justify-center hover:text-default hover:bg-accented transition-colors"><span class="iconify i-tabler:message-circle size-6" aria-hidden="true" style=""></span></button></div><!--]--><!--]--><!--[--><!--]--><!--v-if--><!--]--><!--[--><!--]--><!--]--><!--]--></div><div id="teleports"></div>
1<script>window.__NUXT__={};window.__NUXT__.config={public:{defaultGitlabInstanceUrl:"https://gitlab.com",defaultGitlabInstanceClientId:"183e1346697fd3252446a4fb768bfc1def26898cd633898afb5aa36c96d43793",googleOauthClientId:"469825948513-upn9t8opl3n244hmhfii64omhb1t5dh2.apps.googleusercontent.com",githubAppClientId:"Iv23lif0uLnBf1dnJXxI",githubAppSlug:"glpub-dev",registryUrl:"https://glpub.dev",scripts:{crisp:{id:"dcd0a327-1634-4742-8e62-c17dbf07e249"}},"nuxt-scripts":{version:"",defaultScriptOptions:{trigger:"onNuxtReady"}},"nuxt-seo-utils-version":"8.3.1","seo-utils":{canonicalQueryWhitelist:["page","sort","filter","search","q","category","tag"],canonicalLowercase:true,tagPriority:"low",separator:"",titleSeparator:""},mdc:{components:{prose:true,map:{accordion:"ProseAccordion","accordion-item":"ProseAccordionItem",badge:"ProseBadge",callout:"ProseCallout",card:"ProseCard","card-group":"ProseCardGroup",caution:"ProseCaution","code-collapse":"ProseCodeCollapse","code-group":"ProseCodeGroup","code-icon":"ProseCodeIcon","code-preview":"ProseCodePreview","code-tree":"ProseCodeTree",collapsible:"ProseCollapsible",field:"ProseField","field-group":"ProseFieldGroup",icon:"ProseIcon",kbd:"ProseKbd",note:"ProseNote",prompt:"ProsePrompt",steps:"ProseSteps",tabs:"ProseTabs","tabs-item":"ProseTabsItem",tip:"ProseTip",warning:"ProseWarning"},customElements:[]},headings:{anchorLinks:{h1:false,h2:true,h3:true,h4:true,h5:false,h6:false}},highlight:{noApiRoute:true,theme:{light:"material-theme-lighter",default:"material-theme",dark:"material-theme-palenight"},highlighter:"shiki",shikiEngine:"oniguruma",langs:["js","jsx","json","ts","tsx","vue","css","html","bash","md","mdc","yaml"]}},i18n:{baseUrl:"",defaultLocale:"en",rootRedirect:"",redirectStatusCode:302,skipSettingLocaleOnNavigate:false,locales:[{code:"en",name:"English",language:""},{code:"de",name:"Deutsch",language:""}],detectBrowserLanguage:{alwaysRedirect:false,cookieCrossOrigin:false,cookieDomain:"",cookieKey:"i18n_redirected",cookieSecure:false,fallbackLocale:"",redirectOn:"root",useCookie:true},experimental:{localeDetector:"",typedPages:true,typedOptionsAndMessages:false,alternateLinkCanonicalQueries:true,devCache:false,cacheLifetime:"",stripMessagesPayload:false,preload:false,strictSeo:false,nitroContextDetection:true,httpCacheDuration:10,compactRoutes:false,prerenderMessages:false},domainLocales:{en:{domain:""},de:{domain:""}}},content:{wsUrl:""},"nuxt-og-image":{defaults:{emojis:"noto",extension:"png",width:1200,height:600,cacheMaxAgeSeconds:259200},hasServerRuntime:true}},app:{baseURL:"/",buildId:"96b69d4f-7728-45bd-a4e6-bcdeba2a3669",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script>
1<script type="application/json" data-nuxt-data="nuxt-app" data-ssr="true" id="__NUXT_DATA__">[["ShallowReactive",1],{"data":2,"state":48,"once":72,"_errors":73,"serverRendered":43,"path":75},["ShallowReactive",3],{"help-login-en":4},{"id":5,"title":6,"body":7,"description":11,"extension":14,"meta":15,"navigation":43,"path":44,"seo":45,"stem":46,"__hash__":47},"content/en/help/login.md","Login",{"type":8,"value":9,"toc":10},"minimark",[],{"title":11,"searchDepth":12,"depth":12,"links":13},"",2,[],"md",{"items":16},[17,22,26,30,34,38],{"key":18,"title":19,"category":20,"content":21},"gitlab-com-quick-connect","GitLab.com","authentication","Use this option if your projects are hosted on GitLab.com and you want to publish and consume packages from there.\n\nYour GitLab.com permissions will automatically control access to your packages.\n",{"key":23,"title":24,"category":20,"content":25},"github-quick-connect","GitHub","Use this option if your repositories are hosted on GitHub and you want to publish and consume packages tied to GitHub repos.\n\nSign-in only requests your identity (no repository access). When you later link a package to a repo, you'll install the GLPub GitHub App on the specific repos you choose â granular, per-repo permission rather than blanket access.\n",{"key":27,"title":28,"category":20,"content":29},"google-quick-connect","Google","Use this option if you don't have GitLab or GitHub repos to tie packages to. Google login is identity-only â packages registered under a Google account are always **standalone** and use internal API tokens for publish and consume.\n",{"key":31,"title":32,"category":20,"content":33},"custom-instance","Self-Hosted GitLab Instance","If your team uses a self-hosted GitLab instance, enter your instance URL here to connect.\n\nYour instance must be registered with GLPub.dev first. If you haven't registered yet, click the \"Register your instance\" link.\n",{"key":35,"title":36,"category":20,"content":37},"instance-url-format","Instance URL Format","Enter your GitLab instance URL in any of these formats:\n- https://gitlab.example.com\n- gitlab.example.com\n\nThe system will automatically add https:// if you don't include it.\n",{"key":39,"title":40,"category":41,"content":42},"unverified-instance","Unverified Instance","security","This instance hasn't been verified by GLPub.dev administrators yet. You can still use it, but be aware that verification ensures the instance meets our security standards.\n\nVerification typically happens within 24-48 hours of registration.\n",true,"/en/help/login",{"description":11},"en/help/login","aCfX74bA25-LKkX4Ls2owZsiOn5DAvRlGESu-eppKsA",["Reactive",49],{"$scolor-mode":50,"$si18n:cached-locale-configs":53,"$si18n:resolved-locale":11,"$snuxt-seo-ut
1ils:routeRules":58,"$sauth-state":59,"$stoasts":61,"$ssite-config":62},{"preference":51,"value":51,"unknown":43,"forced":52},"system",false,{"en":54,"de":56},{"fallbacks":55,"cacheable":43},[],{"fallbacks":57,"cacheable":43},[],{"head":-1,"seoMeta":-1},{"isAuthenticated":52,"user":60},null,[],{"_priority":63,"currentLocale":68,"defaultLocale":68,"env":69,"name":70,"url":71},{"env":64,"url":65,"name":66,"defaultLocale":67,"currentLocale":67},-15,-4,-3,-2,"en","production","GLPub.dev","https://glpub.dev/",["Set"],["ShallowReactive",74],{"help-login-en":-1},"/login"]</script>
1<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"b49d19a78a9146e48d011ac55b0be674","r":1,"spa":2}' crossorigin="anonymous"></script>
1 2</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.