Skip to content

refactor(core): move the Linux core crates into a shared core workspace - #3986

Merged
datlechin merged 11 commits into
mainfrom
refactor/shared-core
Nov 2, 2026
Merged

datlechin merged 11 commits into
mainfrom
refactor/shared-core

Conversation

@datlechin

Copy link
Copy Markdown
Member

Summary

  • The UI-free crates move from linux/crates to core/crates (git mv, crate names unchanged). linux/crates keeps the app and a new tablepro-linux-platform.
  • The Cargo workspace moves to the top of the repository: Cargo.toml, Cargo.lock, rust-toolchain.toml, rustfmt.toml, clippy.toml, deny.toml, .config/nextest.toml. deny.toml also checks the Windows and macOS targets.
  • tablepro-linux-platform holds GSettings (AppSettings), the oo7 SecretStore and GLib's XDG paths (storage_paths, was StoragePaths::from_glib). Storage no longer links GLib or oo7.
  • New SecretItem and SecretItems in tablepro_core::credentials. ApiKeyVault and TokenVault are blanket impls over it. The MCP token and AI key labels go through a SecretItemLabeler, translated by the app.
  • Platform splits: FileIdentity in core (device and inode, /dev/fd with fstat on macOS, volume and file index on Windows), TCP_USER_TIMEOUT on Linux only, the safe write is a 0600 temp file + fsync + rename + directory fsync instead of g_file_set_contents_full, sync_directory in core.
  • session reaches SSH through an SshTunnels trait the app passes in. The OpenSSH transport and the askpass helper build on Unix only.
  • Drivers: SQLite bundled off Linux, DuckDB's replace lock is fcntl on Unix and LockFileEx on Windows, the MongoDB relay is Unix-only, Cassandra's relay serves no one off Linux, SQL Server integrated login uses SSPI (tiberius winauth) on Windows. Test helpers build on Windows, with the route proxy on loopback TCP there.
  • Each boundary error enum has a stable code() (driver.timeout, ssh.host_key_changed, ...).
  • Packaging: make-dist.sh writes the source tarball with git archive (workspace files, core/, linux/) in place of meson dist. Debian builds with --sourcedirectory=linux, the RPM sets _vpath_srcdir linux, the Flatpak module builds subdir: linux from core, linux and the root Cargo files.
  • CI: new core.yml checks the core crates and runs tablepro-core's tests on windows-2025, windows-11-arm and macos-15. core/ and the root workspace files trigger the linux suite. Cache, JUnit, deny, shear and Secret Service paths follow the move.
  • Docs: core/AGENTS.md, core/ARCHITECTURE.md (split from linux/ARCHITECTURE.md), core/docs/decisions/0001-shared-core.md. Linux ADRs 0006 and 0018 get only their Status line. No changelog fragment: nothing user-visible.
  • Tests changed with the behavior: test_license_metadata.py (copyright names linux/data/...), test_check_packaging.py (workspace Cargo.toml above linux/), test_regression_names.py (scans core/crates), error_text/files.rs (write errors carry io::ErrorKind), the session and MCP tests that build ConnectServices (Arc<dyn SshTunnels>, process_id). The /proc and Unix-socket tests are cfg(unix) or Linux-only.

Test plan

  • Docker ubuntu:26.04 arm64: cargo fmt --check, clippy with and without default features, meson compile, meson test under xvfb-run -a dbus-run-session, the Secret Service test.
  • macOS native: clippy --all-targets on every core crate, cargo test -p tablepro-core -p tablepro-storage.
  • cargo xwin check for x86_64-pc-windows-msvc and aarch64-pc-windows-msvc on every core crate, warnings denied.
  • cargo deny, cargo shear, update-third-party-licenses.sh (no change), test_detect_changed_paths.py, actionlint and zizmor.

