Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ env:
VITE_BUILDERBOT: "0"
VITE_FEEDBACK: "0"
VITE_MANAGED_CONNECTIONS: "0"
VITE_TELEMETRY_ENFORCED: "0"
VITE_VOICE_DICTATION: "0"
VITE_BYO_KEY_PROVIDERS: "1"
VITE_SECURITY_ML: "0"
Expand Down
35 changes: 10 additions & 25 deletions justfile
Original file line number Diff line number Diff line change
Expand Up @@ -213,19 +213,26 @@ _tauri-check-unix:
_tauri-check-windows:
just tauri-check-windows

# Run the Rust plugin tests with external sidecars disabled.
# Run the Rust plugin and app-crate telemetry tests with external sidecars
# disabled. The telemetry lanes filter the app lib's tests by name — the
# `commands::telemetry` module path matches wholesale — and run twice because
# the `block-telemetry-enforced` feature swaps in the enforced-consent tests.
tauri-test:
just _tauri-test-{{ os_family() }}

[unix]
_tauri-test-unix:
just _tauri-cargo-unix test -p tauri-plugin-berdctl --features server
just _tauri-cargo-unix test -p berdctl
just _tauri-cargo-unix test --lib telemetry
just _tauri-cargo-unix test --lib --features block-telemetry-enforced telemetry

[windows]
_tauri-test-windows:
just _tauri-cargo-windows test -p tauri-plugin-berdctl --features server
just _tauri-cargo-windows test -p berdctl
just _tauri-cargo-windows test --lib telemetry
just _tauri-cargo-windows test --lib --features block-telemetry-enforced telemetry

# Run the local CI gate.
ci: release-version-check check tauri-fmt-check tauri-check tauri-test clippy test release-scripts-test build
Expand Down Expand Up @@ -334,21 +341,10 @@ _bundle-unix:
VITE_FEEDBACK="${VITE_FEEDBACK:-0}" CARGO_TARGET_DIR="$TAURI_CARGO_TARGET_DIR" ./scripts/prepare-berdctl-sidecar.sh
./scripts/prepare-catch-sidecar.sh

CARGO_FEATURES=(berdctl)
[[ "${VITE_AGENT_TOOLS:-0}" == "1" ]] && CARGO_FEATURES+=(block-agent-tools)
[[ "${VITE_AUTOMATIONS:-0}" == "1" ]] && CARGO_FEATURES+=(block-automations)
[[ "${VITE_BUILDERBOT:-0}" == "1" ]] && CARGO_FEATURES+=(block-builderbot)
[[ "${VITE_FEEDBACK:-0}" == "1" ]] && CARGO_FEATURES+=(block-feedback)
[[ "${VITE_MANAGED_CONNECTIONS:-0}" == "1" ]] && CARGO_FEATURES+=(block-managed-connections)
if [[ "${VITE_VOICE_DICTATION:-0}" == "1" ]]; then
CARGO_FEATURES+=(block-voice-dictation)
else
CARGO_FEATURES+=(no-voice-dictation)
fi
CARGO_FEATURES_CSV="$(./scripts/block-feature-gates.sh berdctl)"
if [[ "${VITE_AGENT_TOOLS:-0}" == "1" ]]; then
./scripts/prepare-bb-cli-resource.sh
fi
CARGO_FEATURES_CSV="$(IFS=,; echo "${CARGO_FEATURES[*]}")"

# Derive a git-based version so non-release bundles don't ship the 0.1.0
# placeholder. Injected via a temp --config overlay to keep the tree clean.
Expand Down Expand Up @@ -424,21 +420,10 @@ _bundle-debug-unix:
VITE_FEEDBACK="${VITE_FEEDBACK:-0}" CARGO_TARGET_DIR="$TAURI_CARGO_TARGET_DIR" ./scripts/prepare-berdctl-sidecar.sh
./scripts/prepare-catch-sidecar.sh

