20678 Commits

Author SHA1 Message Date
ozan ab3bc142c4 ci: retrigger — test tinqs/ci with wget fallback
Deploy Proxy / deploy (push) Has started running
2026-05-22 18:55:42 +01:00
ozan c176bbb2dd ci: test tinqs/ci action resolution
Deploy Proxy / deploy (push) Failing after 36s
2026-05-22 18:52:44 +01:00
ozan 6a3f0d6d68 ci: use purpose-specific runner labels instead of host
Build tstudio CLI / build (push) Failing after 3s
Build & Deploy Platform / build (push) Failing after 3s
Deploy arikigame.com / deploy (push) Failing after 4s
Deploy Bot Service / build (push) Failing after 3s
Build & Deploy Docs / deploy (push) Failing after 2s
Deploy Proxy / deploy (push) Failing after 1s
build.yml, deploy-bot → docker (needs Docker)
build-tstudio, deploy-proxy → go (needs Go)
deploy-docs → node (needs Node + pnpm)
deploy-arikigame, release → deploy (lightest, just AWS CLI)

Runner registered with all labels (tinqs-runner:5).
When custom images are ready, each label routes to its own image.
2026-05-22 18:07:43 +01:00
ozan 03e6fe8ba5 ci: wire all workflows to tinqs/ci composite actions
Build & Deploy Platform / build (push) Failing after 4s
Deploy arikigame.com / deploy (push) Failing after 3s
Deploy Bot Service / build (push) Failing after 2s
Build & Deploy Docs / deploy (push) Failing after 3s
Deploy Proxy / deploy (push) Failing after 2s
Build tstudio CLI / build (push) Has been cancelled
Replace raw git clone + apt-get install steps with:
- tinqs/ci/checkout@v1
- tinqs/ci/setup-go@v1
- tinqs/ci/setup-node@v1
- tinqs/ci/setup-aws@v1

No more per-job tool installation overhead.
2026-05-22 17:53:36 +01:00
ozan 98ade46193 ci: add tool install steps to all workflows
Build tstudio CLI / build (push) Failing after 1s
Build & Deploy Docs / deploy (push) Failing after 2s
Runner container is minimal — install Go, Node, AWS CLI, pnpm at
runtime. Docker-based platform build needs separate solution (Kaniko
or CodeBuild). CLI and docs pipelines should now pass.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 17:43:20 +01:00
ozan 92f5781345 feat: DeepSeek inference API — Go backend replacing Node.js bot proxy
Build & Deploy Platform / build (push) Failing after 23s
New modules/inference/ package:
- client.go: DeepSeek HTTP client with exponential backoff (429/503),
  streaming and non-streaming support, 5-min timeout
- types.go: OpenAI-compatible request/response types

New routers/api/v1/inference/:
- POST /api/v1/inference/chat/completions — streaming SSE + non-streaming
- GET /api/v1/inference/health — service status

Authenticated via Gitea token (reqToken middleware).
Config: app.ini [inference] DEEPSEEK_API_KEY or env var.
Full project compiles clean.

