Skip to content

Releases: KTStackAPP/KTStack

KTStack 0.3.6.3

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 31 Oct 04:16
a5fd145

Added

  • Sites: import your own certificate (full chain + private key) for a site. KTStack serves it on HTTPS and never re-mints, renews or deletes it. Re-import to update it. An alias or wildcard the certificate does not cover is refused.
  • Sites: a details button in the header shows the inspector, and widens a narrow window to fit it.
  • Sites and Settings: a warning when the TLD is HSTS-preloaded (.dev, .app and others). Browsers force HTTPS on these TLDs, so a site with HTTPS off won't load.

Fixed

  • An open sheet such as New Site no longer disappears when you switch to another app.

KTStack 0.3.6.2

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 25 Oct 03:53

Fixed

  • Shell integration: turning it on now downloads WP-CLI along with Composer, so wp works in a new terminal for imported WordPress sites too. Settings names any tool whose download did not finish.
  • Database: PostgreSQL connections default to TLS prefer. A TLS failure now says whether the server refused TLS or the handshake failed (for example a self-signed certificate) and which TLS setting to try.
  • Database: the DDL source sheet shows the CREATE TABLE and CREATE VIEW statement for PostgreSQL and SQLite tables.

Changed

  • Database: the workspace window responds faster. Object tabs keep their pane when you switch instead of rebuilding it, the data grid stays on screen while a table loads, and the ER diagram redraws only when the diagram changes.

KTStack 0.3.6.1

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 08 Oct 18:51

Fixed

  • Database: PostgreSQL timestamp, timestamptz, date, time, timetz, interval and numeric columns show their values instead of unreadable bytes. timestamptz shows in UTC (+00), and numeric keeps its scale (12.50).
  • Database: the row inspector is easier to read. Column names and types use stronger text colors, long type names stay on one line, and the inspector edge, header and field borders are darker.

KTStack 0.3.6

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 06 Oct 05:25

KTStack 0.3.6

Changed

  • Sites: a fixed-width list beside a wide site detail pane. Search and kind filters share one row above both, and search also matches a PHP version ("PHP 8.4"). The detail shows Domain, Security & Sharing, Runtime and Advanced cards in two columns, with environment variables, nginx directives and workers edited in their own sheets. Site Settings moved into the detail; grid view removed. The server control sits in the header and DNS status under the list.
  • Logs: newest line on top. Following keeps the view at the top as lines arrive, so opening a log no longer starts at the oldest line.
  • Switching dashboard tabs is faster: the sidebar no longer re-renders twice per switch, and a tab starts its polling and log tail after it first draws.
  • The Sites list scrolls without per-row work: installed editors are read once and refreshed when the app becomes active, and site frameworks publish in one update.

Fixed

  • Dark mode: Mail, Dumps, Services, Database backups, modals, form fields and segmented tabs no longer draw white panels behind white text. The sidebar uses the native sidebar material and full-contrast row labels.

KTStack 0.3.5

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 05 Oct 13:33

KTStack 0.3.5

Changed

  • Release builds are now checked for a working server start before they ship: the release smoke test launches the app and fails unless nginx comes up and no binary is rejected. No app behavior changes in this version.

KTStack 0.3.4

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 05 Oct 12:27

KTStack 0.3.4

Fixed

  • The server and database engines start again. 0.3.2 and 0.3.3 rejected their own signed binaries (nginx, MySQL, PostgreSQL, Redis, MongoDB, Mailpit, Memcached) with "Code signature check failed", so nothing could start.

KTStack 0.3.3

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 05 Oct 11:33

KTStack 0.3.3

Added

  • Background workers in Site Settings… → Workers: run long-lived commands such as php artisan queue:work and php artisan schedule:work for a PHP site, supervised by KTStack. Laravel sites get one-click queue and scheduler presets. Workers use the site's PHP version, folder and environment variables, run while the server runs, restart with backoff when they crash (and stop retrying after repeated quick crashes), and stop with the server or when KTStack quits. Start, stop and restart each worker; the site card shows how many are running. Output goes to Logs as <domain> · worker <name>. Workers are off until you press Start. kt workers and the MCP ktstack_list_workers, ktstack_start_worker and ktstack_stop_worker tools list, start and stop them.
  • Wildcard subdomains in Site Settings…: a site can answer on every subdomain of its domain, so tenant.shop.test reaches the shop.test site without adding each one as an alias. Useful for WordPress multisite in subdomain mode and multi-tenant apps. It is off by default. On an HTTPS site the certificate is re-issued with *.shop.test. A site or alias with its own domain (for example api.shop.test) still wins over the wildcard. kt sites and the MCP ktstack_list_sites tool show the flag.

