Table View๋ Tauri 2, React 19, TypeScript, Rust๋ก ๋ง๋๋ ๋ก์ปฌ ๋ฐ์คํฌํฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํด๋ผ์ด์ธํธ์ ๋๋ค.
TablePlus์ฒ๋ผ ๋น ๋ฅด๊ฒ ์ฐ๊ฒฐํ๊ณ , ์คํค๋ง์ ์ปฌ๋ ์ ์ ํ์ํ๊ณ , ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ํ์ธยทํธ์งํ๋ ํ๋ฆ์ ์งํฅํฉ๋๋ค. PostgreSQL์ด ๊ฐ์ฅ ๊ฐํ RDBMS lane์ด๊ณ MongoDB๋ whitelisted document workflow๊ฐ ํ์ฑ์ ๋๋ค. MySQL, MariaDB, SQLite, DuckDB, Redis, Valkey, Elasticsearch, OpenSearch, MSSQL, Oracle์ ๋ํด์๋ SOT์ ๊ธฐ๋ก๋ bounded runtime slice์ smoke/focused evidence๊ฐ ๋ฎ๋ ๋ฒ์ ์์์ ์ง์ํฉ๋๋ค.
๋ค์ค ์ฐฝ ์ํฌ์คํ์ด์ค, ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํ๋ Preview/Commit ๊ฒ์ดํธ, ์ด์ ํ๊ฒฝ์์ destructive ์์ ์ ๋ง๋ Safe Mode๋ฅผ ๊ฐ์ถ์์ต๋๋ค. ๊ทธ๋์ ๋ก์ปฌ ํด๋ผ์ด์ธํธ์ ์๋์ ๋ฐ์ดํฐ ์์ ์ ์์ ์ฅ์น๋ฅผ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
- PostgreSQL: ์คํค๋ง, ํ ์ด๋ธ, ๋ทฐ, ์ธ๋ฑ์ค, ์ ์ฝ ์กฐ๊ฑด(PK/FK/CHECK/UNIQUE), ํจ์/ํธ๋ฆฌ๊ฑฐ ์์ค ์กฐํ, ํ ์ด๋ธ/์ปฌ๋ผ/์ธ๋ฑ์ค/์ ์ฝ DDL UI๋ฅผ ์ง์ํฉ๋๋ค.
- MySQL/MariaDB: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ, ํ ์ด๋ธ/์ปฌ๋ผ/์ธ๋ฑ์ค/์ ์ฝ/๋ทฐ/ํจ์/ํธ๋ฆฌ๊ฑฐ ์กฐํ, SQL ์คํ, ํ ์ด๋ธ ํ์ด์ง/ํํฐ/์ ๋ ฌ, ์ฃผ์ DDL UI ๋ฐฑ์๋๊ฐ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. MySQL๊ณผ MariaDB๋ connect/browse/query/edit/cancel runtime smoke baseline์ด ์๊ณ , MySQL-family ๊ณ ์ ๋ฌธ๋ฒ์ ํด๋ผ์ด์ธํธ ๋ถ์์ ์์ง ๋ถ๋ถ ์ง์์ ๋๋ค.
- SQLite: ํ์ผ ๊ธฐ๋ฐ ์ฐ๊ฒฐ๊ณผ DB ํ์ผ ์์ฑ, ํ ์ด๋ธ/์ปฌ๋ผ ํ์, ํ ์ด๋ธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ๋จ์ผ ์ฟผ๋ฆฌ ์คํ, ๋ฐฐ์น ์คํ๊ณผ dry-run์ ์ง์ํฉ๋๋ค. writable ํ์ผ์์๋ SQLite ๊ฐ ๋ค์ดํฐ๋ธ๋ก ์คํํ๋ ๊ตฌ์กฐํ DDL(ํ ์ด๋ธ ์์ฑ/์ญ์ /์ด๋ฆ ๋ณ๊ฒฝ, ์ปฌ๋ผ ์ถ๊ฐ/์ญ์ , ์ธ๋ฑ์ค ์์ฑ/์ญ์ )์ด ๋ ธ์ถ๋ฉ๋๋ค(#1804). ์ด๋ฏธ ์๋ ์ปฌ๋ผ์ ํ์ ยทNOT NULLยทDEFAULT ๋ณ๊ฒฝ๊ณผ ๋ ๋ฆฝ ์ ์ฝ(FOREIGN KEY / CHECK / UNIQUE) ์ ์ธ์ ์ ๊ณตํ์ง ์๊ณ , export parity ๋ ์์ง ๋ช ์์ ์ผ๋ก ์ ํ๋ฉ๋๋ค.
- DuckDB: ํ์ผ ๊ธฐ๋ฐ
.duckdb์ฐ๊ฒฐ๊ณผ raw SQL ์คํ, ๋ก์ปฌ CSV/Parquet/JSON/NDJSON ๋ฑ๋ก/preview, ๋ฑ๋ก๋ source alias ๋์ global editor SELECT smoke ๊ฒฝ๋ก๋ฅผ ์ง์ํฉ๋๋ค. writable connection ์์๋ grid row edit ๊ณผ native ๊ตฌ์กฐํ DDL(ํ ์ด๋ธ ์์ฑ/์ญ์ /์ด๋ฆ ๋ณ๊ฒฝ, ์ปฌ๋ผ ์ถ๊ฐ/์ญ์ /ํ์ , ์ธ๋ฑ์ค ์์ฑ/์ญ์ )์ด ๋ ธ์ถ๋ฉ๋๋ค(ADR 0051 Stage 1/2, #1070). ์ ์ฝ ์ถ๊ฐ/์ญ์ ์ identity ์ปฌ๋ผ(Stage 2b), dry-run/๋ค์ค statement ํธ๋์ญ์ (Stage 3), COPY/ATTACH/DETACH, extension install/load, ์๋ import/export, admin parity๋ ์์ง ๋ช ์์ ์ผ๋ก ์ ํ๋ฉ๋๋ค. - MongoDB: ๋ฐ์ดํฐ๋ฒ ์ด์ค/์ปฌ๋ ์
ํ์, ๋ํ๋จผํธ ๊ทธ๋ฆฌ๋, find/aggregate/insert/update/delete/bulkWrite, ์ธ๋ฑ์ค์ validator ๊ด๋ฆฌ, collection/server ์ง๋จ ๋ช
๋ น์ ์ง์ํฉ๋๋ค. ์์ JavaScript๋ฅผ ์คํํ์ง ์๊ณ ํ์ฉ๋
db....์ํฌํ๋ก์ฐ๋ง ํ์ฑํด dispatch ํฉ๋๋ค. - Redis: ์ฐ๊ฒฐ/profile, key browser, value preview/edit UI, guarded string write, TTL ๋ณ๊ฒฝ, exact-key delete confirmation, bounded command editor๋ฅผ ์ง์ํฉ๋๋ค. full CLI/admin parity, stream consumer UI, cluster/pubsub/modules, broader command coverage๋ ํ์์ ๋๋ค.
- Valkey: ์ฐ๊ฒฐ/profile, key scan/value preview, selected-key stream reader, bounded Redis-compatible command query,
GET/HGETALL/XRANGE์ boundedSET/EXPIREsmoke ๊ฒฝ๋ก, direct UTF-8 string-key mutation controls๊ฐ ์์ต๋๋ค. hash/list/set/zset writes์ full Redis compatibility๋ ํ์์ ๋๋ค. - Elasticsearch/OpenSearch: Live HTTP connection/catalog, bounded
_searchquery, Search DSL validation/completion, delete-by-query safety planning๊ณผ Safe Mode confirm gate ๋ค์ live_delete_by_query์คํ,_searchprofile์คํ ๊ณํ ๋ทฐ์ด๋ฅผ ์ง์ํฉ๋๋ค. actual live index/settings admin execution, observability,_explainworkflow๋ ํ์์ ๋๋ค. - MSSQL: SQL authentication ์ฐ๊ฒฐ/๋ฒ์ probe, catalog browse, bounded SELECT/DML/DDL runtime, primary-key row edit, representative Safe Mode smoke, catalog-aware T-SQL editor assistance๊ฐ ์์ต๋๋ค. TLS-required workflow, SQLCMD/admin/security/backup/jobs/users/roles, full T-SQL semantic parity๋ ํ์์ ๋๋ค.
- Oracle: ์๋น์ค๋ช ๊ธฐ๋ฐ lifecycle๊ณผ bounded catalog/query/cancel/tabular runtime slice๋ฅผ ์ง์ํฉ๋๋ค. catalog metadata, SELECT/DML batch, cooperative cancellation, table-data query๊ฐ ๋ฒ์์ด๋ฉฐ editRows, structured DDL, raw DDL/admin, parser/completion, PL/SQL body/package authoring/source, routine smoke, admin/import/export/full workbench๋ ํ์์ ๋๋ค.
์ธ๋ถ ์ฟผ๋ฆฌ/์๋์์ฑ ๋ฒ์๋ docs/product/query-language-support.md์ ์ ๋ฆฌ๋์ด ์์ต๋๋ค.
- Launcher & Workspace: ์ฐ๊ฒฐ ๋ชฉ๋ก๊ณผ ์ ์ ์ค์ ์ ๋ฐ์ฒ ์ฐฝ์์ ๊ด๋ฆฌํ๊ณ , ์ค์ DB ์์ ์ ์ฐ๊ฒฐ๋ณ ์ํฌ์คํ์ด์ค ์ฐฝ์์ ์ํํฉ๋๋ค.
- ์ํ ๋๊ธฐํ: ์ฐ๊ฒฐ/๊ทธ๋ฃน, ํ ๋ง, ์ฃผ์ ์ํฌ์คํ์ด์ค ์ํ, MRU/ํ์คํ ๋ฆฌ์ฑ ๋ฐ์ดํฐ๊ฐ ๋ก์ปฌ ์ ์ฅ์์ Tauri ์ด๋ฒคํธ๋ก ์ฐฝ ์ฌ์ด์์ ์ผ๊ด๋๊ฒ ๊ฐฑ์ ๋ฉ๋๋ค.
- RDB ๊ทธ๋ฆฌ๋์์ ํ ์ถ๊ฐ/์์ /์ญ์ ๋ฅผ ์ธ๋ผ์ธ์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ์คํ ์ SQL preview๋ฅผ ํ์ธํ ๋ค Commit ๋๋ Discardํ ์ ์์ต๋๋ค.
- MongoDB ๋ํ๋จผํธ ํธ์ง๋ MQL preview๋ฅผ ๊ฑฐ์ณ ์ ์ฉ๋๋ฉฐ, bulkWrite ๊ธฐ๋ฐ ๋ณ๊ฒฝ ํ๋ฆ์ ์ง์ํฉ๋๋ค.
- PostgreSQL/MySQL ๊ณ์ด, MSSQL, Oracle์์ ํ ์ด๋ธ/์ปฌ๋ผ ์์ฑ, ์ด๋ฆ ๋ณ๊ฒฝ, ์ญ์ , ์ธ๋ฑ์ค ์์ฑ/์ญ์ , FK/CHECK/UNIQUE ์ ์ฝ ์ถ๊ฐ/์ญ์ ๋ฅผ UI์์ ๋ค๋ฃน๋๋ค. DuckDB๋ ํ ์ด๋ธ/์ปฌ๋ผ/์ธ๋ฑ์ค๊น์ง ๋ค๋ฃจ๊ณ ์ ์ฝ ์ถ๊ฐ/์ญ์ ์ identity ์ปฌ๋ผ์ ์์ง ์ ์ธ์ ๋๋ค(ADR 0051 Stage 2b). SQLite๋ ํ ์ด๋ธ/์ปฌ๋ผ/์ธ๋ฑ์ค๊น์ง ๋ค๋ฃจ๊ณ , ์ ์ฝ ์ถ๊ฐ/์ญ์ ์ identity ์ปฌ๋ผ, ์ด๋ฏธ ์๋ ์ปฌ๋ผ ์ ์ ๋ณ๊ฒฝ์ ์ ๊ณตํ์ง ์์ต๋๋ค(#1804).
- ์คํ ์ DDL statement preview์ Safe Mode ๊ฒ์ดํธ๋ฅผ ๊ฑฐ์ณ destructive ๋ณ๊ฒฝ์ ํ ๋ฒ ๋ ํ์ธํฉ๋๋ค.
Important
์ด์(Production) ํ๊ฒฝ์ผ๋ก ํ์๋ ์ฐ๊ฒฐ์์๋ WHERE ์๋ UPDATE/DELETE, DROP, TRUNCATE, destructive Mongo command ๊ฐ์ ์์
์ด ๋ฐ๋ก ์คํ๋์ง ์์ต๋๋ค. ์ฌ์ฉ์๋ preview์ Yes/No ํ์ธ ๋ํ์์๋ฅผ ๊ฑฐ์ณ ๋ช
์์ ์ผ๋ก ์น์ธํด์ผ ํฉ๋๋ค.
- CodeMirror 6 ๊ธฐ๋ฐ SQL/MQL ์๋ํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- PostgreSQL, MySQL/MariaDB, SQLite, DuckDB, MSSQL์ DBMS๋ณ SQL dialect highlighting๊ณผ bounded ํ ์ด๋ธ/์ปฌ๋ผ ์๋์์ฑ์ ์ ๊ณตํฉ๋๋ค. Oracle์ runtime query dispatch๋ง ํ์ฑ์ด๊ณ Oracle-specific parser/completion claim์ ์์ง ์์ต๋๋ค.
- MongoDB๋ ์ปฌ๋ ์ , ๋ฉ์๋, query operator, aggregation stage, accumulator, BSON literal ํ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Redis/Valkey command editor์ Elasticsearch/OpenSearch Search DSL editor๋ ๊ฒ์ฆ๋ bounded vocabulary์ ํ์ฌ catalog/key context ๊ธฐ๋ฐ ํ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- PostgreSQL ํ ์ด๋ธ ์ค๊ณ UI๋ ์๋ฒ์ ์ฌ์ฉ์ ์ ์ ํ์ ๋ชฉ๋ก์ ๊ฐ์ ธ์ ์ปฌ๋ผ ํ์ ํ๋ณด์ ๋ฐ์ํฉ๋๋ค.
- ์กฐํํ ๊ทธ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ CSV, TSV, SQL INSERT, JSON์ผ๋ก ๋ด๋ณด๋ผ ์ ์์ต๋๋ค.
- MongoDB row export๋ Extended JSON v2 Relaxed ํํ๋ฅผ ๋ณด์กดํฉ๋๋ค.
- ๋น๋ฐ๋ฒํธ ๋ณดํธ: connection ๋น๋ฐ๋ฒํธ ํ๋ฌธ์ ๋ ๋๋ฌ๋ก ๋ค์ ๋ ธ์ถํ์ง ์์ต๋๋ค. ์ ์ฅ ์ AES-256-GCM์ผ๋ก ์ํธํํ๊ณ , ํ์ผ ํค๋ ๊ฐ๋ฅํ๋ฉด OS keyring(macOS Keychain, Windows Credential Manager, Linux Secret Service)์ ๋ก๋๋ค.
- Linux fallback: Secret Service๊ฐ ์๋ ์ต์ Linux ํ๊ฒฝ์์๋ ๊ถํ์ด ์ ํ๋ ๋ก์ปฌ key ํ์ผ fallback์ ์ฌ์ฉํ๊ณ ์ฌ์ฉ์์๊ฒ ๋์คํฌ ์ํธํ๋ฅผ ๊ถ์ฅํฉ๋๋ค.
- ๋ก์ปฌ ๊ถํ ์ ์ด: ์ฑ ๋ฐ์ดํฐ๋ ๋ก์ปฌ ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, Unix ๊ณ์ด์์๋ ๋ฏผ๊ฐ ํ์ผ ๊ถํ์
0600์ผ๋ก ์ ํํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ฅผ ๋ก์ปฌ์์ ๋น๋ํ๊ณ ๊ธฐ์ฌํ๋ ค๋ ๊ฐ๋ฐ์๋ฅผ ์ํ ์๋ด์ ๋๋ค.
Contributor์ agent๊ฐ ์ฐธ๊ณ ํ ๋ฌธ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Agent๋
AGENTS.md๋ฅผ ๋จผ์ ์ฝ๊ณ , ์์ type๋ณ workflow memory์ surface rule์ ์ด์ด์ ์ฝ์ต๋๋ค. Claude Code ์ ์ฉ wrapper๋CLAUDE.md์ ๋๋ค. - Contributor-facing ์ ์ฐจ์ ๊ฒ์ฆ ๊ธฐ๋์น๋
docs/contributor-guide/README.md์docs/contributor-guide/testing-and-quality.md๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ธํฉ๋๋ค. - ํ์ฌ ์ ํ ์ํ๋
docs/product/README.md, ์ง์ ๊ฒฝ๊ณ๋docs/product/known-limitations.md, ๋ฏธ๋ ์์๋docs/ROADMAP.md๊ฐ ์์ ํฉ๋๋ค.
- mise ๋๋ asdf:
.tool-versions๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฐํ์์ ๊ด๋ฆฌํ๋ ๋๊ตฌ - OS๋ณ Tauri 2 ์์คํ ์์กด์ฑ
๋ฒ์ ๊ธฐ์ค์ .tool-versions์
๋๋ค. Node.js, pnpm, Rust, direnv ๋ฒ์ ์ด ์ด ํ์ผ์ ๊ณ ์ ๋์ด ์์ต๋๋ค.
ํ ๋ฒ์ ์ค๋นํด ์ฃผ๋ ์ ์ ์คํฌ๋ฆฝํธ๋ ์์ต๋๋ค. ์๋๋ฅผ ๊ฐ๊ฐ ์ค๋นํ์ธ์.
mise install # asdf install๋ก ๋์ ํ ์ ์๊ณ , .tool-versions๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ต๋๋ค
pnpm installRust ๋ณด์กฐ ๋๊ตฌ๋ ํ์ํ ๋ ์ง์ ์ค์นํฉ๋๋ค (cargo install cargo-nextest cargo-llvm-cov cargo-deny). git hook ์ ์ค์นํ ๊ฒ์ด ์์ต๋๋ค.
JavaScript ์์กด์ฑ๋ง ๋ค์ ๋ฐ์ผ๋ ค๋ฉด ์๋ ๋ช ๋ น์ ์คํํฉ๋๋ค.
pnpm installPostgreSQL, MongoDB, MySQL, MariaDB, MSSQL, Oracle, Redis compose ์ปจํ
์ด๋๋ฅผ
๊ธฐ๋ํฉ๋๋ค. docker compose up -d๋ health check ํต๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์ผ๋ฏ๋ก,
์ฐ๊ฒฐํ๊ธฐ ์ ์ docker compose ps๋ก healthy ์ํ๋ฅผ ํ์ธํ์ธ์.
pnpm db:upMSSQL๊ณผ Oracle ์ปจํ ์ด๋๋ ์๋ ์ฐ๊ฒฐ๊ณผ explicit fixture load์ ์ฌ์ฉ๋ฉ๋๋ค. Oracle์ #905 focused catalog/query/cancel/tabular evidence๋ง ๊ฐ๊ณ , routine Runtime Happy Path smoke wiring์ #907 ์ ๊น์ง ๋ํ์ง ์์ต๋๋ค.
Fixture seeding CLI(pnpm db:seed)๋ ์์ต๋๋ค. ๋จ์ ์๋ pnpm fixtures:start
/ fixtures:stop์ ์ปจํ
์ด๋๋ฅผ ๊ธฐ๋ํ๊ณ ์ ์งํ ๋ฟ seed๋ฅผ ๋ฃ์ง ์์ต๋๋ค. ๊ฒ๋ค๊ฐ
fixtures:stop์ docker compose down -v๋ผ์ ๋ณผ๋ฅจ๊น์ง ์ง์๋๋ค. seed ๋ฐ์ดํฐ ์์ฒด๋
e2e/fixtures/์ ๊ทธ๋๋ก ์์ผ๋ฏ๋ก, ์ปจํ
์ด๋์ ์ง์ ๋ฃ๊ฑฐ๋
e2e/fixtures/seed-smoke.ts๋ก smoke seeding์ ์คํํ ์ ์์ต๋๋ค. DBMS๋ณ seed๋
e2e/fixtures/<dbms>/ ๋๋ ํฐ๋ฆฌ์ ๋ค์ด ์์ง๋ง, MSSQL๊ณผ Oracle์ seed๋ ๋๋ ํฐ๋ฆฌ๊ฐ
์๋๋ผ e2e/fixtures/seed.mssql.sql๊ณผ e2e/fixtures/seed.oracle.sql ํ์ผ์
๋๋ค.
pnpm db:up # ์ปจํ
์ด๋ ๊ธฐ๋ (docker compose up -d)
docker compose exec -T mariadb mysql -utestuser -ptestpass table_view_test \
< e2e/fixtures/mariadb/query/seed.sqlOracle์ ์๋น์ค๋ช
๊ธฐ๋ฐ XEPDB1 ๊ฒฝ๋ก๊ฐ ๊ธฐ์ค์
๋๋ค. #905 ๋ฒ์๋ catalog metadata,
SELECT/DML batch, cooperative cancel, tabular table-data query๊น์ง์
๋๋ค.
SID/TNS alias/wallet/TLS, raw admin, parser/completion, runtime smoke,
full PL/SQL semantics๋ ํ์์
๋๋ค.
๊ธฐ๋ณธ ์ ์ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| DBMS | Host | Port | User | Password | Database / service |
|---|---|---|---|---|---|
| PostgreSQL | localhost |
15432 |
testuser |
testpass |
table_view_test |
| MySQL | localhost |
13306 |
testuser |
testpass |
table_view_test |
| MongoDB | localhost |
37017 |
testuser |
testpass |
table_view_test |
| MariaDB | localhost |
23306 |
testuser |
testpass |
table_view_test |
| MSSQL | localhost |
14333 |
sa |
Testpass123! |
table_view_test |
| Oracle | localhost |
1521 |
testuser |
testpass |
XEPDB1 |
| Redis | localhost |
6379 |
0 |
PostgreSQL connection URL์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
postgresql://testuser:testpass@localhost:15432/table_view_test
MongoDB๋ auth source๋ก admin์ ์ฌ์ฉํฉ๋๋ค.
์ปจํ ์ด๋์ compose volume์ ํจ๊ป ์ ๋ฆฌํ๋ ค๋ฉด ์๋ ๋ช ๋ น์ ์คํํฉ๋๋ค.
pnpm db:downVite ํ๋ก ํธ์๋์ Tauri ๋ฐฑ์๋๋ฅผ ํจ๊ป ๋ก์ปฌ ๋๋ฒ๊ทธ ๋ชจ๋๋ก ์คํํฉ๋๋ค.
pnpm tauri dev์ฑ์ด ๋ถํ ๋๋ฉด ๋ฐ์ฒ ์ฐฝ์์ ์ฐ๊ฒฐ์ ๋ง๋ค๊ณ ๋๋ธํด๋ฆญ์ผ๋ก ์ํฌ์คํ์ด์ค์ ์ง์ ํฉ๋๋ค.
pnpm dev # Vite dev ์๋ฒ (Tauri ๋ฐ์คํฌํฑ ์์ด ๋ธ๋ผ์ฐ์ ์ ์ฉ)
pnpm build # TypeScript ํ์
์ฒดํฌ + Vite production build
pnpm lint # Biome (์ผ๋ฐ ๊ท์น) + ESLint (repo ๊ณ ์ ๊ฐ๋)
pnpm format # Biome ํฌ๋งท ์ ์ฉ
pnpm format:check # Biome ํฌ๋งท ๊ฒ์ฌ (์ฐ๊ธฐ ์์)
pnpm tauri dev # Tauri ๋ฐ์คํฌํฑ dev
pnpm tauri build # Tauri ๋ฐ์คํฌํฑ production buildParser WASM ์ฐ์ถ๋ฌผ์ src/lib/**/wasm/ ์๋์ ์ฒดํฌ์ธ๋์ด ์์ด ๋ก์ปฌ wasm-pack ์์ด๋ ์ฑ์ ๋น๋ํ ์ ์์ต๋๋ค. gzip ์ํ(SQL parser 120 KiB, Mongo parser 62 KiB)์ CI์ WASM Size Budget (non-blocking) job์ด wasm-pack์ผ๋ก ์๋ก ๋น๋ํด์ ์ฝ๋๋ค. ์ด job์ advisory๋ผ์ ์ํ์ ๋๊ฒจ๋ ๋จธ์ง๊ฐ ๋งํ์ง ์์ผ๋, ์ฐ์ถ๋ฌผ์ด๋ Rust parser crate๋ฅผ ๋ฐ๊พธ๋ฉด ๊ทธ job์ ์ง์ ํ์ธํ์ธ์. ๋ก์ปฌ์์ ์ฒดํฌ์ธ๋ ์ฐ์ถ๋ฌผ์ ์ฌ๋ ค๋ฉด ์๋ ๋ช
๋ น์ ์คํํฉ๋๋ค.
bash scripts/check-wasm-size.sh์๋ก ๋น๋ํ ์ฐ์ถ๋ฌผ์ ์ฌ๋ ค๋ฉด ์์ pnpm run build:sql-wasm && pnpm run build:mongosh-wasm์ ๋ถ์
๋๋ค. ์ด ๋ ๋ช
๋ น์ ์ฒดํฌ์ธ๋ ์ฐ์ถ๋ฌผ๊ณผ ๊ทธ ๋๋ ํฐ๋ฆฌ์ .gitignore๋ฅผ ๋ฎ์ด์ฐ๋ฏ๋ก ์์
ํธ๋ฆฌ์ ์ปค๋ฐํ์ง ์์ ๋ณ๊ฒฝ์ด ๋จ์ต๋๋ค. ์์ฐ ๊ทผ๊ฑฐ์ ์ฌํ ๋ช
๋ น์ scripts/check-wasm-size.sh ๋จธ๋ฆฌ๋ง์ ์ ํ ์์ต๋๋ค.
pnpm test
pnpm exec vitest run --coverage
pnpm test -- --coverage๋ ์ฐ์ง ์์ต๋๋ค. pnpm 10์--๋ฅผ ๊ทธ๋๋ก ๋๊ฒจ์vitest run -- --coverage๊ฐ ๋๊ณ , vitest๋--๋ค์ ์ค๋ ์ธ์๋ฅผ ํ๋๊ทธ๋ก ์ฝ์ง ์์ต๋๋ค. ๋ช ๋ น์ exit 0์ผ๋ก ๋๋์ง๋ง ์ปค๋ฒ๋ฆฌ์ง๋ ์์ง๋์ง ์์ต๋๋ค.
Rust crate๋ ๋ชจ๋ src-tauri/๋ฅผ root๋ก ํ๋ Cargo workspace์ ์ํฉ๋๋ค (#2161).
lib ํ
์คํธ๋ ๋ค์ ํ ์ค๋ก ๋๋ฉ๋๋ค.
cd src-tauri && cargo test --workspace --lib
--workspace๊ฐ member ์ ๋ถ๋ฅผ ํฌํจํ๋ฏ๋ก crate๊ฐ ๋์ด๋ ์ด ๋ช ๋ น์ ๊ทธ๋๋ก์ ๋๋ค. ํ crate๋ง ๋ณผ ๋๋cd src-tauri && cargo test -p table-view-core --lib์ฒ๋ผ-p๋ก ๊ณ ๋ฅด์ธ์. ํตํฉ ํ ์คํธ๊น์ง ํฌํจํ ๋ฆด๋ฆฌ์ค ์ ์์๋docs/contributor-guide/testing-and-quality.md์ Pre-Release Verification Gate Rust lane ยท Docker integration lane์ด SOT์ ๋๋ค.
pnpm db:up์ผ๋ก DB ์ปจํ
์ด๋๋ฅผ ๊ธฐ๋ํ ๋ค ์คํํฉ๋๋ค.
cd src-tauri && cargo test --test schema_integration --test query_integrationWebdriverIO + tauri-driver๋ก ์ค์ Tauri ์ฑ์ ๋ถํ ํด PostgreSQL, MySQL, MariaDB, MSSQL, SQLite, DuckDB, MongoDB, Redis, Valkey, Elasticsearch, OpenSearch runtime happy path๋ฅผ ๊ฒ์ฆํฉ๋๋ค. Oracle์ #905 focused runtime evidence๋ง ๊ฐ๊ณ routine smoke wiring์ #907 ์์ ์ ๋๋ค.
CI์์๋ ๋ณ๊ฒฝ ์์ญ๋งํผ ์คํ๋ฉ๋๋ค. .github/workflows/e2e-smoke.yml์
Runtime Happy Path job์ด e2e/scope-map.mjs๋ก PR์ ๋ณ๊ฒฝ ๊ฒฝ๋ก๋ฅผ spec ๋ถ๋ถ์งํฉ์
๋งคํํด ๊ทธ ๋ถ๋ถ์งํฉ๋ง ์คํํฉ๋๋ค. e2e์ ๋ฌด๊ดํ PR์ selected 0 specs๋ฅผ ์ถ๋ ฅํ๊ณ
green์ผ๋ก ๋๋๋ฉฐ, main push์ ์ผ๊ฐ schedule, workflow_dispatch๋ ์ ์ฒด๋ฅผ
์คํํฉ๋๋ค. e2e:full label์ label ์ด๋ฒคํธ๋ฅผ ์ฒญ์ทจํ์ง ์๊ธฐ ๋๋ฌธ์, ๋ถ์ธ ๋ค์ push
ํด์ผ ์ ์ฒด๊ฐ ์คํ๋ฉ๋๋ค. ์๋์ฒ๋ผ ์ง์ ๊ตฌ๋ํ๋ ๊ฒฝ๋ก๋ ๊ทธ๋๋ก ๋จ์ ์์ต๋๋ค.
pnpm db:up
pnpm tauri build --debug --no-bundle --config src-tauri/tauri.e2e.conf.json
TABLE_VIEW_TEST_DATA_DIR=/tmp/table-view-smoke \
E2E_SPEC_KEY=postgres pnpm exec tsx e2e/fixtures/seed-smoke.ts
TABLE_VIEW_TEST_DATA_DIR=/tmp/table-view-smoke \
pnpm exec wdio run wdio.smoke.conf.ts --spec e2e/smoke/postgres.spec.tspnpm db:up์ PostgreSQL/MySQL/MariaDB/MongoDB/MSSQL/Oracle/Redis๋ฅผ ์ค๋นํฉ๋๋ค.
ํค๋๋ฆฌ์ค Linux์์๋ WEBKIT_DISABLE_DMABUF_RENDERER=1,
WEBKIT_DISABLE_COMPOSITING_MODE=1, LIBGL_ALWAYS_SOFTWARE=1์ ์ง์ exportํด์ผ
ํฉ๋๋ค (#1261/#1293).
macOS์ Windows ๋ก์ปฌ ํ๊ฒฝ์์๋ ์ด ์ ์ฐจ๋ฅผ host-native๋ก ์คํํ ์ ์์ต๋๋ค.
tauri-driver๊ฐ Linux ์ ์ฉ์ด๋ผ์ ๋ ํ๋ซํผ์ host-native ๊ฒ์ฆ์ด ์คํ ๋ถ๊ฐ๋ผ๊ณ
ADR 0020์ด ํ์ ํ๊ธฐ
๋๋ฌธ์
๋๋ค. ADR 0020์ Superseded ์ํ์
๋๋ค. ๋ค๋ง ADR 0020์ ๋์ฒดํ
ADR 0044์๋ ์ด platform
ํ์ ์ ๋ค์ ์ ์ ๋ฌธ์ฅ์ด ์์ต๋๋ค.
๋ฐฐํฌ ํ์ ํ๋ซํผ์ macOS arm64์ Windows x86_64์
๋๋ค.
๋ฆด๋ฆฌ์ค ํ๊ทธ push, release workflow ์๋ ์คํ, draft release publish ์ ์๋
docs/contributor-guide/testing-and-quality.md์
Pre-Release Verification Gate๋ฅผ ๊ฐ์ commit SHA ๊ธฐ์ค์ผ๋ก ํต๊ณผ์ํต๋๋ค. ์ด gate๋
CI์ Runtime Happy Path๋ฅผ ํ์ ์๊ฒฉ ์ฆ๊ฑฐ๋ก ๋ณด๊ณ , deferred check๋ฅผ ๋ช
์ํ๋ฉฐ,
fixture-only evidence๋ง์ผ๋ก live support claim์ ๋ํ๋ ๊ฒ์ ๊ธ์งํฉ๋๋ค.
pnpm build
pnpm tauri build --debugmacOS debug ์ฑ ๋ฒ๋ค์ src-tauri/target/debug/bundle/macos/Table View.app์ ์์ฑ๋ฉ๋๋ค. ๋ฐฐํฌ์ฉ ํจํค์ง ์ํ์ ๋จ์ ๊ณํ์ docs/PLAN.md, docs/ROADMAP.md, docs/product/known-limitations.md๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ธํฉ๋๋ค.
๋ฆด๋ฆฌ์ค ๋
ธํธ์ ์ง์ ๋ฒ์ ์์ฝ๊ณผ fixture/smoke coverage๋
docs/contributor-guide/release/release-notes-support-matrix.md๋ฅผ
๊ธฐ์ค์ผ๋ก ์์ฑํฉ๋๋ค.
๋ฒ์ /tag ๊ฒฐ์ , package artifact ๊ธฐ๋๊ฐ, post-release verification๊ณผ rollback note๋
docs/contributor-guide/release/versioning-and-artifacts.md๋ฅผ
ํ์ธํฉ๋๋ค.
draft ๋ฆด๋ฆฌ์ค๋ฅผ ์์ผ๋ก publishํ๋ฉด .github/workflows/release.yml์
update-homebrew-tap job์ด Felix-LeeSM/homebrew-table-view tap์
Casks/table-view.rb๋ฅผ ๊ฐฑ์ ํฉ๋๋ค.
brew tap Felix-LeeSM/table-view
brew install --cask table-view์ค์น ๋ฐฉ๋ฒ๊ณผ ์๋ ๊ฐฑ์ ์ด ๋์ํ์ง ์๋ ๊ฒฝ์ฐ, ๊ทธ๋ ๋ฐ์์ผ ํ๋ ์๋ ์ ์ฐจ๋
docs/contributor-guide/release/homebrew-cask.md๋ฅผ ํ์ธํ์ธ์.