diff --git a/.claude/rules/plugin-system.md b/.claude/rules/plugin-system.md index 44b30df779..de573eb205 100644 --- a/.claude/rules/plugin-system.md +++ b/.claude/rules/plugin-system.md @@ -64,7 +64,7 @@ TableProPluginKit is built with Library Evolution, so an already-built plugin ke ## Structure - PluginKit-free logic a plugin shares with the iOS app lives in a TableProCore product, such as `TableProMySQLCore`, `TableProPostgreSQLCore` or `TableProRedisCore`. -- A new driver needs: its `project.yml` target and an `AllPlugins` entry, a `DatabaseType` constant, an entry in `.github/plugin-registry.json` keyed by its tag slug, a curated snapshot in `PluginMetadataRegistry` (without it the type never appears in the New Connection picker), a row in `../tablepro-docs/databases/index.mdx` through a paired docs PR, and a CHANGELOG entry. +- A new driver needs: its `project.yml` target and a `RegistryPlugins` entry (`BundledPlugins` and the app's `copy: { destination: plugins }` dependency for a bundled one), a `DatabaseType` constant, an entry in `.github/plugin-registry.json` keyed by its tag slug, a curated snapshot in `PluginMetadataRegistry` (without it the type never appears in the New Connection picker), a row in `../tablepro-docs/databases/index.mdx` through a paired docs PR, and a CHANGELOG entry. - A new engine ships as a registry plugin (`AGENTS.md`, Scope). - Where a plugin's tests go, and how a test target is added in `project.yml`: `.claude/rules/tests.md`, Where a test goes and Adding a test target. diff --git a/.gitignore b/.gitignore index f3055e59e9..c71089fc73 100644 --- a/.gitignore +++ b/.gitignore @@ -143,6 +143,7 @@ Derived/ # Build artifacts *.xcarchive +/dist/ # Static libraries (downloaded from GitHub Releases via scripts/download-libs.sh) Libs/*.a diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 27f14b5b91..ff3f0c45e6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -28,7 +28,7 @@ Select the **TablePro** scheme and **My Mac**, then press `Cmd+R`. ### Static libraries -`scripts/download-libs.sh` fetches two archives from the `libs-v1` GitHub Release: the macOS `.a` files (libmariadb, libpq, libduckdb, libmongoc and the rest) and the iOS xcframeworks. None of it is in git, so a build that skips this step fails at link time. Every run, including one that downloads nothing, verifies `Libs/` against the checksums committed at `HEAD`. Publishing a rebuilt library is in `RELEASING.md`, Static libraries. +`scripts/download-libs.sh` fetches two archives from the `libs-` GitHub release that `Libs/release` names: the macOS `.a` files (libmariadb, libpq, libduckdb, libmongoc and the rest) and the iOS xcframeworks. None of it is in git, so a build that skips this step fails at link time. Every run, including one that downloads nothing, verifies `Libs/` against the checksums committed at `HEAD`. Publishing a rebuilt library is in `RELEASING.md`, Static libraries. ## Building with a personal Apple team diff --git a/README.ko.md b/README.ko.md index 35da4763cd..30e575dd78 100644 --- a/README.ko.md +++ b/README.ko.md @@ -12,7 +12,7 @@

웹사이트 · 문서 · - 다운로드 · + 다운로드 · Discord

@@ -70,9 +70,6 @@ TablePro는 네 번째 선택지입니다. 네이티브이고 여러 데이터 ## 지원 데이터베이스 -- **내장**: MySQL, MariaDB, TiDB, OceanBase, Databend, PostgreSQL, Amazon Redshift, CockroachDB, PGlite, SQLite, ClickHouse, Redis -- **플러그인**: Microsoft SQL Server, MongoDB, Oracle Database, Snowflake, BigQuery, Spanner, DynamoDB, DuckDB, Cassandra, ScyllaDB, Elasticsearch, Kafka, Trino, Teradata, SAP HANA, Dameng DM8, SurrealDB, Typesense, Weaviate, etcd, Cloudflare D1, Cloudflare R2 SQL, libSQL, Turso, Beancount - 내장 드라이버는 앱에 포함되어 있습니다. 플러그인 드라이버는 [플러그인 레지스트리](https://github.com/TableProApp/plugins)에서 필요할 때 설치됩니다. 최신 목록과 엔진별 지원 기능은 [tablepro.app/databases](https://tablepro.app/databases)에서 확인할 수 있습니다. ## 주요 기능 @@ -103,7 +100,7 @@ TablePro는 네 번째 선택지입니다. 네이티브이고 여러 데이터 brew install --cask tablepro ``` -또는 [GitHub Releases](https://github.com/TableProApp/TablePro/releases)에서 다운로드하세요. +또는 [GitHub Releases](https://github.com/TableProApp/TablePro/releases/latest)에서 다운로드하세요. ## 빌드 방법 diff --git a/README.vi.md b/README.vi.md index 95c430d90b..01fc14c6c4 100644 --- a/README.vi.md +++ b/README.vi.md @@ -12,7 +12,7 @@

Website · Tài liệu · - Tải xuống · + Tải xuống · Discord

