feat: getting-started page with download links + agent paste block
Build tstudio CLI / build (push) Waiting to run
Build tinqs-git / build (push) Waiting to run

- Download grid for all platforms with direct S3 links
- Copy-paste prompt block for Cursor / Claude Code agents
- Covers: install, login, migrate remotes, verify
- Login: added --token flag for bootstrap/CI (skip browser flow)
- Page is public (no login required): /cli/getting-started

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-22 10:02:45 +01:00
parent 7164080fe5
commit db455f410a
2 changed files with 97 additions and 118 deletions
+7
View File
@@ -30,6 +30,7 @@ const (
func cmdLogin(args []string) {
fs := flag.NewFlagSet("login", flag.ExitOnError)
instance := fs.String("instance", DefaultInstance, "Tinqs Studio instance URL")
token := fs.String("token", "", "use an existing API token (skip browser flow)")
fs.Parse(args)
base := strings.TrimRight(*instance, "/")
@@ -38,6 +39,12 @@ func cmdLogin(args []string) {
existing, _ := loadConfig()
isFirstLogin := existing == nil
// Token-based login (bootstrap / CI / headless)
if *token != "" {
loginWithToken(base, *token, isFirstLogin)
return
}
// 1. Start local server on random port
listener, err := net.Listen("tcp", "127.0.0.1:0")
if err != nil {
+90 -118
View File
@@ -3,141 +3,113 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Getting Started — Tinqs Studio CLI</title>
<title>Getting Started — Tinqs Studio</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: -apple-system, 'SF Pro Text', system-ui, sans-serif;
background: #0a0a0f;
color: #e8e4df;
line-height: 1.6;
}
.container { max-width: 720px; margin: 0 auto; padding: 60px 24px 80px; }
h1 { font-size: 2.4rem; font-weight: 300; margin-bottom: 8px; }
h1 span { color: #c9935a; }
.subtitle { color: #9e9890; font-size: 1.1rem; margin-bottom: 48px; }
h2 {
color: #c9935a;
font-size: 1.2rem;
font-weight: 600;
margin: 40px 0 16px;
padding-bottom: 8px;
border-bottom: 1px solid #1e1c24;
}
h2 .step {
display: inline-block;
background: #c9935a;
color: #0a0a0f;
width: 28px;
height: 28px;
border-radius: 50%;
text-align: center;
line-height: 28px;
font-size: 0.85rem;
margin-right: 8px;
}
p { color: #b8b3ad; margin-bottom: 12px; }
code {
background: #14131a;
border: 1px solid #1e1c24;
border-radius: 4px;
padding: 2px 8px;
font-family: 'SF Mono', 'Fira Code', monospace;
font-size: 0.9em;
color: #e0b87a;
}
pre {
background: #14131a;
border: 1px solid #1e1c24;
border-radius: 8px;
padding: 16px 20px;
margin: 12px 0 20px;
overflow-x: auto;
font-family: 'SF Mono', 'Fira Code', monospace;
font-size: 0.85rem;
line-height: 1.7;
color: #e8e4df;
}
pre .comment { color: #6b6660; }
.card {
background: #14131a;
border: 1px solid #1e1c24;
border-radius: 8px;
padding: 20px 24px;
margin: 12px 0;
}
.card h3 { color: #e0b87a; font-size: 1rem; margin-bottom: 8px; }
.card p { color: #9e9890; margin-bottom: 0; }
.done {
margin-top: 48px;
padding: 24px;
background: linear-gradient(135deg, #1a1510 0%, #14131a 100%);
border: 1px solid #c9935a33;
border-radius: 8px;
text-align: center;
}
.done h3 { color: #c9935a; margin-bottom: 8px; }
.done p { color: #9e9890; }
a { color: #c9935a; text-decoration: none; }
a:hover { text-decoration: underline; }
.check { color: #4ade80; }
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,'SF Pro Text',system-ui,sans-serif;background:#0a0a0f;color:#e8e4df;line-height:1.6}
.container{max-width:720px;margin:0 auto;padding:60px 24px 80px}
h1{font-size:2.4rem;font-weight:300;margin-bottom:8px}
h1 span{color:#c9935a}
.subtitle{color:#9e9890;font-size:1.1rem;margin-bottom:48px}
h2{color:#c9935a;font-size:1.2rem;font-weight:600;margin:40px 0 16px;padding-bottom:8px;border-bottom:1px solid #1e1c24}
h2 .step{display:inline-block;background:#c9935a;color:#0a0a0f;width:28px;height:28px;border-radius:50%;text-align:center;line-height:28px;font-size:.85rem;margin-right:8px}
p{color:#b8b3ad;margin-bottom:12px}
code{background:#14131a;border:1px solid #1e1c24;border-radius:4px;padding:2px 8px;font-family:'SF Mono','Fira Code',monospace;font-size:.9em;color:#e0b87a}
pre{background:#14131a;border:1px solid #1e1c24;border-radius:8px;padding:16px 20px;margin:12px 0 20px;overflow-x:auto;font-family:'SF Mono','Fira Code',monospace;font-size:.85rem;line-height:1.7;color:#e8e4df;position:relative}
pre .comment{color:#6b6660}
.card{background:#14131a;border:1px solid #1e1c24;border-radius:8px;padding:20px 24px;margin:12px 0}
.card h3{color:#e0b87a;font-size:1rem;margin-bottom:8px}
.card p{color:#9e9890;margin-bottom:4px}
a{color:#c9935a;text-decoration:none}
a:hover{text-decoration:underline}
.check{color:#4ade80}
.copy-btn{position:absolute;top:8px;right:8px;background:#c9935a;color:#0a0a0f;border:none;border-radius:4px;padding:4px 10px;font-size:.75rem;font-weight:600;cursor:pointer}
.copy-btn:hover{background:#d4a46a}
.agent-block{background:#0f1117;border:2px solid #c9935a33;border-radius:8px;padding:24px;margin:16px 0}
.agent-block h3{color:#c9935a;margin-bottom:12px;font-size:1rem}
.agent-block pre{border-color:#c9935a33;margin-bottom:0}
.dl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:16px 0}
.dl-card{display:block;background:#14131a;border:1px solid #1e1c24;border-radius:8px;padding:16px;text-align:center;text-decoration:none;color:#e8e4df;transition:border-color .2s}
.dl-card:hover{border-color:#c9935a;text-decoration:none}
.dl-card .os{font-weight:600;font-size:1rem;margin-bottom:4px}
.dl-card .size{color:#6b6660;font-size:.8rem}
</style>
</head>
<body>
<div class="container">
<h1>Welcome to <span>Tinqs Studio</span></h1>
<p class="subtitle">Your machine is connected. Here's how to work with the platform.</p>
<h1>Get on <span>Tinqs Studio</span></h1>
<p class="subtitle">Download the CLI, log in, paste the setup prompt into your agent. Done.</p>
<h2><span class="step">1</span> What just happened</h2>
<p>When you ran <code>tstudio login</code>, the CLI:</p>
<div class="card">
<p><span class="check">&#10003;</span> Authenticated via your browser (OAuth2)</p>
<p><span class="check">&#10003;</span> Generated an SSH key and registered it with your account</p>
<p><span class="check">&#10003;</span> Configured git so push/pull works over both SSH and HTTPS</p>
<p><span class="check">&#10003;</span> Installed itself to your PATH</p>
<h2><span class="step">1</span> Download tstudio</h2>
<div class="dl-grid">
<a class="dl-card" href="https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-windows-amd64.exe">
<div class="os">Windows</div>
<div class="size">~6.5 MB</div>
</a>
<a class="dl-card" href="https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-darwin-arm64">
<div class="os">macOS (Apple Silicon)</div>
<div class="size">~6 MB</div>
</a>
<a class="dl-card" href="https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-darwin-amd64">
<div class="os">macOS (Intel)</div>
<div class="size">~6.5 MB</div>
</a>
<a class="dl-card" href="https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-linux-amd64">
<div class="os">Linux (x64)</div>
<div class="size">~6.5 MB</div>
</a>
</div>
<p>Both <code>git clone git@ssh.tinqs.com:tinqs/repo.git</code> and HTTPS clones work now.</p>
<p>Or one-liner in your terminal:</p>
<pre id="install-mac"><span class="comment"># macOS / Linux</span>
curl -fsSL https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-darwin-arm64 -o tstudio &amp;&amp; chmod +x tstudio &amp;&amp; ./tstudio login<button class="copy-btn" onclick="navigator.clipboard.writeText(this.parentElement.textContent.replace('Copy','').replace('# macOS / Linux\n','').trim())">Copy</button></pre>
<pre id="install-win"><span class="comment"># Windows (PowerShell)</span>
irm https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-windows-amd64.exe -OutFile tstudio.exe; .\tstudio.exe login<button class="copy-btn" onclick="navigator.clipboard.writeText('irm https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-windows-amd64.exe -OutFile tstudio.exe; .\\tstudio.exe login')">Copy</button></pre>
<p>The binary auto-installs to your PATH on first run.</p>
<h2><span class="step">2</span> Clone a project</h2>
<pre>tstudio clone tinqs/studio</pre>
<p>Or use regular git — credentials are already configured:</p>
<pre>git clone git@ssh.tinqs.com:tinqs/studio.git</pre>
<h2><span class="step">2</span> Log in</h2>
<p>Run <code>tstudio login</code>. Your browser opens, you authorize, and the CLI sets up everything automatically: SSH key, git credentials, HTTPS access.</p>
<h2><span class="step">3</span> Set up Cursor</h2>
<p>Cursor (and Claude Code, Windsurf, etc.) work automatically once your machine is connected. The agents use your machine's git credentials — no extra tokens needed.</p>
<h2><span class="step">3</span> Fix your git remotes</h2>
<p>All repos moved from <code>git.arikigame.com</code> to <code>tinqs.com</code>. Fix all remotes at once:</p>
<pre>tstudio migrate --dir ~/tinqs-ltd
<span class="comment"># Preview first: tstudio migrate --dir ~/tinqs-ltd --dry-run</span></pre>
<p><strong>For a new project in Cursor:</strong></p>
<pre><span class="comment"># Clone the repo</span>
tstudio clone tinqs/your-project
<span class="comment"># Open in Cursor</span>
cursor tinqs/your-project</pre>
<h2><span class="step">4</span> Paste into your agent</h2>
<p>Copy this and paste it into <strong>Cursor</strong> or <strong>Claude Code</strong>. The agent will verify your setup, fix remotes, and pull latest on everything.</p>
<p><strong>For an existing project:</strong> If you have repos from the old <code>git.arikigame.com</code>, fix the remotes first:</p>
<pre>tstudio migrate --dir ~/projects</pre>
<div class="agent-block">
<h3>Copy &amp; paste into Cursor or Claude Code</h3>
<pre id="agent-prompt">I just installed tstudio CLI for Tinqs Studio (tinqs.com). Help me complete setup:
<p><strong>Agent configuration:</strong> If the repo has a <code>.cursor/</code> directory, it contains agent rules that Cursor picks up automatically. The platform provides these for each project — you don't need to write your own.</p>
1. Run `tstudio doctor` — verify git, auth, SSH, connectivity all pass
2. Run `tstudio whoami` — confirm my identity
3. Run `tstudio repos` — list available repositories
4. Fix old remotes: `tstudio migrate --dir ~/tinqs-ltd --dry-run` to preview, then `tstudio migrate --dir ~/tinqs-ltd` to apply
5. In each repo under ~/tinqs-ltd, run `git pull` to get latest
6. Report what you found and fixed
<h2><span class="step">4</span> Verify everything works</h2>
Platform: tinqs.com | SSH: ssh.tinqs.com | Org: tinqs/
Old domain git.arikigame.com is retired. All remotes must point to tinqs.com.<button class="copy-btn" onclick="navigator.clipboard.writeText(document.getElementById('agent-prompt').innerText.replace('Copy','').trim())">Copy</button></pre>
</div>
<h2><span class="step">5</span> Verify</h2>
<pre>tstudio doctor</pre>
<p>This checks git, SSH, your auth token, and connectivity. All checks should pass.</p>
<p>All checks should pass. After that, <code>git push</code>, <code>git pull</code>, and <code>git clone</code> all work — both SSH and HTTPS.</p>
<h2><span class="step">5</span> Useful commands</h2>
<div class="card">
<h3>Day-to-day</h3>
<p><code>tstudio repos</code> — list your repositories</p>
<p><code>tstudio clone owner/repo</code> — clone with credentials</p>
<p><code>tstudio whoami</code> — show your identity</p>
</div>
<div class="card">
<h3>Management</h3>
<p><code>tstudio token create --name ci-bot</code> — create API tokens for agents</p>
<p><code>tstudio update</code> — update the CLI to latest version</p>
<p><code>tstudio migrate --dir path</code> — fix old remotes from arikigame.com</p>
<div class="card" style="margin-top:40px;border-color:#c9935a33;background:linear-gradient(135deg,#1a1510 0%,#14131a 100%)">
<h3 style="color:#c9935a">You're set</h3>
<p>Open your project in Cursor or VS Code. Git, agent access, and CI/CD all use the same auth. No extra tokens needed.</p>
</div>
<div class="done">
<h3>You're ready</h3>
<p>Clone a project, open it in your editor, and start building. The platform handles the rest.</p>
<div class="card">
<h3>Quick reference</h3>
<p><code>tstudio login</code> — authenticate via browser</p>
<p><code>tstudio clone tinqs/repo</code> — clone with credentials</p>
<p><code>tstudio repos</code> — list repositories</p>
<p><code>tstudio migrate --dir path</code> — fix old remotes</p>
<p><code>tstudio doctor</code> — health check</p>
<p><code>tstudio update</code> — update the CLI</p>
<p><code>tstudio token create --name bot</code> — tokens for CI/agents</p>
</div>
</div>
</body>