From 85602159f48466b371ecd8f35657c1d4837ef5ad Mon Sep 17 00:00:00 2001 From: Priec Date: Fri, 14 Aug 2026 07:45:36 +0200 Subject: [PATCH] fixing pane in client for accounting + debug optimizations to run --- .cargo/config.toml | 12 ++++++++++++ .gitignore | 1 + Cargo.toml | 12 ++++++++++++ README.md | 14 ++++++++++++-- client | 2 +- common/proto/tables_data.proto | 6 ++++++ common/src/proto/descriptor.bin | Bin 181722 -> 182105 bytes common/src/proto/komp_ac.tables_data.rs | 6 ++++++ flake.nix | 4 ++++ server | 2 +- 10 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 .cargo/config.toml diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..b8728fc8 --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,12 @@ +# Faster linking for local dev rebuilds. +# Uses lld instead of the default bfd linker; requires `lld` from the flake +# devShell. Run `direnv reload` after changing flake.nix. +[target.x86_64-unknown-linux-gnu] +rustflags = ["-C", "link-arg=-fuse-ld=lld"] + +# Build first and run the resulting binary outside Cargo. This lets client, +# server, and test builds share the target cache without a long-lived +# `cargo run` process holding up another Cargo invocation. +[alias] +watch-client = ["watch", "--delay", "0.1", "--ignore", "**/common/src/proto/**", "--exec", "build --package client", "--shell", "workspace_manifest=$(cargo locate-project --workspace --message-format plain); exec ${workspace_manifest%Cargo.toml}target/debug/client client"] +watch-server = ["watch", "--why", "--delay", "0.1", "--ignore", "**/common/src/proto/**", "--exec", "build --package server", "--shell", "workspace_manifest=$(cargo locate-project --workspace --message-format plain); exec ${workspace_manifest%Cargo.toml}target/debug/server server"] diff --git a/.gitignore b/.gitignore index 51745b07..2ba94e12 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ tui-pages-cli/ tui-canvas-validation-core/ WEBSITE.md mutants*/ +AGENT_TESTING_NOTES.md diff --git a/Cargo.toml b/Cargo.toml index 0963c8a0..6808fe25 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,3 +63,15 @@ common = { path = "./common" } [patch.crates-io] tui-pages = { path = "tui-pages" } tui-canvas = { path = "tui-canvas" } + +# Fast dev loop: keep both workspace crates and dependencies cheap to compile. +# Backtraces still contain symbol names, but omit source line information. +[profile.dev] +opt-level = 0 +debug = 0 +incremental = true +overflow-checks = true + +[profile.dev.package."*"] +opt-level = 0 +debug = false diff --git a/README.md b/README.md index 1941fde6..70549ae5 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,18 @@ libraries. Server and client: ``` -cargo watch --why -x 'run --package server -- server' -cargo watch -x 'run --package client -- client' +cargo watch-server +cargo watch-client +``` + +These aliases only watch each application's local dependency tree. They build +through Cargo, then run the binary separately so concurrent tests can reuse the +same build cache. + +To connect a client to a second server instance, override its gRPC endpoint: + +``` +GRPC_ENDPOINT='http://[::1]:50052' cargo watch-client ``` Client with tracing: diff --git a/client b/client index f8bc80a4..75221c3a 160000 --- a/client +++ b/client @@ -1 +1 @@ -Subproject commit f8bc80a415138e4eb5cb9b70523a9556250d21d4 +Subproject commit 75221c3adb22e3c6d8da59f9a93d5797d49bf7df diff --git a/common/proto/tables_data.proto b/common/proto/tables_data.proto index ba453903..a27afb5f 100644 --- a/common/proto/tables_data.proto +++ b/common/proto/tables_data.proto @@ -165,6 +165,9 @@ message PostTableDataResponse { // Revision committed for the inserted row. int64 row_revision = 4; + + // Journal created or updated by automatic accounting, when applicable. + optional int64 journal_id = 5; } // One row in a bulk insert request. @@ -251,6 +254,9 @@ message PutTableDataResponse { // Revision committed for the updated row. int64 row_revision = 4; + + // Journal updated by automatic accounting, when applicable. + optional int64 journal_id = 5; } message TableUpdateImpactRequest { diff --git a/common/src/proto/descriptor.bin b/common/src/proto/descriptor.bin index aaf51e5f1dbaf06a5a4798a1a3477caf8b8a82c2..d840f0b63e59066b3b8a34ea7322876661c4491c 100644 GIT binary patch delta 5425 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 F^M5G;R9FB2 diff --git a/common/src/proto/komp_ac.tables_data.rs b/common/src/proto/komp_ac.tables_data.rs index 4475787c..7a924291 100644 --- a/common/src/proto/komp_ac.tables_data.rs +++ b/common/src/proto/komp_ac.tables_data.rs @@ -72,6 +72,9 @@ pub struct PostTableDataResponse { /// Revision committed for the inserted row. #[prost(int64, tag = "4")] pub row_revision: i64, + /// Journal created or updated by automatic accounting, when applicable. + #[prost(int64, optional, tag = "5")] + pub journal_id: ::core::option::Option, } /// One row in a bulk insert request. #[derive(Clone, PartialEq, ::prost::Message)] @@ -181,6 +184,9 @@ pub struct PutTableDataResponse { /// Revision committed for the updated row. #[prost(int64, tag = "4")] pub row_revision: i64, + /// Journal updated by automatic accounting, when applicable. + #[prost(int64, optional, tag = "5")] + pub journal_id: ::core::option::Option, } #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)] pub struct TableUpdateImpactRequest { diff --git a/flake.nix b/flake.nix index 9642b839..5c0adb5d 100644 --- a/flake.nix +++ b/flake.nix @@ -13,6 +13,8 @@ in { devShells.default = pkgs.mkShell { + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath [ pkgs.openssl ]; + buildInputs = with pkgs; [ mermaid-cli # Rust toolchain @@ -34,6 +36,8 @@ # C build tools (for your linker issue) gcc binutils + # Fast linker (lld) for quicker dev rebuilds + lld pkg-config # OpenSSL for crypto dependencies diff --git a/server b/server index f83ebc80..f57088e5 160000 --- a/server +++ b/server @@ -1 +1 @@ -Subproject commit f83ebc802a1847a42bf2b193b7e2f31e8d5c5a74 +Subproject commit f57088e548dd3afb14f018697a12e82b13863b42