@@ -70,9 +70,6 @@ TablePro là mảnh thứ tư còn thiếu: native, đa database, và mã nguồ ## Database hỗ trợ -- **Tích hợp sẵn**: MySQL, MariaDB, TiDB, OceanBase, Databend, PostgreSQL, Amazon Redshift, CockroachDB, PGlite, SQLite, ClickHouse, Redis -- **Plugin**: Microsoft SQL Server, MongoDB, Oracle Database, Snowflake, BigQuery, Spanner, DynamoDB, DuckDB, Cassandra, ScyllaDB, Elasticsearch, Kafka, Trino, Teradata, SAP HANA, Dameng DM8, SurrealDB, Typesense, Weaviate, etcd, Cloudflare D1, Cloudflare R2 SQL, libSQL, Turso, Beancount - Driver tích hợp sẵn đi kèm app. Driver dạng plugin cài thêm khi cần từ [plugin registry](https://github.com/TableProApp/plugins). Danh sách hiện tại và những gì từng engine hỗ trợ có tại [tablepro.app/databases](https://tablepro.app/databases). ## Bên trong có gì @@ -103,7 +100,7 @@ Các gói và giá có tại [tablepro.app/pricing](https://tablepro.app/pricing brew install --cask tablepro ``` -Hoặc tải về từ [GitHub Releases](https://github.com/TableProApp/TablePro/releases). +Hoặc tải về từ [GitHub Releases](https://github.com/TableProApp/TablePro/releases/latest). ## Tài liệu diff --git a/README.zh.md b/README.zh.md index 6bc450ea08..4026f5c87e 100644 --- a/README.zh.md +++ b/README.zh.md @@ -12,7 +12,7 @@

官网 · 文档 · - 下载 · + 下载 · Discord

@@ -70,9 +70,6 @@ TablePro 补上缺失的第四类:原生、多数据库、开源。 ## 支持的数据库 -- **内置**:MySQL、MariaDB、TiDB、OceanBase、Databend、PostgreSQL、Amazon Redshift、CockroachDB、PGlite、SQLite、ClickHouse、Redis -- **插件**:Microsoft SQL Server、MongoDB、Oracle Database、Snowflake、BigQuery、Spanner、DynamoDB、DuckDB、Cassandra、ScyllaDB、Elasticsearch、Kafka、Trino、Teradata、SAP HANA、达梦 DM8、SurrealDB、Typesense、Weaviate、etcd、Cloudflare D1、Cloudflare R2 SQL、libSQL、Turso、Beancount - 内置驱动随应用一起发布。插件驱动按需从[插件仓库](https://github.com/TableProApp/plugins)安装。最新列表以及每个引擎支持的功能见 [tablepro.app/databases](https://tablepro.app/databases)。 ## 主要功能 @@ -103,7 +100,7 @@ TablePro 补上缺失的第四类:原生、多数据库、开源。 brew install --cask tablepro ``` -或从 [GitHub Releases](https://github.com/TableProApp/TablePro/releases) 下载。 +或从 [GitHub Releases](https://github.com/TableProApp/TablePro/releases/latest) 下载。 ## 文档 diff --git a/RELEASING.md b/RELEASING.md index 65678774c8..03f003853a 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -45,27 +45,21 @@ notarizes the DMG too. ## Static libraries -The `.a` files under `Libs/` and the xcframeworks under `Libs/ios/` live on the `libs-v1` GitHub -release, not in git. Each set has a checksum baseline committed beside it, and -`scripts/download-libs.sh` verifies the working copy against the baseline at `HEAD` on every run, -including runs that download nothing. An archive and its baseline move together, so publish through -the scripts, which do both: +The `.a` files under `Libs/` and the xcframeworks under `Libs/ios/` live on the immutable +`libs-` GitHub release that `Libs/release` names, not in git. `scripts/download-libs.sh` fetches +it and verifies every file against the checksums at `HEAD` on every run. Publish a rebuilt library +through the script, then commit what it writes: ```bash scripts/publish-libs.sh libmongoc_arm64.a libmongoc_x86_64.a libmongoc_universal.a libmongoc.a -git add Libs/checksums.sha256 && git commit -m "build: update static library checksums" +git add Libs/release Libs/checksums.sha256 Libs/ios/checksums.sha256 +git commit -m "build(libs): publish libs-" ``` -- Name every library you rebuilt. `publish-libs.sh` verifies each one you did not name against the - checksums at `HEAD`, regenerates `Libs/checksums.sha256` and uploads the archive with `--clobber`. -- The iOS xcframeworks go through `scripts/publish-ios-libs.sh`, then a commit of - `Libs/ios/checksums.sha256`. It takes `--dry-run` and refuses a publish that changes nothing. -- `libs-v1` predates release immutability, so GitHub keeps it mutable. Both scripts stop before - touching a checksum file if it ever reports immutable. -- Never write a checksum file by hand. Regenerating one from a stale `Libs/` reverts every library - you did not rebuild: that shipped a broken libmongoc and rolled DuckDB back a version. -- Never upload with a bare `tar` and `gh release upload`. That put 299 MB on the release with no - baseline behind it, and the next `download-libs.sh` run stopped on every machine and CI job. +- Name every library you rebuilt, added or removed. The script verifies every other one against the + checksums at `HEAD`, creates the next `libs-` and rewrites `Libs/release` and both checksum files. +- `--dry-run` prints what it would publish. +- A published `libs-` never changes; a fix is the next ``. ## The release pipeline