Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions app/Http/Controllers/LinuxController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?php

namespace App\Http\Controllers;

use App\Services\Content\SiteFacts;
use App\Services\Releases\PlatformCatalog;
use App\Support\Content\ContentRepository;
use Illuminate\Support\Facades\App;
use Inertia\Inertia;
use Inertia\Response;

class LinuxController extends Controller
{
public function __invoke(ContentRepository $content, PlatformCatalog $platforms, SiteFacts $facts): Response
{
$engines = $platforms->find('linux')['linuxEngines'] ?? [];

return Inertia::render('Linux', [
'content' => $content->page('linux', App::getLocale()),
'engines' => $platforms->isAvailable('linux') && is_array($engines) ? $facts->engineLinks(array_values(array_filter($engines, 'is_string'))) : [],
'links' => $facts->links(),
'organizationProfiles' => $facts->organizationProfiles(),
]);
}
}
1 change: 1 addition & 0 deletions app/Http/Controllers/LlmsTxtController.php
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class LlmsTxtController extends Controller
'landing.teams',
'landing.download',
'landing.ios',
'landing.linux',
'landing.integrations.index',
'landing.faq',
'landing.security',
Expand Down
25 changes: 25 additions & 0 deletions app/Services/Content/SiteFacts.php
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,31 @@ public function iosEngines(array $pickerOrder): array
return ['picker' => $picker, 'syncedOnly' => $syncedOnly];
}

/**
* @param list<string> $ids
* @return list<array{id: string, name: string, href: string|null}>
*/
public function engineLinks(array $ids): array
{
$byId = [];

foreach ($this->engines() as $engine) {
if (is_string($engine['id'] ?? null)) {
$byId[$engine['id']] = $engine;
}
}

$links = [];

foreach ($ids as $id) {
if (($byId[$id]['state'] ?? null) === 'published') {
$links[] = $this->engineLink($byId[$id], $byId);
}
}

return $links;
}

/**
* @return list<string>
*/
Expand Down
8 changes: 7 additions & 1 deletion app/Services/Releases/PlatformCatalog.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ public function isReleased(string $id): bool
return ($this->find($id)['status'] ?? null) === 'released';
}

/** A beta has installable packages even though it is not a stable release. */
public function isAvailable(string $id): bool
{
return in_array($this->find($id)['status'] ?? null, ['released', 'beta'], true);
}

/**
* The ids of the platforms with nothing to install, in data order.
*
Expand All @@ -97,7 +103,7 @@ public function unreleased(): array
$ids = [];

foreach ($this->all() as $platform) {
if (($platform['status'] ?? null) !== 'released' && is_string($platform['id'] ?? null)) {
if (! in_array($platform['status'] ?? null, ['released', 'beta'], true) && is_string($platform['id'] ?? null)) {
$ids[] = $platform['id'];
}
}
Expand Down
3 changes: 2 additions & 1 deletion app/Support/Seo/StaticPages.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
use App\Support\Pricing\Campaign;

/**
* The one-off pages: home, download, iOS, pricing, teams, FAQ, about, security, sponsors, the dated sale and the blog index.
* The one-off pages: home, download, iOS, Linux, pricing, teams, FAQ, about, security, sponsors, the dated sale and the blog index.
*
* Each renders in a locale when `resources/data/content/{locale}/{page}.json`
* exists, and is indexable there unless that file sets `seo.indexable` to
Expand All @@ -27,6 +27,7 @@ final class StaticPages implements PageFamily
'landing.home' => 'home',
'landing.download' => 'download',
'landing.ios' => 'ios',
'landing.linux' => 'linux',
'landing.pricing' => 'pricing',
'landing.teams' => 'teams',
'landing.faq' => 'faq',
Expand Down
5 changes: 5 additions & 0 deletions resources/data/content/de/download.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,10 @@
"body": "Jede Version mit ihren Hinweisen und Disk-Images findest du auf GitHub Releases. Das Änderungsprotokoll listet die Änderungen jeder Version auf.",
"releases": "Alle Versionen auf GitHub",
"changelog": "Änderungsprotokoll (Englisch)"
},
"linux": {
"title": "TablePro für Linux",
"body": "Eine Linux-Beta mit SQL-Editor und Datentabelle.",
"link": "Linux-Installationsanleitung lesen"
}
}
4 changes: 2 additions & 2 deletions resources/data/content/de/faq.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@
},
{
"id": "windows-linux",
"question": "Gibt es eine Version für Windows oder Linux?",
"question": "Gibt es eine Linux-Version?",
"answer": [
"Nein. Es gibt keine Windows-Version. Ein Linux-Prototyp existiert, aber es gibt nichts zum Installieren und keinen Erscheinungstermin."
"Die Linux-App ist als Beta verfügbar. Pakete und Anleitungen findest du auf der <download>Downloadseite</download>."
]
},
{
Expand Down
5 changes: 3 additions & 2 deletions resources/data/content/de/home.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"title": "Ein nativer Datenbankclient."
},
"hero": {
"title": "Ein nativer Datenbankclient.",
"title": "Ein nativer Datenbankclient für {devices}.",
"subtitle": "Führe Abfragen aus, durchsuche und bearbeite Daten in {featuredEngines} <more>und weiteren Systemen</more>.",
"native": "Native Oberflächen statt Electron oder Java-Laufzeitumgebung.",
"macCaption": "{requirement} · {architectures}",
Expand Down Expand Up @@ -97,7 +97,8 @@
"cardTitle": "TablePro für {devices}",
"mac": "Die Desktop-App mit separaten Builds für {architectures}. Mit SQL-Editor, Schemawerkzeugen, KI-Assistent und MCP-Server.",
"ios": "Führe Abfragen aus und arbeite mit unterstützten Tabellen auf {devices}. Eine separate kostenlose App mit SSH-Tunneln und optionaler Face-ID-Sperre.",
"sync": "iCloud Sync teilt Verbindungen, Gruppen und Tags zwischen Apple-Geräten. Standardmäßig aus; auf dem Mac ist {tier} erforderlich."
"sync": "iCloud Sync teilt Verbindungen, Gruppen und Tags zwischen Apple-Geräten. Standardmäßig aus; auf dem Mac ist {tier} erforderlich.",
"linux": "Eine Linux-Beta mit SQL-Editor und Datentabelle."
},
"switch": {
"title": "Deine Verbindungen übernehmen",
Expand Down
31 changes: 31 additions & 0 deletions resources/data/content/de/linux.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"seo": {
"title": "TablePro für Linux",
"description": "Eine Linux-Beta mit SQL-Editor und Datentabelle."
},
"hero": {
"title": "TablePro für Linux",
"lead": "Eine Linux-Beta mit SQL-Editor und Datentabelle."
},
"install": {
"title": "Beta installieren",
"label": "Befehle für {system}",
"lead": "Pakete für {architectures}. Aktiviere das stabile und das Beta-Repository, um Updates über apt oder dnf zu erhalten.",
"stable": {
"title": "Stabile Versionen",
"body": "Aktiviere nur das stabile Repository, wenn du nur stabile Versionen möchtest. Beta-Tags veröffentlichen nur in den Beta-Repositories; stabile Tags nur in den stabilen."
},
"releases": {
"title": "Pakete auf GitHub",
"body": "Lade .deb-, .rpm- und .flatpak-Dateien von <releases>GitHub Releases</releases> herunter. Installiere die nächste Datei zum Aktualisieren."
},
"guide": {
"label": "Linux-Installationsanleitung lesen",
"path": "/linux/install"
}
},
"databases": {
"title": "Datenbanken",
"lead": "Diese Treiber sind in der Linux-App enthalten."
}
}
4 changes: 4 additions & 0 deletions resources/data/content/de/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@
"lost-key": {
"question": "Wo ist mein Lizenzschlüssel?",
"answer": "Du brauchst keinen mehr: Melde dich mit deiner Kauf-E-Mail an. Versionen vor den TablePro-Konten nehmen den Schlüssel aus dieser E-Mail und laufen {graceDays} Tage offline."
},
"linux": {
"question": "Funktionieren die kostenpflichtigen Funktionen unter Linux?",
"answer": "Die kostenpflichtigen Funktionen in der Tabelle oben gibt es vorerst nur auf dem Mac, spätere Versionen bringen sie auf Linux. Eine Lizenz gilt für alle Plattformen."
}
}
},
Expand Down
5 changes: 5 additions & 0 deletions resources/data/content/en/download.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,10 @@
"body": "Every release, with its notes and disk images, is on GitHub Releases. The changelog lists what changed in each version.",
"releases": "All releases on GitHub",
"changelog": "Changelog"
},
"linux": {
"title": "TablePro for Linux",
"body": "A Linux beta with a SQL editor and data grid.",
"link": "Read the Linux install guide"
}
}
4 changes: 2 additions & 2 deletions resources/data/content/en/faq.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@
},
{
"id": "windows-linux",
"question": "Is there a version for Windows or Linux?",
"question": "Is there a Linux version?",
"answer": [
"No. There is no Windows version. A Linux prototype exists, but there is nothing to install and no release date."
"The Linux app is in beta. See the <download>download page</download> for packages and installation instructions."
]
},
{
Expand Down
5 changes: 3 additions & 2 deletions resources/data/content/en/home.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"title": "A native database client."
},
"hero": {
"title": "A native database client.",
"title": "A native database client for {devices}.",
"subtitle": "Run queries, browse and edit data in {featuredEngines} <more>and more</more>.",
"native": "Built with native interfaces, not Electron or a Java runtime.",
"macCaption": "{requirement} · {architectures}",
Expand Down Expand Up @@ -97,7 +97,8 @@
"cardTitle": "TablePro for {devices}",
"mac": "The desktop app, with separate builds for {architectures}. Includes the SQL editor, schema tools, AI assistant and MCP server.",
"ios": "Run queries and work with supported tables on {devices}. A separate, free app with SSH tunnels and an optional Face ID lock.",
"sync": "iCloud Sync shares connections, groups and tags across Apple devices. It is off by default and requires {tier} on the Mac."
"sync": "iCloud Sync shares connections, groups and tags across Apple devices. It is off by default and requires {tier} on the Mac.",
"linux": "A Linux beta with a SQL editor and data grid."
},
"switch": {
"title": "Bring your connections",
Expand Down
31 changes: 31 additions & 0 deletions resources/data/content/en/linux.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"seo": {
"title": "TablePro for Linux",
"description": "A Linux beta with a SQL editor and data grid."
},
"hero": {
"title": "TablePro for Linux",
"lead": "A Linux beta with a SQL editor and data grid."
},
"install": {
"title": "Install the beta",
"label": "Commands for {system}",
"lead": "Packages for {architectures}. Enable both the stable and beta repositories to receive updates through apt or dnf.",
"stable": {
"title": "Stable releases",
"body": "For stable releases only, enable the stable repository. Beta tags publish only to the beta repositories; stable tags publish only to the stable ones."
},
"releases": {
"title": "Packages on GitHub",
"body": "Get .deb, .rpm and .flatpak files from <releases>GitHub Releases</releases>. Install the next file to update."
},
"guide": {
"label": "Read the Linux install guide",
"path": "/linux/install"
}
},
"databases": {
"title": "Databases",
"lead": "These drivers are included in the Linux app."
}
}
4 changes: 4 additions & 0 deletions resources/data/content/en/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@
"lost-key": {
"question": "Where is my license key?",
"answer": "You no longer need one: sign in with your purchase email. Versions before TablePro accounts take the key from that email and work {graceDays} days offline."
},
"linux": {
"question": "Do paid features work on Linux?",
"answer": "The paid features in the table above are Mac only for now and come to Linux in later releases. One license covers every platform."
}
}
},
Expand Down
5 changes: 5 additions & 0 deletions resources/data/content/es/download.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,10 @@
"body": "Todas las versiones, con sus notas e imágenes de disco, están en GitHub Releases. El historial de cambios enumera las novedades de cada versión.",
"releases": "Todas las versiones en GitHub",
"changelog": "Historial de cambios (inglés)"
},
"linux": {
"title": "TablePro para Linux",
"body": "Una beta para Linux con editor SQL y cuadrícula de datos.",
"link": "Leer la guía de instalación en Linux"
}
}
4 changes: 2 additions & 2 deletions resources/data/content/es/faq.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@
},
{
"id": "windows-linux",
"question": "¿Hay una versión para Windows o Linux?",
"question": "¿Hay una versión para Linux?",
"answer": [
"No. No hay versión para Windows. Existe un prototipo para Linux, pero no hay nada que instalar ni fecha de lanzamiento."
"La aplicación para Linux está en beta. Consulta los paquetes y las instrucciones en la <download>página de descargas</download>."
]
},
{
Expand Down
5 changes: 3 additions & 2 deletions resources/data/content/es/home.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"title": "Un cliente nativo de bases de datos."
},
"hero": {
"title": "Un cliente nativo de bases de datos.",
"title": "Un cliente de bases de datos nativo para {devices}.",
"subtitle": "Ejecuta consultas, explora y edita datos en {featuredEngines} <more>y más</more>.",
"native": "Interfaces nativas, sin Electron ni entorno Java.",
"macCaption": "{requirement} · {architectures}",
Expand Down Expand Up @@ -97,7 +97,8 @@
"cardTitle": "TablePro para {devices}",
"mac": "La app de escritorio, con versiones independientes para {architectures}. Incluye editor SQL, herramientas de esquemas, asistente de IA y servidor MCP.",
"ios": "Ejecuta consultas y trabaja con tablas compatibles en {devices}. Una app gratuita e independiente, con túneles SSH y bloqueo opcional con Face ID.",
"sync": "iCloud Sync comparte conexiones, grupos y etiquetas entre dispositivos Apple. Está desactivado por defecto y requiere {tier} en el Mac."
"sync": "iCloud Sync comparte conexiones, grupos y etiquetas entre dispositivos Apple. Está desactivado por defecto y requiere {tier} en el Mac.",
"linux": "Una beta para Linux con editor SQL y cuadrícula de datos."
},
"switch": {
"title": "Trae tus conexiones",
Expand Down
31 changes: 31 additions & 0 deletions resources/data/content/es/linux.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"seo": {
"title": "TablePro para Linux",
"description": "Una beta para Linux con editor SQL y cuadrícula de datos."
},
"hero": {
"title": "TablePro para Linux",
"lead": "Una beta para Linux con editor SQL y cuadrícula de datos."
},
"install": {
"title": "Instalar la beta",
"label": "Comandos para {system}",
"lead": "Paquetes para {architectures}. Activa los repositorios estable y beta para recibir actualizaciones mediante apt o dnf.",
"stable": {
"title": "Versiones estables",
"body": "Para recibir solo versiones estables, activa el repositorio estable. Las etiquetas beta publican solo en los repositorios beta; las estables, solo en los estables."
},
"releases": {
"title": "Paquetes en GitHub",
"body": "Descarga archivos .deb, .rpm y .flatpak de <releases>GitHub Releases</releases>. Instala el siguiente archivo para actualizar."
},
"guide": {
"label": "Leer la guía de instalación en Linux",
"path": "/linux/install"
}
},
"databases": {
"title": "Bases de datos",
"lead": "Estos controladores están incluidos en la aplicación para Linux."
}
}
4 changes: 4 additions & 0 deletions resources/data/content/es/pricing.json
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@
"lost-key": {
"question": "¿Dónde está mi clave de licencia?",
"answer": "Ya no la necesitas: inicia sesión con tu correo de compra. Las versiones anteriores a las cuentas de TablePro toman la clave de ese correo y funcionan {graceDays} días sin conexión."
},
"linux": {
"question": "¿Las funciones de pago funcionan en Linux?",
"answer": "Las funciones de pago de la tabla de arriba son solo para Mac por ahora y llegarán a Linux en próximas versiones. Una licencia sirve en todas las plataformas."
}
}
},
Expand Down
5 changes: 5 additions & 0 deletions resources/data/content/fr/download.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,5 +59,10 @@
"body": "Chaque version, avec ses notes et ses images disque, figure sur GitHub Releases. Le journal des modifications liste les changements de chaque version.",
"releases": "Toutes les versions sur GitHub",
"changelog": "Journal des modifications (anglais)"
},
"linux": {
"title": "TablePro pour Linux",
"body": "Une bêta Linux avec un éditeur SQL et une grille de données.",
"link": "Lire le guide d’installation Linux"
}
}
4 changes: 2 additions & 2 deletions resources/data/content/fr/faq.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@
},
{
"id": "windows-linux",
"question": "Existe-t-il une version Windows ou Linux ?",
"question": "Existe-t-il une version Linux ?",
"answer": [
"Non. Il n’y a aucune version Windows. Un prototype Linux existe, mais il n’y a rien à installer et aucune date de sortie."
"L’application Linux est en bêta. Consultez les paquets et les instructions sur la <download>page de téléchargement</download>."
]
},
{
Expand Down
Loading