First step migrating bot.arikigame.com from Next.js to Go platform.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 17:37:45 +01:00
ozan 018760920f ci: replace actions/checkout + setup-go + setup-node with raw commands
Build tstudio CLI / build (push) Failing after 21s
Deploy arikigame.com / deploy (push) Failing after 13s
Deploy Bot Service / build (push) Failing after 11s
Build & Deploy Docs / deploy (push) Failing after 9s
Deploy Proxy / deploy (push) Failing after 9s
Build & Deploy Platform / build (push) Has been cancelled
All workflows now use raw git clone + shell commands instead of
actions/* steps. No Node.js dependency for checkout, works on any
Linux runner without Docker-in-Docker.

This is temporary until we build our own Tinqs Actions (checkout,
setup-go, setup-node) that work natively in our runner environment.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 17:32:30 +01:00
ozan dfe7a46171 docs: restructure Docusaurus — storage guide, agents intro, new sidebar
Build & Deploy Docs / deploy (push) Has been cancelled
- docs/index.md: rewritten as product overview with service table,
  quick start, and architecture section
- docs/tinqs/storage.md: game storage guide — LFS, 3D preview, plans,
  migration from GitHub/GitLab
- docs/tinqs/agents.md: agentic pipeline intro — OAuth2 agent accounts,
  API endpoints, Cursor/Claude Code setup, roadmap
- sidebars.js: renamed "Tinqs" → "Get Started", "Development" →
  "API & Development", added descriptions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 17:28:42 +01:00
ozan e38c135000 feat: serve Docusaurus docs at /docs, kill docs.tinqs.com subdomain
Build & Deploy Platform / build (push) Failing after 3s
Build & Deploy Docs / deploy (push) Failing after 5s
- routers/web/tinqs_pages.go: TinqsDocsHandler serves Docusaurus build
  output from custom/public/docs/ with SPA fallback for client-side routing
- routers/web/web.go: /docs and /docs/* routes
- docs/docusaurus.config.js: url → tinqs.com, baseUrl → /docs/,
  added Blog + Wiki navbar links, fixed logo path
- deploy-docs.yml: rsync to custom/public/docs/ instead of S3 bucket
- templates: docs_placeholder.tmpl, Docs link in navbar

URL map: tinqs.com/docs (SEO), tinqs.com/blog (SEO),
tinqs.com/*/wiki (Gitea built-in, internal). One domain, zero subdomains.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 17:21:51 +01:00
ozan 4f94ed6752 ci: add concurrency groups — new push cancels previous run per workflow
Build & Deploy Platform / build (push) Failing after 4s
Deploy arikigame.com / deploy (push) Failing after 3s
Deploy Bot Service / build (push) Failing after 4s
Build & Deploy Docs / deploy (push) Failing after 7s
Deploy Proxy / deploy (push) Failing after 6s
Build tstudio CLI / build (push) Has been cancelled
All workflows now have:
  concurrency:
    group: <workflow>-${{ github.ref }}
    cancel-in-progress: true

Prevents job queue clog when pushing rapidly to the same branch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 17:14:45 +01:00
ozan 25374c0971 feat: platform chrome — blog route, navbar wiki+blog links, Tinqs branding
Build & Deploy Platform / build (push) Failing after 3s
- routers/web/tinqs_pages.go: /blog and /blog/{slug} serve static HTML
  from custom/public/blog/ (zero Gitea core changes)
- templates/base/head_navbar.tmpl: Wiki + Blog nav links for signed-in
  and signed-out users; help link → Gitea wiki; version tag → Tinqs Studio
- templates/base/footer_content.tmpl: "Tinqs Studio" replaces dead
  git.arikigame.com link
- templates/tinqs/blog_placeholder.tmpl: fallback when blog not deployed

Gitea core (wiki, repos, git, LFS, issues, PRs, actions) untouched.
Only new files + navbar/footer chrome modified.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 16:59:01 +01:00
ozan 5b1eee06bd feat: bundle act_runner in Gitea Docker image (same-box like Lightsail)
Build & Deploy Platform / build (push) Failing after 3s
Runner binary built alongside Gitea in the same Docker image.
Entrypoint starts runner daemon in background if /data/gitea/runner/.runner
exists (registered). Same architecture as the Lightsail setup — one box,
both services.

Runner source: runner/ in monorepo (forked from gitea.com/gitea/act_runner).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 16:51:17 +01:00
ozan 3b75d81043 docs: runner operations guide — registration, DB debug, ECS exec
Build & Deploy Platform / build (push) Failing after 3s
Complete guide for managing runners on tinqs.com:
- Build, register, run from any machine
- DB access via ECS Exec (requires SSM plugin + IAM policy)
- Common issues and fixes (migration, token, connectivity)
- Future: Fargate runner deployment plan

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 16:41:21 +01:00
ozan 152ec1e913 docs: add tstudio CLI install as first item in Installation section
Build & Deploy Docs / deploy (push) Failing after 4s
Shows at /installation/install-tstudio-cli — first in sidebar.
Register page kept at /tinqs/register too.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 14:45:28 +01:00
ozan 8ac7c17da9 docs: detailed install guide v0.5.0 — step by step Windows/macOS
Build & Deploy Docs / deploy (push) Failing after 5s
Step-by-step for non-technical users. Download links, version numbers,
expected output, security note for agents that flag it.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 14:39:39 +01:00
ozan 2270d91fc5 docs: add registration page, expand Cursor/DeepSeek V4 guide, sidebar
Build & Deploy Docs / deploy (push) Failing after 5s
- register.md: account creation, CLI download, login flow
- cursor-setup.md: full DeepSeek V4 proxy guide, multi-editor support,
  Claude Code section, troubleshooting
- sidebars.js: Tinqs section first in nav, renamed landing to "Tinqs Studio"