@datlechin
datlechin merged commit 9863813 into main Nov 2, 2026
45 checks passed
@datlechin
datlechin deleted the refactor/shared-core branch November 2, 2026 07:15
datlechin added a commit that referenced this pull request Nov 2, 2026
* fix(security): tier SQL with one classifier for macOS and iOS

Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-7WQZ7IBV.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-85FM8CNF.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-BO7086MJ.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-DXB5GXHF.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-RSL7CZQC.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-TUTSEW23.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-VEO0AP8A.
Advisory: GHSA-3x6q-h487-r38w

* fix(linux-grid): stop column moves at the row numbers, keep the focus in view and announce them (#3985)

* feat(linux-sidebar): list functions, procedures, sequences and triggers (#3969)

Co-authored-by: Ngo Quoc Dat <datlechin@gmail.com>

* feat(plugin-influxdb): add an InfluxDB 2 and 3 driver over HTTP (#3976)

Co-authored-by: Ngo Quoc Dat <datlechin@gmail.com>

* feat(plugin-qdrant): add a Qdrant driver over the REST API (#3972)

Co-authored-by: Ngo Quoc Dat <datlechin@gmail.com>

* feat(display-format): decode Protobuf schemas and Schema Registry values (#3979)

Co-authored-by: Ngo Quoc Dat <datlechin@gmail.com>

* refactor(core): move the Linux core crates into a shared core workspace (#3986)

* fix(security): import TableProSQLGrammar where the Flux classifier reads its tiers

* docs(core): record the bindings, grid data, plugin ABI and SQL Server decisions (#3987)

* fix(licensing): call the paid plan Pro, as the site and server now do (#3989)

* fix(parsing): stop malformed replies and files from crashing, hanging or filling memory (#3991)

---------

Co-authored-by: Nguyễn Nam Long <j2teamnnl@gmail.com>
datlechin added a commit that referenced this pull request Nov 2, 2026
* fix(security): tier SQL with one classifier for macOS and iOS

Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-7WQZ7IBV.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-85FM8CNF.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-BO7086MJ.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-DXB5GXHF.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-RSL7CZQC.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-TUTSEW23.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-VEO0AP8A.
Advisory: GHSA-3x6q-h487-r38w

* fix(security): run external statements as approved and read only in the engine

Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-AK0DTFEV.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-2N5FN7X4.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-A6ENWH1O.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-AWAVHFV6.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-DRI3Z3MD.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-G0F69IT6.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-KIUNV39X.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-KYD5T4TJ.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-LG65P706.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-P5IW81B3.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-PCUF2R3V.
Discovered by Anthropic's OSS Scanner, as vulnerability ANT-2026-UHVIMOF0.
Advisory: GHSA-3xf7-86qj-4546

* fix(l10n): add the iOS strings the MongoDB and ClickHouse refusals use

* fix(linux-clickhouse): hold user SQL and read-only connections to readonly=1

readonly=2 still let INSERT INTO FUNCTION file() write a file on the server (measured on 26.8).

Advisory: GHSA-3xf7-86qj-4546

* feat(plugin-influxdb): add an InfluxDB 2 and 3 driver over HTTP (#3976)

Co-authored-by: Ngo Quoc Dat <datlechin@gmail.com>

* feat(plugin-qdrant): add a Qdrant driver over the REST API (#3972)

Co-authored-by: Ngo Quoc Dat <datlechin@gmail.com>

* feat(display-format): decode Protobuf schemas and Schema Registry values (#3979)

Co-authored-by: Ngo Quoc Dat <datlechin@gmail.com>

* refactor(core): move the Linux core crates into a shared core workspace (#3986)

* fix(security): import TableProSQLGrammar where the Flux classifier reads its tiers

* fix(security): import TableProSQLGrammar where the gates read the shared classifier's tier

* docs(core): record the bindings, grid data, plugin ABI and SQL Server decisions (#3987)

* fix(licensing): call the paid plan Pro, as the site and server now do (#3989)

* fix(parsing): stop malformed replies and files from crashing, hanging or filling memory (#3991)

---------

Co-authored-by: Nguyễn Nam Long <j2teamnnl@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant