702f588155
Binary detects it's not on PATH, copies itself to the right location (%LOCALAPPDATA%\tstudio\ on Windows, /usr/local/bin on macOS/Linux), and adds to user PATH. Landing page install commands now download + login in one step. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
201 lines
13 KiB
Handlebars
201 lines
13 KiB
Handlebars
{{template "base/head" .}}
|
|
<div role="main" aria-label="{{if .IsSigned}}{{ctx.Locale.Tr "dashboard"}}{{else}}Tinqs Studio{{end}}" class="page-content home">
|
|
{{if .IsSigned}}
|
|
{{/* Signed in: show dashboard */}}
|
|
{{template "user/dashboard/navbar" .}}
|
|
<div class="ui container flex-container">
|
|
<div class="flex-container-main">
|
|
{{template "base/alert" .}}
|
|
{{/* CLI Install Banner — dismissible */}}
|
|
<div id="cli-banner" class="ui info message" style="background: linear-gradient(135deg, #1a1510 0%, #14131a 100%); border: 1px solid #c9935a33; border-radius: 8px; padding: 24px; margin-bottom: 24px; position: relative;">
|
|
<button id="cli-banner-dismiss" style="position: absolute; top: 12px; right: 12px; background: none; border: none; color: #9e9890; cursor: pointer; font-size: 18px;">×</button>
|
|
<div style="display: flex; align-items: center; gap: 16px; flex-wrap: wrap;">
|
|
<div style="flex: 1; min-width: 280px;">
|
|
<h3 style="color: #e0b87a; margin: 0 0 8px 0; font-size: 1.1rem; font-weight: 600;">Install Tinqs Studio CLI</h3>
|
|
<p style="color: #9e9890; margin: 0 0 12px 0; font-size: 0.9rem;">One command to connect your machine to the platform.</p>
|
|
<div id="cli-install-cmd" style="background: #0a0a0f; border: 1px solid #1e1c24; border-radius: 6px; padding: 12px 16px; font-family: 'SF Mono', 'Fira Code', monospace; font-size: 0.85rem; color: #e8e4df; display: flex; align-items: center; justify-content: space-between; gap: 12px;">
|
|
<code id="cli-cmd-text"></code>
|
|
<button onclick="navigator.clipboard.writeText(document.getElementById('cli-cmd-text').textContent)" style="background: #c9935a; color: #0a0a0f; border: none; border-radius: 4px; padding: 4px 12px; font-size: 0.8rem; font-weight: 600; cursor: pointer; white-space: nowrap;">Copy</button>
|
|
</div>
|
|
<p style="color: #837d76; margin: 8px 0 0 0; font-size: 0.8rem;">Then run: <code style="color: #e0b87a;">tstudio login</code></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
(function() {
|
|
// Dismiss banner
|
|
var dismissed = localStorage.getItem('cli-banner-dismissed');
|
|
var banner = document.getElementById('cli-banner');
|
|
if (dismissed) { banner.style.display = 'none'; }
|
|
document.getElementById('cli-banner-dismiss').addEventListener('click', function() {
|
|
banner.style.display = 'none';
|
|
localStorage.setItem('cli-banner-dismissed', '1');
|
|
});
|
|
// OS detection
|
|
var ua = navigator.userAgent.toLowerCase();
|
|
var cmd = document.getElementById('cli-cmd-text');
|
|
if (ua.indexOf('win') !== -1) {
|
|
cmd.textContent = 'irm https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-windows-amd64.exe -OutFile tstudio.exe; .\\tstudio.exe login';
|
|
} else if (ua.indexOf('mac') !== -1) {
|
|
cmd.textContent = 'curl -fsSL https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-darwin-arm64 -o tstudio && chmod +x tstudio && ./tstudio login';
|
|
} else {
|
|
cmd.textContent = 'curl -fsSL https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-linux-amd64 -o tstudio && chmod +x tstudio && ./tstudio login';
|
|
}
|
|
})();
|
|
</script>
|
|
{{template "user/heatmap" .}}
|
|
{{if .Page.Paginater.TotalPages}}
|
|
{{template "user/dashboard/feeds" .}}
|
|
{{else}}
|
|
{{template "user/dashboard/guide" .}}
|
|
{{end}}
|
|
</div>
|
|
{{template "user/dashboard/repolist" .}}
|
|
</div>
|
|
{{else}}
|
|
{{/* Not signed in: landing page */}}
|
|
<style>
|
|
.tinqs-hero { max-width: 900px; margin: 0 auto; padding: 120px 24px 80px; text-align: center; }
|
|
.tinqs-hero h1 { font-size: 3.2rem; font-weight: 300; color: var(--color-text); line-height: 1.15; margin-bottom: 16px; }
|
|
.tinqs-hero h1 span { color: #c9935a; }
|
|
.tinqs-hero .subtitle { font-size: 1.15rem; color: var(--color-text-light); max-width: 600px; margin: 0 auto 40px; line-height: 1.7; }
|
|
.tinqs-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; max-width: 900px; margin: 0 auto 60px; padding: 0 24px; }
|
|
.tinqs-card { background: var(--color-box-body); border: 1px solid var(--color-secondary); border-radius: 8px; padding: 28px; text-align: left; }
|
|
.tinqs-card h3 { color: #c9935a; font-size: 1.1rem; margin-bottom: 8px; }
|
|
.tinqs-card p { color: var(--color-text-light); font-size: 0.9rem; line-height: 1.6; }
|
|
.tinqs-cli { max-width: 700px; margin: 0 auto 60px; padding: 0 24px; }
|
|
.tinqs-cli-box { background: linear-gradient(135deg, #1a1510 0%, #14131a 100%); border: 1px solid #c9935a33; border-radius: 12px; padding: 40px; text-align: center; }
|
|
.tinqs-cli-box h2 { font-size: 1.6rem; font-weight: 400; color: var(--color-text); margin-bottom: 6px; }
|
|
.tinqs-cli-box h2 span { color: #c9935a; font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; font-weight: 600; }
|
|
.tinqs-cli-box .cli-subtitle { color: var(--color-text-light); font-size: 0.95rem; margin-bottom: 24px; }
|
|
.tinqs-cli-install { background: #0a0a0f; border: 1px solid #1e1c24; border-radius: 8px; padding: 16px 20px; font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; font-size: 0.9rem; color: #e8e4df; display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; }
|
|
.tinqs-cli-install code { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
.tinqs-cli-install .copy-btn { background: #c9935a; color: #0a0a0f; border: none; border-radius: 4px; padding: 6px 16px; font-size: 0.8rem; font-weight: 600; cursor: pointer; white-space: nowrap; font-family: inherit; }
|
|
.tinqs-cli-install .copy-btn:hover { background: #e0b87a; }
|
|
.tinqs-cli-step { color: #837d76; font-size: 0.85rem; margin-bottom: 28px; }
|
|
.tinqs-cli-step code { color: #e0b87a; }
|
|
.tinqs-cli-downloads { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; }
|
|
.tinqs-cli-dl { display: inline-flex; align-items: center; gap: 6px; padding: 10px 20px; border: 1px solid #c9935a44; border-radius: 6px; color: #c9935a; text-decoration: none; font-size: 0.85rem; font-weight: 500; transition: border-color 0.15s, background 0.15s; }
|
|
.tinqs-cli-dl:hover { border-color: #c9935a; background: #c9935a11; }
|
|
.tinqs-cli-dl.primary { background: #c9935a; color: #0a0a0f; border-color: #c9935a; font-weight: 600; }
|
|
.tinqs-cli-dl.primary:hover { background: #e0b87a; }
|
|
.tinqs-cli-dl svg { width: 16px; height: 16px; fill: currentColor; }
|
|
.tinqs-cli-version { color: #5a564f; font-size: 0.75rem; margin-top: 16px; }
|
|
.tinqs-contact { max-width: 500px; margin: 0 auto; padding: 0 24px 80px; text-align: center; }
|
|
.tinqs-contact h2 { font-size: 1.8rem; font-weight: 300; margin-bottom: 8px; }
|
|
.tinqs-contact p { color: var(--color-text-light); margin-bottom: 24px; }
|
|
.tinqs-contact form { display: flex; flex-direction: column; gap: 12px; text-align: left; }
|
|
.tinqs-contact input, .tinqs-contact textarea { width: 100%; padding: 12px; border: 1px solid var(--color-secondary); border-radius: 6px; background: var(--color-box-body); color: var(--color-text); font-family: inherit; font-size: 0.95rem; }
|
|
.tinqs-contact textarea { min-height: 100px; resize: vertical; }
|
|
.tinqs-contact button { padding: 14px 32px; background: #c9935a; color: #0a0a0f; border: none; border-radius: 6px; font-weight: 600; font-size: 0.95rem; cursor: pointer; letter-spacing: 0.04em; }
|
|
.tinqs-contact button:hover { background: #e0b87a; }
|
|
.tinqs-contact .success { display: none; color: #c9935a; margin-top: 12px; }
|
|
.tinqs-signin { margin-top: 40px; }
|
|
.tinqs-signin a { color: #c9935a; font-weight: 500; }
|
|
@media (max-width: 700px) { .tinqs-cards { grid-template-columns: 1fr; } .tinqs-hero h1 { font-size: 2.2rem; } .tinqs-cli-downloads { flex-direction: column; align-items: center; } }
|
|
</style>
|
|
|
|
<div class="tinqs-hero">
|
|
<h1>Build games with <span>agents</span>, not prompts.</h1>
|
|
<p class="subtitle">Tinqs Studio is the platform for agentic game development. Specialized AI agents work alongside your team — handling art, code, design, and production — while you make the decisions that matter.</p>
|
|
</div>
|
|
|
|
<div class="tinqs-cards">
|
|
<div class="tinqs-card">
|
|
<h3>Storage + Git</h3>
|
|
<p>Host your game project with LFS, 3D asset preview in the browser, and CI/CD pipelines built for Godot and Unity.</p>
|
|
</div>
|
|
<div class="tinqs-card">
|
|
<h3>AI Asset Generation</h3>
|
|
<p>Generate concept art, sprites, textures, and 3D models. Extract source art from screenshots. All integrated into your repo.</p>
|
|
</div>
|
|
<div class="tinqs-card">
|
|
<h3>Agentic Pipeline</h3>
|
|
<p>Not one prompt. A team of agents — GDD, art, engine, audio, balance, ship — each with specialized skills, working on your game over weeks.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tinqs-cli">
|
|
<div class="tinqs-cli-box">
|
|
<h2>Install <span>tstudio</span></h2>
|
|
<p class="cli-subtitle">Connect your machine to the platform in one command.</p>
|
|
<div class="tinqs-cli-install">
|
|
<code id="cli-cmd-landing"></code>
|
|
<button class="copy-btn" onclick="navigator.clipboard.writeText(document.getElementById('cli-cmd-landing').textContent)">Copy</button>
|
|
</div>
|
|
<p class="tinqs-cli-step">Download → run it → it installs itself, logs you in, and sets up git. Done.</p>
|
|
<div class="tinqs-cli-downloads">
|
|
<a id="dl-primary" class="tinqs-cli-dl primary" href="#">
|
|
<svg viewBox="0 0 16 16"><path d="M8 12l-4-4h2.5V2h3v6H12L8 12zm-6 2h12v1.5H2V14z"/></svg>
|
|
<span id="dl-primary-label">Download</span>
|
|
</a>
|
|
<a class="tinqs-cli-dl" href="https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-windows-amd64.exe">
|
|
<svg viewBox="0 0 16 16"><path d="M0 2.5h7.2v6.9H0V2.5zm8 0H16v6.9H8V2.5zM0 10.2h7.2V16H0v-5.8zm8 0H16V16H8v-5.8z"/></svg>
|
|
Windows
|
|
</a>
|
|
<a class="tinqs-cli-dl" href="https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-darwin-arm64">
|
|
<svg viewBox="0 0 16 16"><path d="M12.2 5.4c-.1 0-1.6-.6-1.6-2.4 0-1.5 1.3-2.1 1.4-2.2-.8-1.1-2-1.3-2.4-1.3-1 0-2 .6-2.6.6-.6 0-1.5-.6-2.4-.6C3.1-.5 1.6.6.9 2.3c-1.4 2.5-.4 6.2 1 8.2.7 1 1.5 2.1 2.5 2 1-.1 1.4-.6 2.6-.6 1.2 0 1.5.6 2.6.6 1.1 0 1.8-1 2.5-2 .4-.6.8-1.2 1-1.6-2.1-.8-2.4-3.5-.5-4.5z"/></svg>
|
|
macOS
|
|
</a>
|
|
<a class="tinqs-cli-dl" href="https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest/tstudio-linux-amd64">
|
|
<svg viewBox="0 0 16 16"><path d="M5.4 3.8c0-.4.3-.8.8-.8s.8.3.8.8-.4.8-.8.8-.8-.3-.8-.8zm4.5 0c0-.4.3-.8.8-.8s.8.3.8.8-.4.8-.8.8-.8-.3-.8-.8zM3.2 8.8c-.2 0-.4.2-.4.4v2.4c0 .4.3.7.7.7s.7-.3.7-.7V9.2c0-.2-.2-.4-.4-.4h-.6zm9.6 0c-.2 0-.4.2-.4.4v2.4c0 .4.3.7.7.7s.7-.3.7-.7V9.2c0-.2-.2-.4-.4-.4h-.6zM4.4 8.4v4.3c0 .3.2.5.5.5h1v1.5c0 .4.3.7.7.7s.7-.3.7-.7v-1.5h1.4v1.5c0 .4.3.7.7.7s.7-.3.7-.7v-1.5h1c.3 0 .5-.2.5-.5V8.4H4.4zm7.2-2.6c0-2.2-1.6-4-3.6-4.4l.6-1.1c.1-.1 0-.3-.2-.3-.1 0-.2 0-.3.1L7.5 1c-.3-.1-.7-.1-1 0L5.9.1c-.1-.1-.3-.1-.3 0-.1.1-.1.2 0 .3l.6 1.1c-2 .4-3.6 2.2-3.6 4.4h9z"/></svg>
|
|
Linux
|
|
</a>
|
|
</div>
|
|
<p class="tinqs-cli-version">v0.3.0 · ~6 MB · no dependencies</p>
|
|
</div>
|
|
</div>
|
|
|
|
<script>
|
|
(function() {
|
|
var ua = navigator.userAgent.toLowerCase();
|
|
var cmd = document.getElementById('cli-cmd-landing');
|
|
var btn = document.getElementById('dl-primary');
|
|
var label = document.getElementById('dl-primary-label');
|
|
var s3 = 'https://tinqs-cli-releases.s3.eu-west-1.amazonaws.com/tstudio/latest';
|
|
if (ua.indexOf('win') !== -1) {
|
|
cmd.textContent = 'irm ' + s3 + '/tstudio-windows-amd64.exe -OutFile tstudio.exe; .\\tstudio.exe login';
|
|
btn.href = s3 + '/tstudio-windows-amd64.exe';
|
|
label.textContent = 'Download for Windows';
|
|
} else if (ua.indexOf('mac') !== -1) {
|
|
cmd.textContent = 'curl -fsSL ' + s3 + '/tstudio-darwin-arm64 -o tstudio && chmod +x tstudio && ./tstudio login';
|
|
btn.href = s3 + '/tstudio-darwin-arm64';
|
|
label.textContent = 'Download for macOS';
|
|
} else {
|
|
cmd.textContent = 'curl -fsSL ' + s3 + '/tstudio-linux-amd64 -o tstudio && chmod +x tstudio && ./tstudio login';
|
|
btn.href = s3 + '/tstudio-linux-amd64';
|
|
label.textContent = 'Download for Linux';
|
|
}
|
|
})();
|
|
</script>
|
|
|
|
<div style="max-width: 900px; margin: 0 auto 48px; padding: 0 24px; text-align: center;">
|
|
<p style="color: var(--color-text-light); font-size: 0.95rem; margin-bottom: 12px;">We build our own game on this platform.</p>
|
|
<a href="https://arikigame.com" style="display: inline-block; padding: 14px 28px; background: #1a1510; border: 1px solid #c9935a55; border-radius: 8px; color: #e0b87a; font-weight: 600; text-decoration: none; font-size: 1rem;">Ariki — Polynesian survival colony sim →</a>
|
|
</div>
|
|
|
|
<div class="tinqs-contact">
|
|
<h2>Get Early Access</h2>
|
|
<p>We are onboarding studios one at a time. Tell us about your project.</p>
|
|
<form id="contactForm">
|
|
<input type="text" name="name" placeholder="Your name" required>
|
|
<input type="email" name="email" placeholder="Email" required>
|
|
<input type="text" name="studio" placeholder="Studio name (optional)">
|
|
<textarea name="message" placeholder="Tell us about your game or project"></textarea>
|
|
<button type="submit">Request Access</button>
|
|
</form>
|
|
<p class="success" id="contactSuccess">Thanks! We'll be in touch.</p>
|
|
<div class="tinqs-signin">Already have an account? <a href="{{AppSubUrl}}/user/login">Sign in</a></div>
|
|
</div>
|
|
|
|
<script>
|
|
document.getElementById('contactForm').addEventListener('submit', function(e) {
|
|
e.preventDefault();
|
|
this.style.display = 'none';
|
|
document.getElementById('contactSuccess').style.display = 'block';
|
|
});
|
|
</script>
|
|
{{end}}
|
|
</div>
|
|
{{template "base/footer" .}}
|