CARGO_FEATURES=(berdctl devtools)
[[ "${VITE_AGENT_TOOLS:-0}" == "1" ]] && CARGO_FEATURES+=(block-agent-tools)
[[ "${VITE_AUTOMATIONS:-0}" == "1" ]] && CARGO_FEATURES+=(block-automations)
[[ "${VITE_BUILDERBOT:-0}" == "1" ]] && CARGO_FEATURES+=(block-builderbot)
[[ "${VITE_FEEDBACK:-0}" == "1" ]] && CARGO_FEATURES+=(block-feedback)
[[ "${VITE_MANAGED_CONNECTIONS:-0}" == "1" ]] && CARGO_FEATURES+=(block-managed-connections)
if [[ "${VITE_VOICE_DICTATION:-0}" == "1" ]]; then
CARGO_FEATURES+=(block-voice-dictation)
else
CARGO_FEATURES+=(no-voice-dictation)
fi
CARGO_FEATURES_CSV="$(./scripts/block-feature-gates.sh berdctl,devtools)"
if [[ "${VITE_AGENT_TOOLS:-0}" == "1" ]]; then
./scripts/prepare-bb-cli-resource.sh
fi
CARGO_FEATURES_CSV="$(IFS=,; echo "${CARGO_FEATURES[*]}")"

# Use a temporary config overlay so normal release bundles keep devtools
# disabled, and fold in the git-derived version so the bundle doesn't ship
Expand Down
7 changes: 7 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,13 @@
"@agentclientprotocol/sdk": "^0.19.0",
"@daypicker/react": "^10.0.1",
"@mcp-ui/client": "7.1.1",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/api-logs": "0.221.0",
"@opentelemetry/core": "2.10.0",
"@opentelemetry/otlp-transformer": "0.221.0",
"@opentelemetry/resources": "2.10.0",
"@opentelemetry/sdk-logs": "0.221.0",
"@opentelemetry/semantic-conventions": "^1.41.0",
"@radix-ui/react-accordion": "^1.2.20",
"@radix-ui/react-alert-dialog": "^1.1.23",
"@radix-ui/react-aspect-ratio": "^1.1.15",
Expand Down
79 changes: 78 additions & 1 deletion pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions scripts/block-feature-gates.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
#!/usr/bin/env bash
# Resolve the six renderer build gates to their matching Tauri Cargo features.
# Resolve the seven renderer build gates to their matching Tauri Cargo features.
set -euo pipefail

base_features="${1:-}"
features=()
[[ -n "$base_features" ]] && IFS=',' read -r -a features <<< "$base_features"

for name in VITE_AGENT_TOOLS VITE_AUTOMATIONS VITE_BUILDERBOT VITE_FEEDBACK VITE_MANAGED_CONNECTIONS VITE_VOICE_DICTATION; do
for name in VITE_AGENT_TOOLS VITE_AUTOMATIONS VITE_BUILDERBOT VITE_FEEDBACK VITE_MANAGED_CONNECTIONS VITE_TELEMETRY_ENFORCED VITE_VOICE_DICTATION; do
value="${!name:-0}"
if [[ "$value" != "0" && "$value" != "1" ]]; then
echo "$name must be 0 or 1 (got: $value)" >&2
Expand All @@ -19,6 +19,7 @@ done
[[ "${VITE_BUILDERBOT:-0}" == "1" ]] && features+=(block-builderbot)
[[ "${VITE_FEEDBACK:-0}" == "1" ]] && features+=(block-feedback)
[[ "${VITE_MANAGED_CONNECTIONS:-0}" == "1" ]] && features+=(block-managed-connections)
[[ "${VITE_TELEMETRY_ENFORCED:-0}" == "1" ]] && features+=(block-telemetry-enforced)
if [[ "${VITE_VOICE_DICTATION:-0}" == "1" ]]; then
features+=(block-voice-dictation)
else
Expand Down
1 change: 1 addition & 0 deletions scripts/build_linux_docker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ vite_env_names=(
VITE_BUILDERBOT
VITE_FEEDBACK
VITE_MANAGED_CONNECTIONS
VITE_TELEMETRY_ENFORCED
VITE_VOICE_DICTATION
VITE_BYO_KEY_PROVIDERS
VITE_SECURITY_ML
Expand Down
15 changes: 13 additions & 2 deletions scripts/release/build-macos.sh
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,9 @@ VITE_AUTOMATIONS_VALUE="${VITE_AUTOMATIONS:-0}"
VITE_BUILDERBOT_VALUE="${VITE_BUILDERBOT:-0}"
VITE_FEEDBACK_VALUE="${VITE_FEEDBACK:-0}"
VITE_MANAGED_CONNECTIONS_VALUE="${VITE_MANAGED_CONNECTIONS:-0}"
# Managed internal distributions force telemetry consent ON and hide the
# settings toggle; public builds leave consent to the user (default OFF).
VITE_TELEMETRY_ENFORCED_VALUE="${VITE_TELEMETRY_ENFORCED:-0}"
VITE_VOICE_DICTATION_VALUE="${VITE_VOICE_DICTATION:-0}"
VITE_BYO_KEY_PROVIDERS_VALUE="${VITE_BYO_KEY_PROVIDERS:-1}"
# Public builds have no external security classifier. Internal distributions may
Expand Down Expand Up @@ -140,6 +143,9 @@ set_vite_env() {
VITE_MANAGED_CONNECTIONS)
VITE_MANAGED_CONNECTIONS_VALUE="$value"
;;
VITE_TELEMETRY_ENFORCED)
VITE_TELEMETRY_ENFORCED_VALUE="$value"
;;
VITE_VOICE_DICTATION)
VITE_VOICE_DICTATION_VALUE="$value"
;;
Expand Down Expand Up @@ -395,17 +401,21 @@ if [[ "$BUILD_KIND" == "custom" ]]; then
fi