Changed

  • The update window now shows what changed in the new version.

Fixed

  • Apache backends no longer redirect an alias domain to the site's main domain (for example when adding a trailing slash to a folder URL). Apache now keeps the host from the request and only pins the port.

KTStack 0.3.2

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 05 Oct 06:14

KTStack 0.3.2

New: Scheduled Backups

  • Settings → Scheduled Backups: a plan backs up the databases you pick, and optionally site source code and KTStack settings, into one archive every day or every week. It keeps the last N archives. A missed run (Mac asleep or KTStack closed) runs once as soon as possible, and a plan can skip runs on battery power.
  • Settings → Backup Destinations: a local folder (external drive, network share, iCloud Drive, Dropbox), any S3-compatible storage (Amazon S3, Cloudflare R2, Backblaze B2, MinIO, Wasabi, DigitalOcean Spaces or a custom endpoint), or a Google Drive folder. Each plan uploads to one destination and can keep a copy on this Mac. Test Connection checks a destination before you use it. Secrets live in the macOS Keychain.
  • Google Drive sign-in runs in your browser and only asks for access to files KTStack creates or that you pick.
  • Restore… on a plan downloads an archive, verifies its checksum, adds its database dumps to Database → Backups and copies site folders and settings into Downloads.
  • The kt CLI and MCP server can back up managed databases. MCP also gains ktstack_create_site and ktstack_switch_php_version. Restore stays out of reach of agents.

Other additions

  • Appearance setting: System, Light or Dark (KTStack no longer forces Light).
  • VoiceOver labels on toggles and icon-only buttons. The ⌘D and ⌘⇧D shortcuts in the menu bar window now work.
  • Settings → General → Queue actions while busy: server start, stop and restart clicked during another server operation now run once it finishes instead of being ignored.

Changed

  • Sites are served to this Mac only by default. Other devices on your network get 403 unless you turn on Settings → Sites & Network → Allow devices on your network. Backends now see the real client IP instead of 127.0.0.1.
  • New local CAs are created with name constraints: they can only sign certificates for .test, .home.arpa, .internal, your dev TLD and loopback IPs. Replace an existing CA with Settings → HTTPS Certificates → Regenerate CA (the old one is kept in a retired folder), or turn this off with Restrict CA to dev domains.
  • MongoDB documents are shown and saved as Extended JSON. Decimal128, binary subtypes, regular expressions and JavaScript code keep their types when you edit a document.
  • Remove Site now only unregisters the site by default. Moving the folder to the Trash and dropping its MySQL database are separate opt-in checkboxes.
  • Uninstalling a database or cache engine version keeps its data. Runtimes shows the kept data, restores it into a reinstalled version, and offers Delete data… to move it to the Trash.
  • Uninstalling KTStack moves its data to the Trash instead of deleting it, and shows progress.
  • Shared tunnels stop on their deadline or when KTStack quits, even after a crash. Tunnel URLs keep the site's nginx directives and Apache .htaccess rules.
  • Editing sites reloads only the backends whose configuration changed.
  • Launch, HTTPS settings, the PHP version list and SQL highlighting on large queries no longer block the interface.
  • lsof, php-fpm -t, codesign and launchctl run with timeouts, so a hung tool can no longer freeze KTStack.

Fixed

  • A failed WordPress restore puts the original site back instead of deleting it.
  • A MySQL overwrite restore keeps its safety dump until the restore or rollback is verified. mysqldump now includes routines, events and triggers.
  • Grid edits commit to the row they were opened on and survive sorting, paging and commits. Placeholders and large numbers are no longer saved by mistake.
  • Postgres filtered and sorted browsing uses the selected schema.
  • Idle workspace tabs reconnect on every entry point.
  • A bad sites.json no longer wipes sites, vhosts or certificates.
  • Services keep launchd in sync with their toggles and start the active engine version.
  • Runtime downloads cancel reliably.
  • Legacy KDWarm launchd jobs are booted out on migration.

Upgrade notes

  • The privileged helper is now version 0.3.1. KTStack asks you to approve the helper again after updating.
  • If you open your local sites from a phone or another computer, turn on Settings → Sites & Network → Allow devices on your network after updating.

Downloads

  • Apple Silicon: KTStack-0.3.2-arm64.dmg
  • Intel: KTStack-0.3.2-x86_64.dmg

