Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Local analysis tool for detecting process differences between variants.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗Desktop app built with Tauri, SvelteKit and TypeScript.
Install dependencies first with pnpm install.
pnpm tauri dev # desktop app on the default port (1420)
pnpm dev:port 1430 # desktop app on another port, with per-branch app data
pnpm dev # frontend only, in the browser
pnpm tauri build # release binary and installers in src-tauri/target/release/bundle, dev identifier
pnpm tauri build --config src-tauri/tauri.release.conf.json # same, with the release identifier
pnpm tauri build --debug # debug build in src-tauri/target/debug
pnpm release minor # or patch, major, x.y.z: bump, commit, tag, push
git checkout v0.2.0 && pnpm release:mac # once CI has built Windows into the draft
gh release edit v0.2.0 --draft=false --latest # go live
The tag push builds the Windows installer into a draft release (.github/workflows/build.yml). pnpm release:mac builds Apple Silicon locally, adds it to the draft's latest.json and uploads it. Publishing the draft is what the download page and the in-app updater see. pnpm release:mac needs the updater key in ~/.tauri/prodiff.key (or TAURI_SIGNING_PRIVATE_KEY) and TAURI_SIGNING_PRIVATE_KEY_PASSWORD.
The download page is web/index.html, deployed to GitHub Pages by .github/workflows/pages.yml when web/ changes on main.
pnpm db:generate add_group_notes # after editing src/lib/db/schema.ts
drizzle-kit compares schema.ts with its last snapshot and writes src/lib/db/migrations/<NNNN>_<name>.sql plus the files under meta/. Review the SQL and commit all of it. pnpm drizzle-kit generate --custom --name <name> gives an empty migration for SQL drizzle-kit cannot infer, such as reshaping JSON in a column.
The app runs pending migrations at startup, and pnpm seed runs them before writing. Never edit or delete a migration that has shipped; add a new one.
pnpm seed # seed every log in scripts/seed_log/
pnpm seed road_traffic_fine_10k # seed one log by its slug
pnpm seed --app-id com.nicoabarca.prodiff.dev # seed the app data of `pnpm tauri dev`
pnpm seed --app-data-dir /path/to/app-data # seed any app data directory
By default the seed writes to the current branch's app data (com.nicoabarca.prodiff.dev-<branch>), which is what pnpm dev:port opens. Reload the app if it is open. The first run compiles the seed-project binary in release mode, which takes a few minutes.
Each seed log is a pair of files in scripts/seed_log/: <slug>.csv holds the Event Log and <slug>.json holds its manifest.
{
"name": "Road traffic fine 10k (seed)",
"columns": [
{
"name": "Case ID",
"role": "case_id",
"scope": "case",
"caseResolution": "constant",
"type": "string"
},
{ "name": "Activity", "role": "activity_name", "scope": "event", "type": "string" }
],
"hiddenColumns": ["Variant"],
"groups": [
{
"name": "Not dismissed",
"color": "group-2",
"filters": [
{ "kind": "attribute", "column": "dismissal", "mode": "mandatory", "values": ["NIL"] }
]
}
]
}
columns is the Column Mapping. It must map every column in the CSV header exactly once.hiddenColumns lists the columns hidden from the event data table, the Filter editor and the tree's attribute choices.groups is optional. Each Group is applied in array order, which is also its position. color is optional and defaults to the palette color for that position. filters is a Filter List in the same JSON the app stores. case_not_in_group is not supported.To add a seed log, drop a new CSV and manifest pair into scripts/seed_log/. No code changes are needed.
Seeding a slug again resets its Project: the files are replaced, and its Groups, comparison and tree settings are deleted. If the import or any Group fails, the seed reports the error and leaves the previous Project as it was.
pnpm test # run Vitest once
pnpm test:watch # watch mode
pnpm test src/lib/filters # only tests under a path
pnpm check # type-check the app and the e2e suite
cargo test --manifest-path src-tauri/Cargo.toml # all tests
cargo test --manifest-path src-tauri/Cargo.toml duration # tests whose name contains "duration"
pnpm e2e # all specs against the debug e2e binary
pnpm e2e --spec e2e/specs/smoke.e2e.ts # one spec file
pnpm e2e --mochaOpts.grep "empty state" # tests whose name matches
pnpm e2e:release # all specs against a freshly built release binary
pnpm e2e:build # force a debug e2e rebuild after code changes
pnpm e2e builds the debug binary only when it is missing, so run pnpm e2e:build after changing Rust or frontend code. See docs/adr/0007-e2e-tests-with-embedded-webdriver.md.
Frontend tests (pnpm test) run in jsdom and write nothing outside Vitest's cache in node_modules/.vite/vitest.
Rust tests (cargo test):
| Path | What happens |
|---|---|
src-tauri/target/debug/ | Test binaries are compiled here, shared with pnpm tauri dev. |
$TMPDIR/kiara-<name>.csv | CSV fixtures written by the timestamp parsing tests. Overwritten, never deleted. |
E2E tests (pnpm e2e, pnpm e2e:release, pnpm e2e:build):
| Path | What happens |
|---|---|
src-tauri/target/e2e/debug/ and src-tauri/target/e2e/release/ | E2E binaries are built here. Debug is built when missing or on e2e:build; release is rebuilt on every e2e:release. |
build/ and .svelte-kit/ | Overwritten by the frontend build that runs before each e2e binary build. |
~/Library/Application Support/com.nicoabarca.prodiff.e2e/ | Deleted at the start of every run, before the app launches. The app recreates prodiff.db in it (and projects/ once a spec creates a Project); all spec files in the run share them, and they stay until the next run. |
e2e/.artifacts/<suite>-<test>.png | Screenshot saved when a test fails. Never deleted by the suite; gitignored. |
The e2e suite never touches the app data of pnpm tauri dev (com.nicoabarca.prodiff.dev) or of pnpm dev:port (com.nicoabarca.prodiff.dev-<branch>).
VS Code + Svelte + Tauri + rust-analyzer.