Public docs for clients and team at docs.tinqs.com

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 14:25:28 +01:00
ozan e4adcb0757 feat: server auto-creates Cursor PAT on tstudio OAuth2 login
Build & Deploy Platform / build (push) Failing after 3s
Build tstudio CLI / build (push) Has been cancelled
Server-side internal flow — no public API change:
- On OAuth2 authorization_code exchange for tstudio-cli app, server
  creates a "cursor" PAT with all scopes via direct DB access
- PAT returned as cursor_token field in the token response
- CLI reads it and displays Cursor/DeepSeek setup instructions
- Only created on first login (skipped if "cursor" PAT already exists)
- Token shown once — user must save it

Keeps reqBasicOrRevProxyAuth on public /users/{username}/tokens endpoint.
No token escalation risk — PAT creation is server-internal only.

Also: Bearer auth fix for OAuth2 JWT tokens in CLI API client.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 12:09:33 +01:00
ozan 81e4f81a91 feat: tstudio login shows version, opens token page for Cursor setup
Build tstudio CLI / build (push) Has been cancelled
- Removed auto PAT creation (Gitea blocks token-from-token)
- Login now opens token creation page on first login
- Shows Cursor/DeepSeek setup instructions inline
- Prints tstudio version in completion message
- Bearer auth fix for OAuth2 JWT tokens

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 11:57:21 +01:00
ozan d76c6178d2 feat: tstudio login auto-creates Cursor token + fix OAuth2 Bearer auth
Build tstudio CLI / build (push) Failing after 3s
Login flow now:
1. Browser OAuth2 → JWT access token
2. SSH key gen + git credentials
3. Auto-creates a PAT named cursor-<hostname> for Cursor/DeepSeek
4. Displays the PAT with Cursor setup instructions (shown once)

Fixed: API client now sends Bearer prefix for OAuth2 JWT tokens
(was sending "token" prefix which Gitea rejects for JWTs).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 11:53:32 +01:00
ozan 69814994ab docs: add Cursor + DeepSeek setup guide
Build & Deploy Docs / deploy (push) Failing after 4s
How to connect Cursor to DeepSeek via the platform proxy.
Token creation, base URL config, agent mode, troubleshooting.
For team and future clients.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 11:50:04 +01:00
ozan 4a2d18d267 feat: tstudio OAuth2 login working — correct Client ID 4d4918c9
Build tstudio CLI / build (push) Failing after 47s
Build & Deploy Platform / build (push) Failing after 5s
Browser OAuth2 PKCE login confirmed working on tinqs.com.
Removed --token fallback — browser login only.
Updated built-in app ID to match registered app.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 11:46:07 +01:00
ozan f43f0f3d3c chore: remove dead cmd/tea CLI, update old repo references
Build & Deploy Platform / build (push) Failing after 3s
Deploy Bot Service / build (push) Failing after 3s
- Delete cmd/tea/ entirely — replaced by cmd/tstudio/
- Remove cmd/tea/** from build.yml paths-ignore (no longer exists)
- Update package.json repo URL from git.arikigame.com/tinqs-ltd/bot to tinqs.com/tinqs/studio
- Update gateway.ts and pipelines route.ts repo lists to current tinqs.com repos
- Remove deleted repos: tinqs-ltd/bot, tinqs-ltd/website, tinqs-ltd/devops, tinqs-ltd/isleborn

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 11:14:15 +01:00
ozan bccc231a35 feat: rebrand tea CLI to tstudio + update Tinqs logos
- cmd/tea: rename references from tea/tinqs to tstudio
- public/assets/img: replace logos and favicons with Tinqs Studio branding

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 11:08:52 +01:00
ozan f41d8a5aee ci: add bot + proxy deploy pipelines
Deploy Bot Service / build (push) Failing after 2s
Deploy Proxy / deploy (push) Failing after 2s
- deploy-bot.yml: Docker build → ECR push → ECS deploy on services/bot/** changes
- deploy-proxy.yml: Go build → scp → systemctl restart on services/proxy/** changes
- Bot was previously deployed manually — now automated alongside platform pipeline

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 11:05:35 +01:00
ozan 6905d317c9 docs: rebrand Docusaurus — Tinqs Studio, dark mode, new navbar/footer
Build & Deploy Docs / deploy (push) Failing after 3s
- Title: Tinqs Studio (was Gitea Documentation)
- URL: docs.tinqs.com
- Default dark mode
- Navbar: Docs, API, CLI, Runner, Platform, Sign In → tinqs.com
- Footer: Tinqs links, CLI downloads, API
- Removed: Gitea Cloud banner, locale dropdown, Enterprise link,
  Gitea social links, old community footer

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 10:41:30 +01:00
ozan 56ff99bf24 docs: landing page with setup steps + CLI downloads
Build & Deploy Docs / deploy (push) Failing after 4s
Replaces Gitea's "What is Gitea?" with Tinqs Studio getting started:
- Download table for all 5 platforms with direct S3 links
- One-liner install commands (macOS/Linux/Windows)
- Login, clone, migrate, verify steps
- Agent paste block for Cursor / Claude Code
- Links to all documentation sections

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 10:29:21 +01:00
ozan 93bd29fede ci: deploy-docs → S3 docs.tinqs.com + CloudFront invalidation
Build & Deploy Docs / deploy (push) Failing after 4s
S3 bucket: docs.tinqs.com (static website hosting)
CloudFront: E14Z6XLZHNNAM6 (*.tinqs.com ACM cert)
Route 53: docs.tinqs.com CNAME → d1ofpjs3qvea2q.cloudfront.net

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 10:24:06 +01:00
ozan 920b21f377 feat: add Docusaurus docs site to monorepo (forked from gitea/docs)
Build & Deploy Docs / deploy (push) Failing after 1m35s
Full copy of Gitea's official docs (Docusaurus + Redocusaurus for API).
All original content preserved — Tinqs docs added alongside under docs/tinqs/.

Added:
- docs/docs/tinqs/getting-started.md — CLI install, login, migrate, agent setup
- docs/docs/tinqs/cli.md — full tstudio CLI reference
- deploy-docs.yml — builds Docusaurus, deploys to S3 for docs.tinqs.com

Branding handoff written for branding agent to rebrand config, logos, colors.
Shares monorepo version — one repo, one version.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 10:19:50 +01:00
ozan b70d781a67 ci: build.yml → Docker build + ECR push + deploy staging & prod
Build & Deploy Platform / build (push) Failing after 2s
Push to main (platform code) now:
1. Builds Docker image via Dockerfile.rootless
2. Pushes to ECR (tinqs-git:tag + :latest)
3. Triggers ECS deploy on both tinqs-studio-staging and tinqs-git-prod
4. Archives binary to S3 as backup

Staging and prod deploy from the same image on every push.
release.yml remains for manual rollback/specific version deploys.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 10:11:41 +01:00
ozan 9cef01d5b4 ci: split pipelines — platform, CLI, docs deploy independently
Deploy Docs & Pages / deploy (push) Failing after 22s
Build tstudio CLI / build (push) Failing after 10m37s
Build Platform / build (push) Failing after 14m13s
- build.yml: only triggers on platform code changes (models, routers,
  templates, modules, services). Ignores cmd/tstudio, web/, bot, proxy.
- build-tstudio.yml: fixed version detection (uses git describe, not
  removed TSTUDIO_VERSION). Only triggers on cmd/tstudio/** changes.
- deploy-docs.yml: NEW — deploys docs/pages to S3 when templates or
  SETUP.md change. Independent from platform build.
- deploy-arikigame.yml: unchanged, already path-filtered.

Each pipeline runs independently. No more queueing CLI builds behind
full platform rebuilds.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 10:06:50 +01:00
ozan db455f410a feat: getting-started page with download links + agent paste block
Build tinqs-git / build (push) Failing after 11m13s
Build tstudio CLI / build (push) Failing after 11m36s
- 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>
2026-05-22 10:02:45 +01:00
ozan 7164080fe5 feat: tstudio v0.4.0 — browser OAuth2 login, getting-started page
Build tstudio CLI / build (push) Failing after 4m36s
Build tinqs-git / build (push) Failing after 16m13s
Login rewritten to use OAuth2 PKCE browser flow:
- Opens browser → user authenticates on tinqs.com → callback to localhost
- No passwords in terminal, same UX as gcloud/gh auth login
- PKCE (RFC 7636) with S256 code challenge
- Stores refresh_token for silent token renewal
- Logout clears git credentials

Server-side:
- Registered tstudio-cli as built-in OAuth2 app (models/auth/oauth2.go)
- Added to default applications list (modules/setting/oauth2.go)
- New /cli/getting-started route + public onboarding page
- Teaches Cursor setup, agent workflow, git operations

First login redirects to getting-started page automatically.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 09:40:36 +01:00
ozan 0488cdda72 feat: migrate bot service from arikigame.com to tinqs.com domain
Build tinqs-git / build (push) Failing after 16m16s
- Proxy: add bot.tinqs.com route alongside legacy bot.arikigame.com
- Bot: add /api/v1/ai/* rewrite alias for inference proxy (Cursor endpoint)
- Auth: update Gitea URL defaults from git.arikigame.com to tinqs.com
- UI: update all landing page, team-tool, callback URLs to tinqs.com
- Libs: update gitea.ts, design.ts, docs-search.ts, handoffs.ts,
  mcp-handler.ts, image-gen-context.ts to tinqs.com API base
- Config: add tinqs-ai provider entry in deeptinqs providers.json
- Tests: update smoke test default URL to bot.tinqs.com

All endpoints work on both domains during transition.
Old bot.arikigame.com stays in proxy routes for backwards compat.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 09:38:50 +01:00
ozan 0d574ac977 feat: tstudio uses monorepo GITEA_VERSION, auto-update check on startup
Build tstudio CLI / build (push) Failing after 4m59s
Build tinqs-git / build (push) Failing after 5m34s
- Removed separate TSTUDIO_VERSION — tstudio now shares GITEA_VERSION
  with the rest of the monorepo (one version for everything)
- Auto-update check runs on every command (max once/hour, 3s timeout)
  prints one-line notice if newer binary exists on S3
- Version injected via ldflags at build time (default "dev" for local builds)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 09:13:48 +01:00
ozan 702f588155 feat: tstudio auto-installs to PATH on first run
Build tinqs-git / build (push) Failing after 12m44s
Build tstudio CLI / build (push) Failing after 12m53s
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>
2026-05-22 09:05:47 +01:00
ozan 32e18937bc feat: tstudio CLI v0.3.0 — SSH key gen on login, origin migration, SETUP.md
Build tinqs-git / build (push) Failing after 13m1s
Build tstudio CLI / build (push) Failing after 13m1s
Login now does full machine setup in one command:
- Creates API token
- Generates ed25519 SSH key + registers it with Gitea
- Configures ~/.ssh/config for ssh.tinqs.com
- Sets up HTTPS credential helper + SSH→HTTPS rewrite

New commands:
- tstudio migrate: rewrites old git.arikigame.com remotes to tinqs.com
- SETUP.md: agent-executable setup guide for any machine

No more separate tokens for bot/cursor/agents. One login, everything works.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 08:56:22 +01:00
ozan 8a66c6a463 feat: tstudio CLI v0.2.0 — update, token, setup-git + CI pipeline
Build tinqs-git / build (push) Failing after 13m2s
Build tstudio CLI / build (push) Failing after 13m3s
New commands:
- tstudio update: self-updater from S3
- tstudio token create/list/revoke: API token management
- tstudio setup-git: configures git HTTPS credentials (auto-run on login)

Infrastructure:
- CI pipeline (.gitea/workflows/build-tstudio.yml) — builds all 5 platforms, uploads to S3
- Version bump 0.1.0 → 0.2.0
- Login now auto-configures git credential helper + SSH→HTTPS rewrite

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 08:41:36 +01:00
ozan 900d41835f feat: tstudio CLI v0.1.0 — login, repos, clone, doctor + welcome page
Build tinqs-git / build (push) Failing after 13m4s
New `tstudio` CLI binary (cmd/tstudio/) with subcommands:
- login: authenticate via username/password, create API token, open welcome page
- logout: revoke token and clear credentials
- whoami: show current user and auth status
- repos: list accessible repositories
- clone: authenticated HTTPS clone with credential storage
- doctor: check git, git-lfs, auth, and connectivity

Platform changes:
- Landing page: CLI download section with OS-detected install command,
  direct download buttons for Windows/macOS/Linux
- /cli/welcome: post-login success page (like gcloud auth_success)
  with next steps and resource links
- Makefile: tstudio, tstudio-all, tstudio-upload targets for
  cross-platform builds and S3 upload
- .claude/settings.json: full auto-allow permissions for Claude Code
- go.mod: add golang.org/x/term for hidden password input

Builds: tstudio-windows-amd64.exe, tstudio-darwin-arm64,
        tstudio-darwin-amd64, tstudio-linux-amd64, tstudio-linux-arm64

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 08:31:06 +01:00
ozan f906caadcd brand: replace Gitea cat logos with Tinqs vector mark
Build tinqs-git / build (push) Failing after 13m6s
SVG t + spark from tinqs/internal/design-system/brand. See DESIGN.md for canonical design system path.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 08:28:04 +01:00
ozan 7482278ae1 refactor: remove pre-Studio website; wire arikigame.com into monorepo
Deploy arikigame.com / deploy (push) Failing after 1m18s
Build tinqs-git / build (push) Failing after 14m23s
Delete web/landing (legacy tinqs-ltd/website Next.js). Add web/arikigame with static public site and deploy-arikigame.yml (S3 + CloudFront). Link Ariki from tinqs.com logged-out home. Fix build.yml to trigger on main.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 08:03:43 +01:00
ozan 4a9469cf65 feat: CLI install banner on dashboard + landing page in source
- Logged in: dashboard with dismissible CLI install banner (OS-detected command, copy button)
- Logged out: landing page with contact form
- Banner stored in localStorage, dismiss persists
- No more EFS template override needed
2026-05-22 07:07:05 +01:00
ozan 4e9c481545 docs: testing strategy handoff from ariki-game — 3-layer test pattern for agents
Autonomous agents must run tests before pushing. Pattern:
Layer 1 (unit): make test — pure logic, <1s
Layer 2 (integration): make test-sqlite — real DB, real handlers
Layer 3 (E2E): npx playwright test — browser tests

tinqs-git already has upstream Gitea test infra (better than ariki-game).
Gap: agents don't run them. This handoff fixes that.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-22 06:49:52 +01:00
ozan 579c45cabb brand: replace Gitea favicon with tinqs 't' icon, add tinqs wordmark logo 2026-05-22 05:10:54 +00:00
ozan a81a450e7e feat: monorepo consolidation — merge CLI, bot, admin, team-tool, website, docs, runner, proxy
Merged into tinqs/studio:
- cmd/tinqs-cli/    — tinqs-cli (Go binary, from bot/cli)
- cmd/tea/          — Gitea CLI tool (from tinqs/cli-tea)
- services/bot/     — Bot service (from tinqs-ltd/bot on git.arikigame.com)
- services/admin/   — Admin panel (from tinqs/admin)
- services/team-tool/ — Team Tool (from tinqs/team-tool)
- services/proxy/   — tinqs-proxy (from bot/proxy)
- web/landing/      — tinqs.com website (from tinqs/website)
- web/docs/         — Platform docs (from tinqs/docs)
- web/blog/         — Blog (placeholder)
- runner/           — Ephemeral CI runner (from tinqs/runner)

All source repos will be deleted after verification.
2026-05-22 04:55:50 +00:00
ozan 715f54e39d simplify: drop SWR cache, always upload fresh to S3
Always overwrites S3 on every preview request — no stale content.
Removed sync.Map cache and background goroutines.
Blob-by-SHA paths still skip upload if already exists (immutable).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 01:01:50 +01:00
ozan 01e862a238 test: add S3 image to announcement to verify images render in preview
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 00:50:04 +01:00
ozan 404a704d5e fix: Fullscreen button in header bar + full-width iframe
- Fullscreen button added to Preview/Source button group (not overlay)
- iframe breaks out of container: width:100vw with negative margins
- removed overlay expand icon — redundant with header button

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 00:37:31 +01:00
ozan 64e6b23492 docs: HTML preview feature announcement page
Test page for the S3-backed HTML preview. Demonstrates the feature
it describes — dark theme, Tinqs branding, inline CSS, no relative
image paths.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-21 00:32:35 +01:00
ozan 3b81d57414 fix: HTML preview iframe fills viewport + expand button
- height: calc(100vh - 220px) instead of fixed 600px — fills remaining
  viewport with no dead space at bottom
- expand button (screen-full icon) in top-right corner opens the S3
  presigned URL in a new tab for full-screen viewing
- security preserved: new tab opens S3 origin, not Gitea

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-20 23:50:47 +01:00
ozan a845b744b7 feat: HTML preview via S3 with SWR caching
HTML files now render in an iframe served from S3 (tinqs-git-preview
bucket) instead of Gitea's raw endpoint which forces text/plain.

SWR flow: first request uploads blob to S3 synchronously, subsequent
requests redirect to presigned S3 URL instantly. When the blob SHA
changes (new commit), the stale version is served immediately while
the new version uploads in the background.

Security: iframe uses sandbox="allow-scripts" only (no allow-same-origin).
S3 is a different origin from git.arikigame.com, so even if JS runs in
the iframe it cannot access Gitea session cookies or API tokens.

Config: [html_preview] section in app.ini, disabled by default.
Release pipeline auto-adds config on first deploy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-05-20 23:33:40 +01:00