Both are signed with Developer ID and notarized. Existing installs update automatically through Sparkle.

KTStack 0.3.1

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 19 Sep 10:37

Highlights in KTStack 0.3.1

KTStack 0.3.1 brings critical refinements to CLI lifecycle management, shell integration toggles, and runtime binary isolation.


1. Robust CLI Lifecycle & Shell Integration

  • Clean Uninstallation: Toggling off kt in Settings > Shell Integration > Managed Tools or disabling the master shell integration switch now cleanly removes /usr/local/bin/kt and ~/Library/Application Support/KTStack/shims/kt.
  • Runtime Tool Guard: Added an instant runtime check to kt to ensure disabled tools cannot be inadvertently executed from cached shells or absolute paths.
  • Staging Verification: Prevented prepareShimDir() and installCLI() from auto-restaging disabled tools during stack launch.

2. Binary Packaging & Auto-Update

  • Universal Apple Silicon (arm64) & Intel (x86_64) signed and notarized DMGs with Developer ID Application: PHONG DA TRADING SERVICES COMPANY LIMITED (44452PW7V3).
  • Sparkle EdDSA-signed appcast.xml supporting automatic updates for existing KTStack installations.

KTStack 0.3.0

Choose a tag to compare

@nguyenkhoi489 nguyenkhoi489 released this 19 Sep 06:29

Highlights in KTStack 0.3.0

KTStack 0.3.0 introduces a native Model Context Protocol (MCP) server for AI coding agents, a unified terminal CLI (kt), 1-click IDE quick launch, and a clean-room MIT database management workspace with multi-engine backup and restore.


1. Native Model Context Protocol (MCP) Server (kt mcp)

  • Embedded stdio JSON-RPC 2.0 MCP server (spec 2024-11-05) connecting Cursor, Claude Code, and Windsurf directly to your local KTStack environment.
  • Exposes 7 zero-network-egress agent tools:
    • ktstack_list_sites: Site inventory with domains, runtime pins, and ports.
    • ktstack_create_site: Provision local sites with automated .test routing.
    • ktstack_switch_php_version: Dynamically change assigned PHP runtime versions.
    • ktstack_get_recent_logs: Instant trailing log retrieval for autonomous agent debugging.
    • ktstack_inspect_db_schema: Inspect table columns and primary keys.
    • ktstack_backup_db: Trigger immediate database dumps.
    • ktstack_doctor: System and IPC socket diagnostic probe.
  • Setup guide documented in docs/ai-agent-integration.md.

2. Standalone Swift CLI (kt)

  • Native Mach-O command-line tool packaged inside KTStack.app/Contents/MacOS/kt.
  • Subcommands:
    • kt sites [list] [--json]: List local development sites.
    • kt services [list] [--json]: List daemon status.
    • kt services restart <service>: Gracefully restart background services.
    • kt db backup <database>: Clean-room database snapshot.
    • kt doctor: Terminal diagnostics probe.
    • kt version: Print CLI and build version.

3. 1-Click IDE Quick Launch

  • Added 1-click launch buttons directly on Site cards and rows.
  • Launches your preferred editor in $&lt; 300\text{ms}$:
    • Cursor (com.todesktop.230313mzl4w4u92)
    • VS Code (com.microsoft.VSCode)
    • PhpStorm (com.jetbrains.PhpStorm)
    • Zed (dev.zed.Zed)
    • Sublime Text (com.sublimetext.4)

4. Clean-Room MIT Database Management Workspace

  • 1-Click Backup & Restore: Full support for MySQL, MariaDB, PostgreSQL, SQLite, and MongoDB.
  • PK-Indexed Grid Staging: Edits, deletions, and draft rows remain tied to Primary Keys across virtualized scrolling and sorting.
  • AppKit Floating Editor: Custom KTCellOverlayEditor and KTGridKeyHandlingTableView avoiding AppKit field editor focus traps.
  • DDL & Structure: Real-time DDL preview, foreign key navigation, and explain plan visualization.

5. Platform Architecture & Security

  • Local IPC Unix Socket: Thread-safe communication via ktstack.sock restricted to POSIX 0600 permissions.
  • Apple HIG & Liquid Glass: Native Liquid Glass container batching for macOS 27+ with graceful .ultraThinMaterial fallbacks on macOS 13+ (Ventura).
  • 100% Clean-Room MIT Provenance: Zero AGPL or proprietary code ported.