From d96d05862e8efc3ce15df9bc299cffa0435df8ed Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Sun, 18 Oct 2026 01:20:00 +0700 Subject: [PATCH] chore(plugins): fix notes left stale by the plugin manager cleanup --- CHANGELOG.md | 1 + .../Plugins/PluginInstallProgressPresenter.swift | 2 +- .../Models/Schema/ColumnDefaultVocabulary.swift | 14 +++----------- 3 files changed, 5 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 68f4504087..a8726a09d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Compare & Sync status bar shows the target connection's icon instead of a colored dot. - Themes move to the Trash instead of being deleted. Undo reverts a trash, rename, duplicate or import. - Editor tab strip over a themed window on macOS 26 and later drawn in a system fill instead of the theme color. +- Plugin download progress shown as the bytes arrive instead of jumping to full at the end. ### Fixed diff --git a/TablePro/Core/Plugins/PluginInstallProgressPresenter.swift b/TablePro/Core/Plugins/PluginInstallProgressPresenter.swift index 4b45a1dee0..175e30b01a 100644 --- a/TablePro/Core/Plugins/PluginInstallProgressPresenter.swift +++ b/TablePro/Core/Plugins/PluginInstallProgressPresenter.swift @@ -37,7 +37,7 @@ internal final class PluginInstallProgressPresenter { parent.beginSheet(panel) } - // The installer publishes 0 before the first byte, then maybe nothing until the end, so 0 stays indeterminate. + // 0 stays indeterminate; a download without a Content-Length reports nothing before the final 1. private func update(fraction: Double) { let clamped = min(max(fraction, 0), 1) guard clamped > 0 else { return } diff --git a/TablePro/Models/Schema/ColumnDefaultVocabulary.swift b/TablePro/Models/Schema/ColumnDefaultVocabulary.swift index 5266829b67..87daeaefb7 100644 --- a/TablePro/Models/Schema/ColumnDefaultVocabulary.swift +++ b/TablePro/Models/Schema/ColumnDefaultVocabulary.swift @@ -1,10 +1,3 @@ -// -// ColumnDefaultVocabulary.swift -// TablePro -// -// The default values each engine offers for a column, spelled the way its DDL wants them. -// - import Foundation /// The menu the Default cell offers, per engine. @@ -13,10 +6,9 @@ import Foundation /// Default field holds. Nothing rewrites it on the way to the server, so an entry that is wrong here is /// a statement the server rejects. /// -/// Curated in the app and keyed by database type id, the shape `PluginMetadataRegistry.fallbackCategory` -/// already uses. It cannot be keyed by plugin: MySQL and MariaDB share one and spell an expression -/// default differently; PostgreSQL, Redshift, CockroachDB and PGlite share one, and only two of them -/// have `gen_random_uuid()`. +/// Curated in the app and keyed by database type id. It cannot be keyed by plugin: MySQL and MariaDB +/// share one and spell an expression default differently; PostgreSQL, Redshift, CockroachDB and PGlite +/// share one, and only two of them have `gen_random_uuid()`. /// /// What belongs here is the vocabulary, not the syntax. MySQL takes a `TEXT` or `JSON` default only in /// parentheses whatever the value is, so that parenthesising is the MySQL driver's job at the point it