# Resolve the six independent Block-service product gates into matching
# Resolve the seven independent Block-service product gates into matching
# renderer and backend/package gates. Values are positive opt-ins: absent is
# public-off and no runtime config can revive a build-disabled family.
for value in "$VITE_AGENT_TOOLS_VALUE" "$VITE_AUTOMATIONS_VALUE" "$VITE_BUILDERBOT_VALUE" "$VITE_FEEDBACK_VALUE" "$VITE_MANAGED_CONNECTIONS_VALUE" "$VITE_VOICE_DICTATION_VALUE"; do
for value in "$VITE_AGENT_TOOLS_VALUE" "$VITE_AUTOMATIONS_VALUE" "$VITE_BUILDERBOT_VALUE" "$VITE_FEEDBACK_VALUE" "$VITE_MANAGED_CONNECTIONS_VALUE" "$VITE_TELEMETRY_ENFORCED_VALUE" "$VITE_VOICE_DICTATION_VALUE"; do
[[ "$value" == "0" || "$value" == "1" ]] || { echo "Block-service feature gates must be 0 or 1" >&2; exit 1; }
done
[[ "$VITE_AGENT_TOOLS_VALUE" == "1" ]] && CARGO_FEATURES="$CARGO_FEATURES,block-agent-tools"
[[ "$VITE_AUTOMATIONS_VALUE" == "1" ]] && CARGO_FEATURES="$CARGO_FEATURES,block-automations"
[[ "$VITE_BUILDERBOT_VALUE" == "1" ]] && CARGO_FEATURES="$CARGO_FEATURES,block-builderbot"
[[ "$VITE_FEEDBACK_VALUE" == "1" ]] && CARGO_FEATURES="$CARGO_FEATURES,block-feedback"
[[ "$VITE_MANAGED_CONNECTIONS_VALUE" == "1" ]] && CARGO_FEATURES="$CARGO_FEATURES,block-managed-connections"
# The renderer flag and the Cargo feature must move together: the flag skips
# the user setting in Gate A and hides the toggle, the feature does the same
# for the native Gate B in export_otel_logs.
[[ "$VITE_TELEMETRY_ENFORCED_VALUE" == "1" ]] && CARGO_FEATURES="$CARGO_FEATURES,block-telemetry-enforced"
if [[ "$VITE_VOICE_DICTATION_VALUE" == "1" ]]; then
CARGO_FEATURES="$CARGO_FEATURES,block-voice-dictation"
else
Expand Down Expand Up @@ -478,6 +488,7 @@ env \
VITE_BUILDERBOT="$VITE_BUILDERBOT_VALUE" \
VITE_FEEDBACK="$VITE_FEEDBACK_VALUE" \
VITE_MANAGED_CONNECTIONS="$VITE_MANAGED_CONNECTIONS_VALUE" \
VITE_TELEMETRY_ENFORCED="$VITE_TELEMETRY_ENFORCED_VALUE" \
VITE_VOICE_DICTATION="$VITE_VOICE_DICTATION_VALUE" \
VITE_BYO_KEY_PROVIDERS="$VITE_BYO_KEY_PROVIDERS_VALUE" \
VITE_SECURITY_ML="$VITE_SECURITY_ML_VALUE" \
Expand Down
Loading