diff --git a/.forgejo/workflows/email.yml b/.forgejo/workflows/email.yml new file mode 100644 index 0000000..08f43d2 --- /dev/null +++ b/.forgejo/workflows/email.yml @@ -0,0 +1,361 @@ +name: email + +# Phase 0.3 of the nigig-email remediation plan. +# +# Before this file existed, nigig-email had NO CI of any kind. That is +# how a binary with unbalanced braces reached main and stayed there: +# `cargo check -p nigig-email` failed on main while `--lib` passed, so +# the library was fine and the BINARY had never compiled once. Nobody +# had ever run the crate standalone. +# +# It is also how four unused dependencies survived, one of them +# robius-location -- the exact dependency SMS Phase B removed from three +# other crates because it pulls polkit/gio/glib and two RUSTSEC +# advisories in for code that is never called. +# +# Scope note: this crate is a UI shell over nigig-core::email_account, +# email_store and email_worker. The domain logic lives in nigig-core and +# is host-testable; the SMTP transport is not testable here at all +# (no live server in CI), so the tests that matter are the pure ones and +# this workflow gates those plus compilation of both targets. + +on: + push: + paths: + - 'crates/apps/nigig-email/**' + - 'crates/nigig-core/src/email_account.rs' + - 'crates/nigig-core/src/email_store.rs' + - 'crates/nigig-core/src/email_worker.rs' + - 'Cargo.lock' + - 'Cargo.toml' + - 'rust-toolchain.toml' + - '.forgejo/workflows/email.yml' + pull_request: + paths: + - 'crates/apps/nigig-email/**' + - 'crates/nigig-core/src/email_account.rs' + - 'crates/nigig-core/src/email_store.rs' + - 'crates/nigig-core/src/email_worker.rs' + - 'Cargo.lock' + - 'Cargo.toml' + - 'rust-toolchain.toml' + - '.forgejo/workflows/email.yml' + +jobs: + # --------------------------------------------------------------------- + # Source-scanning gates. No toolchain needed, so they run first and + # fail fast. + # --------------------------------------------------------------------- + gates: + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + + # S2 of the assessment. SmtpConfig carries a plaintext password and + # derives Serialize, so anything that reuses it for storage leaks + # the credential. EmailAccount is the persistable half and must + # never grow a password field. + # + # There is a unit test asserting the serialised account contains + # neither the secret nor a field named "password"; this is the + # cheaper structural check that catches the field being added even + # if someone deletes the test. + - name: The persistable account type must not carry a password + run: | + set -euo pipefail + # Look only at the EmailAccount struct body. + body=$(sed -n '/^pub struct EmailAccount {/,/^}/p' \ + crates/nigig-core/src/email_account.rs) + if echo "$body" | grep -nE '^[[:space:]]*pub[[:space:]]+password'; then + echo + echo "ERROR: EmailAccount declares a password field." + echo "That type is written to disk. The secret is returned" + echo "separately by AccountDraft::validate and held in memory" + echo "for the session only. Persisting it needs the platform" + echo "keystore first (plan item A1 / C1f)." + exit 1 + fi + echo "OK" + + # B3. `port.parse().unwrap_or(587)` silently rewrote a typo'd port, + # and because the port selects the transport (465 implicit TLS vs + # 587 STARTTLS) that silently changed the security posture too. + # AccountDraft::validate now rejects a malformed port instead. + - name: A malformed port must not silently become a default + run: | + set -euo pipefail + # Exclude comment lines: email_account.rs documents the old + # behaviour by quoting it, and a gate that trips on its own + # rationale is a gate nobody keeps. + if grep -rnE 'parse\(\)[[:space:]]*\.unwrap_or\(587\)' \ + crates/apps/nigig-email/src \ + crates/nigig-core/src/email_account.rs \ + crates/nigig-core/src/email_store.rs \ + | grep -vE '^[^:]*:[0-9]*:[[:space:]]*(//|/\*|\*|///)'; then + echo + echo "ERROR: a port is being parsed with unwrap_or(587)." + echo "That turns '465x' into 587 and switches the transport" + echo "from implicit TLS to STARTTLS without telling the user." + echo "Return AccountError::PortInvalid instead." + exit 1 + fi + echo "OK" + + # A3, the byte-offset slicing class of bug. `&s[..n]` panics when n + # is not a UTF-8 boundary; one inbound message containing emoji or + # non-Latin text took down the whole SMS conversation list on every + # frame until it was deleted. Email bodies are equally untrusted -- + # more so, they arrive with arbitrary MIME -- and email_store's + # preview_line runs per visible row inside draw_walk. + # + # The SMS crates carry the same gate. This one is a hard zero + # because the email code has never had such a slice. + - name: No byte-offset string slicing in the email text helpers + run: | + set -euo pipefail + PATTERN='[A-Za-z_][A-Za-z0-9_]*\[(\.\.=?[A-Za-z0-9_]+|[A-Za-z0-9_]+\.\.)[A-Za-z0-9_]*\]' + # flat[..idx] in preview_line is proven safe -- idx comes from + # char_indices() -- and carries a comment saying so. Exclude it + # by line content rather than by muting the whole file. + hits=$(grep -rnE --include='*.rs' "$PATTERN" \ + crates/apps/nigig-email/src \ + crates/nigig-core/src/email_store.rs \ + crates/nigig-core/src/email_account.rs \ + | grep -vE '^[^:]*:[0-9]*:[[:space:]]*(//|/\*|\*)' \ + | grep -v 'flat\[\.\.idx\]' || true) + if [ -n "$hits" ]; then + echo "$hits" + echo + echo "ERROR: byte-offset slice(s) above. These panic when the" + echo "offset is not a char boundary, which any email body" + echo "containing emoji or non-Latin text will produce. Use" + echo "char_indices() to find a real boundary first." + exit 1 + fi + echo "OK" + + # The inbox list is populated from email_store::sample_thread() + # because no receive path exists yet (finding A1, plan C1). That is + # acceptable as scaffolding and unacceptable as a shipped state, so + # keep it visible: the name must stay `sample_`-prefixed and must + # not spread beyond the one call site. + - name: Development sample data must stay obvious and contained + run: | + set -euo pipefail + # Count CALL sites, not the import line. + count=$(grep -rn 'sample_thread()' --include='*.rs' \ + crates/apps/nigig-email/src | wc -l) + if [ "$count" -gt 1 ]; then + grep -rn 'sample_thread' --include='*.rs' crates/apps/nigig-email/src + echo + echo "ERROR: sample_thread() is referenced $count times in the" + echo "UI. It is placeholder data for one call site until a real" + echo "fetch lands (plan C1/C4b). Spreading it makes the" + echo "placeholder load-bearing." + exit 1 + fi + echo "OK" + + # --------------------------------------------------------------------- + # The email domain logic. Pure, host-testable, no display and no + # network -- this is the job that can actually prove something. + # --------------------------------------------------------------------- + email-domain: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + + # nigig-core pulls sqlite and the matrix client. + - name: Install native dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -y -qq \ + pkg-config libssl-dev libsqlite3-dev + + # NOT actions/setup-rust@v1 -- that action does not exist on this + # instance's registry and fails the job in "Set up job" before any + # step runs. See .forgejo/RUNNER.md. + - name: Install the declared toolchain + run: | + set -e + version="$(sed -n 's/^[[:space:]]*channel[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' \ + rust-toolchain.toml | head -n 1)" + curl --fail --location --proto '=https' --tlsv1.2 https://sh.rustup.rs -o /tmp/rustup-init + chmod 700 /tmp/rustup-init + /tmp/rustup-init -y --profile minimal --default-toolchain "$version" \ + --component rustfmt --component clippy --no-modify-path + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + + - name: Email domain tests + run: cargo test --locked -p nigig-core --lib email_ + + # A floor, not a ratchet: these tests are cheap, pure, and the + # number should only go up. 38 today. + - name: The email domain test suite must not shrink + run: | + set -euo pipefail + FLOOR=38 + out="$(cargo test --locked -p nigig-core --lib email_ 2>&1)" + echo "$out" | grep -E '^test result:' || true + n=$(echo "$out" | grep -E '^test result:' \ + | sed -n 's/.* \([0-9]\+\) passed.*/\1/p' \ + | awk '{s+=$1} END {print s+0}') + echo "email domain tests: $n (floor $FLOOR)" + if [ "$n" -lt "$FLOOR" ]; then + echo "ERROR: $n < $FLOOR. Tests were deleted or stopped running." + exit 1 + fi + echo "OK" + + # --------------------------------------------------------------------- + # The UI crate. Pulls the whole Makepad stack, so it is the slow job + # and needs the GUI system libraries. + # --------------------------------------------------------------------- + nigig-email: + runs-on: ubuntu-latest + timeout-minutes: 60 + steps: + - uses: actions/checkout@v4 + + - name: Install native dependencies + run: | + sudo apt-get update -qq + sudo apt-get install -y -qq \ + pkg-config libwayland-dev libxcursor-dev libxrandr-dev \ + libxi-dev libx11-dev libgl1-mesa-dev libasound2-dev \ + libglib2.0-dev libssl-dev libsqlite3-dev libudev-dev \ + libpulse-dev libxkbcommon-dev + + - name: Install the declared toolchain + run: | + set -e + version="$(sed -n 's/^[[:space:]]*channel[[:space:]]*=[[:space:]]*"\([^"]*\)".*/\1/p' \ + rust-toolchain.toml | head -n 1)" + curl --fail --location --proto '=https' --tlsv1.2 https://sh.rustup.rs -o /tmp/rustup-init + chmod 700 /tmp/rustup-init + /tmp/rustup-init -y --profile minimal --default-toolchain "$version" \ + --component rustfmt --component clippy --no-modify-path + echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" + + # --all-targets on purpose. `--lib` alone passed for the entire + # time main.rs was syntactically invalid, which is precisely the + # failure this job exists to prevent. + - name: Check (lib AND bin) + run: cargo check --locked -p nigig-email --all-targets + + - name: Test + run: cargo test --locked -p nigig-email + + # Phase 0.6. A hard gate, not report-only: this crate is 1,100 + # lines and already formats clean, so there is no pre-existing + # drift to grandfather in. Contrast sms.yml and nigig-map.yml, + # which are report-only because they inherited hundreds of diffs. + - name: Formatting + run: | + cargo fmt -p nigig-email -- --check \ + || { echo "run: cargo fmt -p nigig-email"; exit 1; } + + # Ratchet at the measured baseline, which is ZERO. + # + # I first set this to 2, having seen two `unexpected_cfgs` warnings + # for `native_activity` emitted by the app_main! macro. Measuring + # properly with the same dedupe this script uses gives 0 -- those + # two are attributed to the bin target and filtered out by the + # package_id check. A baseline above the real count is not a + # harmless margin: this script fails when n < BASELINE precisely so + # that slack cannot hide a regression. + - name: Clippy ratchet (nigig-email-owned diagnostics only) + run: | + set -euo pipefail + BASELINE=0 + cargo clippy --locked -p nigig-email --all-targets \ + --message-format=json > /tmp/clippy-email.json 2>/tmp/clippy-email.err || true + cat /tmp/clippy-email.err || true + BASELINE="$BASELINE" python3 - <<'PY' + import json, os, sys + baseline = int(os.environ['BASELINE']) + owned, seen = [], set() + with open('/tmp/clippy-email.json') as fh: + for line in fh: + try: + m = json.loads(line) + except ValueError: + continue + if m.get('reason') != 'compiler-message': + continue + if 'nigig-email' not in m.get('package_id', ''): + continue + msg = m['message'] + if msg.get('level') not in ('warning', 'error'): + continue + # --all-targets compiles lib and lib-test, duplicating + # every diagnostic; dedupe on rendered text. + key = msg.get('rendered', '') + if key in seen: + continue + seen.add(key) + owned.append(msg) + n = len(owned) + print("found %d nigig-email diagnostics, baseline %d" % (n, baseline)) + if n > baseline: + for msg in owned: + sys.stdout.write(msg.get('rendered', '')) + print() + print("ERROR: %d diagnostics, up from %d." % (n, baseline)) + sys.exit(1) + if n < baseline: + print() + print("Good: down to %d. Lower BASELINE in this file to %d " + "so the progress cannot be undone." % (n, n)) + sys.exit(1) + print("OK") + PY + + # --------------------------------------------------------------------- + # Supply chain. + # --------------------------------------------------------------------- + supply-chain: + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + + # Phase 0.5. Four dependencies were declared and never referenced, + # one of them robius-location, which drags polkit/gio/glib and two + # RUSTSEC advisories in for code that is never called. + - name: nigig-email must not declare dependencies it never uses + run: | + set -euo pipefail + bad=0 + # chrono is used by inbox.rs::format_thread_time. Everything + # else in the manifest must appear in src/ under its + # underscored crate name. + for dep in serde serde_json robius-location robius-sms lettre; do + declared=$(grep -cE "^[[:space:]]*${dep}[[:space:]]*=" \ + crates/apps/nigig-email/Cargo.toml || true) + [ "$declared" -eq 0 ] && continue + underscored="${dep//-/_}" + used=$(grep -rl "$underscored" crates/apps/nigig-email/src 2>/dev/null | wc -l) + if [ "$used" -eq 0 ]; then + echo "ERROR: nigig-email declares $dep but never uses it." + bad=1 + fi + done + if [ "$bad" -ne 0 ]; then + echo + echo "Unused dependencies enlarge the attack surface and the" + echo "licence obligations for no benefit. Remove them." + exit 1 + fi + echo "OK" + + - name: Lockfile must be committed and current + run: | + set -euo pipefail + test -f Cargo.lock || { echo "ERROR: Cargo.lock is not committed."; exit 1; } + git diff --exit-code -- Cargo.lock + + - name: Reject whitespace errors + run: git diff --check "$(git rev-list --max-parents=0 HEAD | tail -1)"..HEAD || git diff --check diff --git a/.forgejo/workflows/nigig-build.yml b/.forgejo/workflows/nigig-build.yml index 048ded5..118daa8 100644 --- a/.forgejo/workflows/nigig-build.yml +++ b/.forgejo/workflows/nigig-build.yml @@ -101,6 +101,7 @@ jobs: bad=0 for manifest in \ crates/apps/nigig-build/Cargo.toml \ + crates/apps/nigig-email/Cargo.toml \ crates/nigig-core/Cargo.toml \ crates/nigig-uikit/Cargo.toml; do crate_dir="$(dirname "$manifest")" diff --git a/Cargo.lock b/Cargo.lock index 1d8b583..da8b2de 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5,7 +5,7 @@ version = 4 [[package]] name = "ab_glyph_rasterizer" version = "0.1.8" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "adler" @@ -144,14 +144,14 @@ dependencies = [ [[package]] name = "arrayvec" version = "0.7.6" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "ash" version = "0.38.0+1.3.281" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "libloading 0.8.9 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "libloading 0.8.9 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -210,9 +210,9 @@ dependencies = [ [[package]] name = "bit-set" version = "0.8.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "bit-vec 0.8.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "bit-vec 0.8.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -224,12 +224,12 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bit-vec" version = "0.8.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "bitflags" version = "2.10.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "bitflags" @@ -305,7 +305,7 @@ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649" [[package]] name = "bytemuck" version = "1.25.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "bytemuck" @@ -336,7 +336,7 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "byteorder" version = "1.5.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "byteorder-lite" @@ -384,12 +384,12 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg-if" version = "1.0.4" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "cfg_aliases" version = "0.2.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "cfg_aliases" @@ -573,7 +573,7 @@ checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crunchy" version = "0.2.4" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "crypto-common" @@ -689,7 +689,7 @@ dependencies = [ [[package]] name = "downcast-rs" version = "1.2.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "either" @@ -743,7 +743,7 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "equivalent" version = "1.0.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "errno" @@ -834,7 +834,7 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "foldhash" version = "0.2.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "form_urlencoded" @@ -923,9 +923,9 @@ dependencies = [ [[package]] name = "fxhash" version = "0.2.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "byteorder 1.5.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "byteorder 1.5.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -1022,9 +1022,9 @@ dependencies = [ [[package]] name = "hashbrown" version = "0.16.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "foldhash 0.2.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "foldhash 0.2.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -1059,7 +1059,7 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hexf-parse" version = "0.2.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "hilog-sys" @@ -1203,7 +1203,7 @@ dependencies = [ [[package]] name = "i_float" version = "3.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "i_key_sort" @@ -1214,7 +1214,7 @@ checksum = "7c6c58d0c60705e66264ce0f788a69a2f21472aeb8188559e7c8c619dbdc10fa" [[package]] name = "i_key_sort" version = "0.11.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "i_overlay" @@ -1231,12 +1231,12 @@ dependencies = [ [[package]] name = "i_overlay" version = "7.0.3" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "i_float 3.0.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", - "i_key_sort 0.11.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", - "i_shape 3.0.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", - "i_tree 0.19.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "i_float 3.0.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", + "i_key_sort 0.11.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", + "i_shape 3.0.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", + "i_tree 0.19.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -1260,9 +1260,9 @@ dependencies = [ [[package]] name = "i_shape" version = "3.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "i_float 3.0.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "i_float 3.0.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -1274,7 +1274,7 @@ checksum = "1e9d4a992a9fe83130f41ceacceac3bb116a4355dfc9c8d6ecea4f1e4b4c6caf" [[package]] name = "i_tree" version = "0.19.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "iana-time-zone" @@ -1426,10 +1426,10 @@ checksum = "c8b35f3ad95576ac81603375dfe47a0450b70a368aa34d2b6e5bb0a0d7f02428" [[package]] name = "indexmap" version = "2.13.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "equivalent 1.0.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", - "hashbrown 0.16.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "equivalent 1.0.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", + "hashbrown 0.16.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -1562,10 +1562,10 @@ dependencies = [ [[package]] name = "libloading" version = "0.8.9" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "cfg-if 1.0.4 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", - "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "cfg-if 1.0.4 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", + "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -1624,7 +1624,7 @@ dependencies = [ [[package]] name = "log" version = "0.4.29" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "log" @@ -1658,7 +1658,7 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "makepad-ai" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-live-id", "makepad-micro-serde", @@ -1677,7 +1677,7 @@ dependencies = [ [[package]] name = "makepad-apple-sys" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-objc-sys", ] @@ -1685,22 +1685,22 @@ dependencies = [ [[package]] name = "makepad-base64" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-box3d" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-byteorder-lite" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-code-editor" version = "2.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-widgets", ] @@ -1708,7 +1708,7 @@ dependencies = [ [[package]] name = "makepad-csg" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-csg-boolean", "makepad-csg-math", @@ -1720,7 +1720,7 @@ dependencies = [ [[package]] name = "makepad-csg-boolean" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-csg-exact", "makepad-csg-math", @@ -1730,7 +1730,7 @@ dependencies = [ [[package]] name = "makepad-csg-exact" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-csg-math", ] @@ -1738,12 +1738,12 @@ dependencies = [ [[package]] name = "makepad-csg-math" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-csg-mesh" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-csg-math", ] @@ -1751,7 +1751,7 @@ dependencies = [ [[package]] name = "makepad-csg-primitives" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-csg-math", "makepad-csg-mesh", @@ -1760,7 +1760,7 @@ dependencies = [ [[package]] name = "makepad-csg-sdf" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-csg-math", "makepad-csg-mesh", @@ -1769,7 +1769,7 @@ dependencies = [ [[package]] name = "makepad-derive-wasm-bridge" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-proc-macro", ] @@ -1777,7 +1777,7 @@ dependencies = [ [[package]] name = "makepad-derive-widget" version = "2.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-live-id", "makepad-micro-proc-macro", @@ -1786,7 +1786,7 @@ dependencies = [ [[package]] name = "makepad-draw" version = "2.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "ab_glyph_rasterizer", "fxhash", @@ -1811,7 +1811,7 @@ dependencies = [ [[package]] name = "makepad-error-log" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-serde", ] @@ -1819,35 +1819,35 @@ dependencies = [ [[package]] name = "makepad-fast-inflate" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-filesystem-watcher" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-futures" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-futures-legacy" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-gif" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "weezl 0.1.12 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "weezl 0.1.12 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] name = "makepad-git" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-fast-inflate", ] @@ -1855,7 +1855,7 @@ dependencies = [ [[package]] name = "makepad-gltf" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-base64", "makepad-math", @@ -1865,9 +1865,9 @@ dependencies = [ [[package]] name = "makepad-half" version = "2.7.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "cfg-if 1.0.4 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "cfg-if 1.0.4 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", "crunchy", "num-traits 0.2.20", "zerocopy 0.8.39", @@ -1876,7 +1876,7 @@ dependencies = [ [[package]] name = "makepad-html" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-live-id", ] @@ -1890,7 +1890,7 @@ checksum = "9775cbec5fa0647500c3e5de7c850280a88335d1d2d770e5aa2332b801ba7064" [[package]] name = "makepad-latex-math" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "ttf-parser 0.24.1", ] @@ -1898,7 +1898,7 @@ dependencies = [ [[package]] name = "makepad-live-id" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-live-id-macros", "serde", @@ -1907,7 +1907,7 @@ dependencies = [ [[package]] name = "makepad-live-id-macros" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-proc-macro", ] @@ -1915,7 +1915,7 @@ dependencies = [ [[package]] name = "makepad-live-reload-core" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-filesystem-watcher", ] @@ -1923,12 +1923,12 @@ dependencies = [ [[package]] name = "makepad-lz4" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-math" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-serde", ] @@ -1936,7 +1936,7 @@ dependencies = [ [[package]] name = "makepad-mbtile-reader" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "brotli", "makepad-fast-inflate", @@ -1945,12 +1945,12 @@ dependencies = [ [[package]] name = "makepad-micro-proc-macro" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-micro-serde" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-live-id", "makepad-micro-serde-derive", @@ -1959,7 +1959,7 @@ dependencies = [ [[package]] name = "makepad-micro-serde-derive" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-proc-macro", ] @@ -1967,7 +1967,7 @@ dependencies = [ [[package]] name = "makepad-network" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-apple-sys", "makepad-error-log", @@ -1981,12 +1981,12 @@ dependencies = [ [[package]] name = "makepad-objc-sys" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-platform" version = "2.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "ash", "bitflags 2.10.0", @@ -2016,24 +2016,24 @@ dependencies = [ "wayland-egl", "wayland-protocols", "windows 0.62.2", - "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", "windows-targets 0.52.6", ] [[package]] name = "makepad-rabin-karp" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-regex" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-script" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-error-log", "makepad-html", @@ -2047,7 +2047,7 @@ dependencies = [ [[package]] name = "makepad-script-derive" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-proc-macro", ] @@ -2055,7 +2055,7 @@ dependencies = [ [[package]] name = "makepad-script-std" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-network", "makepad-script", @@ -2064,12 +2064,12 @@ dependencies = [ [[package]] name = "makepad-shared-bytes" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "makepad-splat" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-serde", "makepad-webp", @@ -2079,7 +2079,7 @@ dependencies = [ [[package]] name = "makepad-studio-hub" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-filesystem-watcher", "makepad-git", @@ -2096,7 +2096,7 @@ dependencies = [ [[package]] name = "makepad-studio-protocol" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "bitflags 2.10.0", "makepad-error-log", @@ -2108,7 +2108,7 @@ dependencies = [ [[package]] name = "makepad-svg" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-html", "makepad-live-id", @@ -2117,7 +2117,7 @@ dependencies = [ [[package]] name = "makepad-terminal-core" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "windows 0.62.2", ] @@ -2125,7 +2125,7 @@ dependencies = [ [[package]] name = "makepad-test" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-serde", "makepad-network", @@ -2137,7 +2137,7 @@ dependencies = [ [[package]] name = "makepad-test-macros" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "proc-macro2", "quote", @@ -2147,7 +2147,7 @@ dependencies = [ [[package]] name = "makepad-tsdf" version = "0.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-math", "makepad-micro-serde", @@ -2156,7 +2156,7 @@ dependencies = [ [[package]] name = "makepad-wasm-bridge" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-derive-wasm-bridge", "makepad-live-id", @@ -2165,7 +2165,7 @@ dependencies = [ [[package]] name = "makepad-webp" version = "0.2.4" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-byteorder-lite", ] @@ -2173,9 +2173,9 @@ dependencies = [ [[package]] name = "makepad-widgets" version = "2.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "i_overlay 7.0.3 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "i_overlay 7.0.3 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", "makepad-csg", "makepad-derive-widget", "makepad-draw", @@ -2194,7 +2194,7 @@ dependencies = [ [[package]] name = "makepad-xr" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-box3d", "makepad-gltf", @@ -2206,7 +2206,7 @@ dependencies = [ [[package]] name = "makepad-zip-file" version = "1.0.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-fast-inflate", ] @@ -2214,7 +2214,7 @@ dependencies = [ [[package]] name = "makepad-zune-bmp" version = "0.5.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "log 0.4.33", "makepad-zune-core", @@ -2223,7 +2223,7 @@ dependencies = [ [[package]] name = "makepad-zune-core" version = "0.5.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "log 0.4.33", ] @@ -2231,7 +2231,7 @@ dependencies = [ [[package]] name = "makepad-zune-inflate" version = "0.2.54" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "simd-adler32 0.3.9", ] @@ -2239,7 +2239,7 @@ dependencies = [ [[package]] name = "makepad-zune-jpeg" version = "0.5.15" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-zune-core", ] @@ -2247,7 +2247,7 @@ dependencies = [ [[package]] name = "makepad-zune-png" version = "0.5.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-zune-core", "makepad-zune-inflate", @@ -2256,7 +2256,7 @@ dependencies = [ [[package]] name = "makepad-zune-qoi" version = "0.5.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-zune-core", ] @@ -2296,7 +2296,7 @@ checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771" [[package]] name = "memchr" version = "2.7.6" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "memchr" @@ -2363,14 +2363,14 @@ dependencies = [ [[package]] name = "naga" version = "27.0.3" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "arrayvec", - "bit-set 0.8.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "bit-set 0.8.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", "bitflags 2.13.1", - "cfg-if 1.0.4 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "cfg-if 1.0.4 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", "cfg_aliases 0.2.1", - "hashbrown 0.16.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "hashbrown 0.16.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", "hexf-parse", "indexmap", "makepad-error-log", @@ -2566,9 +2566,6 @@ dependencies = [ "makepad-widgets", "nigig-core", "nigig-uikit", - "robius-location", - "serde", - "serde_json", ] [[package]] @@ -2944,7 +2941,7 @@ dependencies = [ [[package]] name = "num-traits" version = "0.2.20" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "objc2" @@ -3049,7 +3046,7 @@ checksum = "8d380ab6c951261a0e44306245bc960b3b3367f099a7da7156bd1a3cacaf783c" [[package]] name = "once_cell" version = "1.21.3" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "once_cell" @@ -3169,7 +3166,7 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" [[package]] name = "pkg-config" version = "0.3.32" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "pkg-config" @@ -3285,11 +3282,11 @@ dependencies = [ [[package]] name = "pulldown-cmark" version = "0.12.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "bitflags 2.10.0", "memchr 2.7.6", - "unicase 2.9.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "unicase 2.9.0 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -3813,7 +3810,7 @@ dependencies = [ [[package]] name = "rustc-hash" version = "1.1.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "rustc-hash" @@ -3900,7 +3897,7 @@ dependencies = [ [[package]] name = "rustybuzz" version = "0.18.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "bitflags 2.10.0", "bytemuck 1.25.0", @@ -3931,7 +3928,7 @@ dependencies = [ [[package]] name = "scoped-tls" version = "1.0.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "scopeguard" @@ -3942,7 +3939,7 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sdfer" version = "0.2.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "semver" @@ -4035,7 +4032,7 @@ dependencies = [ [[package]] name = "simd-adler32" version = "0.3.9" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "simd-adler32" @@ -4052,7 +4049,7 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" version = "1.15.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "smallvec" @@ -4082,7 +4079,7 @@ dependencies = [ [[package]] name = "spirv" version = "0.3.0+sdk-1.3.268.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "bitflags 2.13.1", ] @@ -4199,7 +4196,7 @@ dependencies = [ [[package]] name = "thiserror" version = "2.0.18" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "thiserror-impl 2.0.18", ] @@ -4227,7 +4224,7 @@ dependencies = [ [[package]] name = "thiserror-impl" version = "2.0.18" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "makepad-micro-proc-macro", ] @@ -4428,7 +4425,7 @@ checksum = "49d64318d8311fc2668e48b63969f4343e0a85c4a109aa8460d6672e364b8bd1" [[package]] name = "ttf-parser" version = "0.24.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "typenum" @@ -4451,22 +4448,22 @@ checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142" [[package]] name = "unicase" version = "2.9.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-bidi" version = "0.3.18" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-bidi-mirroring" version = "0.3.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-ccc" version = "0.3.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-ident" @@ -4477,22 +4474,22 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" [[package]] name = "unicode-linebreak" version = "0.1.5" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-properties" version = "0.1.4" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-script" version = "0.5.8" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-segmentation" version = "1.12.0" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "unicode-segmentation" @@ -4817,7 +4814,7 @@ dependencies = [ [[package]] name = "wayland-backend" version = "0.3.12" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "downcast-rs", "libc", @@ -4829,7 +4826,7 @@ dependencies = [ [[package]] name = "wayland-client" version = "0.31.12" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "bitflags 2.13.1", "libc", @@ -4839,7 +4836,7 @@ dependencies = [ [[package]] name = "wayland-egl" version = "0.32.9" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "wayland-backend", "wayland-sys", @@ -4848,7 +4845,7 @@ dependencies = [ [[package]] name = "wayland-protocols" version = "0.32.10" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "bitflags 2.13.1", "wayland-backend", @@ -4858,7 +4855,7 @@ dependencies = [ [[package]] name = "wayland-sys" version = "0.31.8" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "log 0.4.29", "pkg-config 0.3.32", @@ -4902,7 +4899,7 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88" [[package]] name = "weezl" version = "0.1.12" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "winapi-util" @@ -4926,19 +4923,19 @@ dependencies = [ [[package]] name = "windows" version = "0.62.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ "windows-collections", - "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", "windows-future", ] [[package]] name = "windows-collections" version = "0.3.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -4969,19 +4966,19 @@ dependencies = [ [[package]] name = "windows-core" version = "0.62.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", - "windows-result 0.4.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", - "windows-strings 0.5.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", + "windows-result 0.4.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", + "windows-strings 0.5.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] name = "windows-future" version = "0.3.2" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "windows-core 0.62.2 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -5037,7 +5034,7 @@ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-link" version = "0.2.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "windows-result" @@ -5060,9 +5057,9 @@ dependencies = [ [[package]] name = "windows-result" version = "0.4.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -5077,9 +5074,9 @@ dependencies = [ [[package]] name = "windows-strings" version = "0.5.1" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" dependencies = [ - "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572)", + "windows-link 0.2.1 (git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc)", ] [[package]] @@ -5278,7 +5275,7 @@ dependencies = [ [[package]] name = "zerocopy" version = "0.8.39" -source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572#ecf5a572ab62a1c1598909971f602f99083671cc" +source = "git+https://gitdab.com/andodeki/makepad?rev=ecf5a572ab62a1c1598909971f602f99083671cc#ecf5a572ab62a1c1598909971f602f99083671cc" [[package]] name = "zerocopy" diff --git a/REVIEWS/NIGIG_EMAIL_ASSESSMENT_AND_PLAN.md b/REVIEWS/NIGIG_EMAIL_ASSESSMENT_AND_PLAN.md index 581ac5b..a3167be 100644 --- a/REVIEWS/NIGIG_EMAIL_ASSESSMENT_AND_PLAN.md +++ b/REVIEWS/NIGIG_EMAIL_ASSESSMENT_AND_PLAN.md @@ -524,6 +524,14 @@ snapshot. Commits are on `main`. | `5a5b817` | **Phase C2 (early)** — `email_account.rs` + `email_store.rs`: session state, account validation, sender-thread grouping, char-safe previews. 38 host tests. | | `b91f97b` | **Phase 0.1 DONE** — `main.rs` braces fixed; the binary compiles for the first time. | | `18bbb7b` | **Feature: account-gated inbox** — sender list + thread reader reusing `nigig_uikit::shared::conversation`; setup form moved off the Bulk tab; `drafts.rs` deleted (0.4). | +| `cc8a727` | **Phase 0.2 DONE** — 42 abbreviated git revs across 34 crates rewritten to full 40-char SHAs. Label-only change, verified against `Cargo.lock`. | +| `4ae50cb` | **Phase 0.5 DONE** — `serde`, `serde_json`, `robius-location` removed; platform-dep gate extended to `nigig-email`. | +| `244c4f2` | **Phase 0.3 + 0.6 DONE** — `email.yml` (4 jobs, 11 gates). Writing the gates caught **B2 and B3 still live in `bulk.rs`**; both fixed here. | + +**Phase 0 is complete.** All seven items done; 0.7 was fixed upstream. +Every gate in `email.yml` was negative-tested — reverted the fix, +confirmed the gate fails, restored it — rather than merely observed +green. Verified: `cargo check -p nigig-email --all-targets` → 0 errors; 41 tests pass (38 core + 3 UI helpers); `nigig-email` clippy down to 2 @@ -609,12 +617,12 @@ Nothing else can be trusted until the crate builds and something runs it. | ID | Task | |---|---| | ~~0.1~~ | ~~**Fix `main.rs` braces.**~~ **DONE** (`b91f97b`) — was missing the `StandaloneFeatureBody` wrapper; `--lib` had always passed, so only the binary was broken. | -| 0.2 | **Repair the 40-char rev gate repo-wide.** Resolve `5efe6e24c` → full SHA, rewrite all 42 declarations. This is mechanical and must land in its own commit. | -| 0.3 | **Create `.forgejo/workflows/email.yml`**: `gates` (source scans), `nigig-email` (check + clippy + test), `supply-chain` (`cargo deny`, lockfile, unused deps). | +| ~~0.2~~ | ~~**Repair the 40-char rev gate repo-wide.**~~ **DONE** (`f5d003f`) — 42 declarations across 34 crates rewritten to full SHAs (`ecf5a572ab62…`, `5efe6e24c9f7…`). Verified label-only: `Cargo.lock` holds one makepad commit id and zero refs to the old. | +| ~~0.3~~ | ~~**Create `.forgejo/workflows/email.yml`**~~ **DONE** — 4 jobs: `gates` (4 source scans), `email-domain` (38 tests + floor), `nigig-email` (check `--all-targets`, test, fmt, clippy ratchet), `supply-chain` (unused deps, lockfile, whitespace). | | ~~0.4~~ | ~~**Delete or wire `drafts.rs`.**~~ **DONE** (`18bbb7b`) — deleted. 157 lines never declared in `pages/mod.rs`, so never compiled. | -| 0.5 | **Drop unused deps**: `serde_json`, `robius-location`. *Revised:* `chrono` is now used (`format_thread_time`) and `serde` is used by `email_account`/`email_store`, so only two remain. Extend the "removed platform deps must not come back" gate to cover `nigig-email`. | -| **0.7** | **NEW, HIGHEST PRIORITY — unblock `origin/main`.** The workspace does not resolve at HEAD, so no crate can be CI-verified. Two causes in sequence: `86c9595` dropped the `maps` feature `pageflipnav` needs; `ce0eaae` fixed that but added `i_tree = "1.0.0"` to `crates/apps/map`, a version crates.io does not have (max published: `0.19.0`). Fix is almost certainly `i_tree = "0.19"`, but that is the map crate's call, not this plan's. Blocks 0.2, 0.3 and every ratchet in Phase E. | -| 0.6 | **Add `nigig-email` to a fmt gate**, or record explicitly why not (SMS chose report-only; email is small enough to just format). | +| ~~0.5~~ | ~~**Drop unused deps.**~~ **DONE** (`e958386`) — removed `serde`, `serde_json`, `robius-location` (all 0 references in `src/`). `chrono` kept: it *is* used by `format_thread_time`, correcting the assessment. Extended the existing platform-dep gate to cover `nigig-email`; negative-tested. | +| ~~0.7~~ | ~~**Unblock `origin/main`.**~~ **DONE upstream** (`005bed1`, not mine) — corrected `i_tree` to `0.19.0`, exactly the fix predicted here. Verified: the workspace resolves and `cargo check -p nigig-email --all-targets` passes on current `main`. | +| ~~0.6~~ | ~~**Add `nigig-email` to a fmt gate.**~~ **DONE** — a HARD gate, not report-only: the crate already formats clean, so there is no pre-existing drift to grandfather in. Contrast `sms.yml`/`nigig-map.yml`, which inherited hundreds of diffs and had to report only. | Exit: `cargo check`/`clippy`/`test -p nigig-email` green on a real runner. @@ -665,7 +673,10 @@ send-only form. **It needs a product decision before any code.** | C6 | **Bulk pacing.** Email providers rate-limit harder than carriers. Port `SendPacing` from `robius-sms` — already generic arithmetic. | | C7 | **NEW — pull-to-refresh + background fetch** once C1 lands. The SMS crate's D1/D2 pattern (worker thread → results queue → `SignalToUI` → drained on the UI thread) applies directly; do not fetch from `draw_walk`. | -#### C1 — the decision I need from you +#### C1 — DECIDED: support both, user-selectable + +**Decision (2026-08-16): implement both backends and let the user pick, +with a setup form appropriate to each.** | | IMAP on device | Server-side proxy | |---|---|---| @@ -675,12 +686,70 @@ send-only form. **It needs a product decision before any code.** | wasm | IMAP over raw TCP is impossible in a browser — needs a proxy *anyway* | Same code path on every platform | | Resolves S2? | No — you still hold the password | **Largely yes** | -My read: **the proxy wins on merit**, mostly because the wasm target -already forces one and because it retires the password-storage problem -rather than mitigating it. But it is infrastructure you may not want to -run, and IMAP-on-device is the only option that works with no backend at -all. This is a product call, not a technical one, which is why I have not -made it. +This is the right call and it is *cheaper than it sounds*, because wasm +already forces a proxy to exist: supporting only IMAP was never actually +an option for the browser target. So the second backend is not new scope, +it is scope that was already implied. + +##### What "both" requires architecturally + +The thing that makes this tractable is a **trait boundary**, not two +parallel UIs. One `MailBackend` abstraction with two implementations, and +a `BackendKind` discriminant on the account: + +```rust +pub enum BackendKind { ImapSmtp, ProxyApi } + +pub trait MailBackend { + async fn verify(&self) -> Result<(), String>; + async fn list_inbox(&self) -> Result, String>; + async fn send(&self, req: &EmailSendRequest) -> Result<(), String>; +} +``` + +`email_store`'s grouping, `preview_line`, the inbox list, the thread +reader and the unread handling all sit **above** this line and are already +written — they consume `Vec` and do not care where it came +from. That was deliberate (see C2) and it is what makes two backends a +contained change rather than a rewrite. + +##### Two forms, and the fields genuinely differ + +Not one form with a toggle that hides rows — the fields are different +enough that pretending otherwise produces a confusing screen: + +| IMAP + SMTP | Proxy API | +|---|---| +| Email address | Email address | +| IMAP server + port | API base URL (**must be HTTPS** — S5) | +| SMTP server + port | API token / credential | +| Username | — | +| Password / app password | — | +| — | Optional account label | + +So: a backend chooser first, then the matching form. `AccountDraft` gains +a `BackendKind` and validation branches on it — `validate()` already +returns `Vec` and reports every problem at once, so this +extends cleanly. + +##### Sequencing + +| ID | Task | +|---|---| +| C1a | `BackendKind` + `MailBackend` trait in `nigig-core`. Host-testable with a fake backend; no network. | +| C1b | Extend `AccountDraft`/`EmailAccount` with `BackendKind`; branch validation. Tests for both shapes, including HTTPS-only enforcement on the proxy URL. | +| C1c | Backend chooser + two forms in `EmailAccountSetup`. | +| C1d | `ProxyApiBackend` — thin HTTP client. Do this **first** of the two: it is smaller, it is the only option on wasm, and it exercises the trait boundary end to end. | +| C1e | `ImapSmtpBackend` — `async-imap`, native only. Gate behind a feature so wasm builds never pull it in. | +| C1f | Keystore-backed credential storage (A1). Required for IMAP to be usable across restarts; optional for the proxy, which can hold a revocable token instead. | + +##### One thing I will not pretend + +Offering both **doubles the security surface**, and the IMAP path is the +one that keeps a reusable password on the device. A revocable proxy token +is strictly safer than a password that also unlocks the user's password +resets. So the setup UI should say which is which, plainly, rather than +presenting them as equivalent choices. --- diff --git a/crates/apps/geohot/Cargo.toml b/crates/apps/geohot/Cargo.toml index 0552148..3171830 100644 --- a/crates/apps/geohot/Cargo.toml +++ b/crates/apps/geohot/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/map/Cargo.toml b/crates/apps/map/Cargo.toml index e5603b9..397a4b7 100644 --- a/crates/apps/map/Cargo.toml +++ b/crates/apps/map/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" description = "Map tile renderer with viewport, caching, scheduling, and MVT decoding" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572" } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc" } # Polygon operations (used by makepad_map for advanced geometry) i_overlay = { version = "7.0.3", default-features = false } @@ -14,7 +14,7 @@ i_shape = "1.0.0" i_tree = "0.19.0" [dev-dependencies] -makepad-test = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572" } +makepad-test = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc" } [features] default = ["map_style"] diff --git a/crates/apps/map/tests/makepad_test_app/Cargo.toml b/crates/apps/map/tests/makepad_test_app/Cargo.toml index 81cb4de..1165957 100644 --- a/crates/apps/map/tests/makepad_test_app/Cargo.toml +++ b/crates/apps/map/tests/makepad_test_app/Cargo.toml @@ -6,9 +6,9 @@ description = "Visual regression test application for nigig-map widget" [dependencies] <<<<<<< HEAD -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "5efe6e24c", features = ["maps"] } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "5efe6e24c9f732e9f11b783757f196f4f1c402b2", features = ["maps"] } ======= -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", features = ["maps"] } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", features = ["maps"] } >>>>>>> 71b5460 (chore: update makepad fork to latest upstream/dev (abd70f4)) nigig-map = { path = "../.." } diff --git a/crates/apps/nigig-ai/Cargo.toml b/crates/apps/nigig-ai/Cargo.toml index 21a8a3e..b85847b 100644 --- a/crates/apps/nigig-ai/Cargo.toml +++ b/crates/apps/nigig-ai/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-alerts/Cargo.toml b/crates/apps/nigig-alerts/Cargo.toml index 641e95e..5868c6a 100644 --- a/crates/apps/nigig-alerts/Cargo.toml +++ b/crates/apps/nigig-alerts/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-book/Cargo.toml b/crates/apps/nigig-book/Cargo.toml index 0d6a41a..6a52da8 100644 --- a/crates/apps/nigig-book/Cargo.toml +++ b/crates/apps/nigig-book/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-build/Cargo.toml b/crates/apps/nigig-build/Cargo.toml index 0af7e0d..6170ec2 100644 --- a/crates/apps/nigig-build/Cargo.toml +++ b/crates/apps/nigig-build/Cargo.toml @@ -4,11 +4,11 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", features = ["test", "csg", "gltf"] } -makepad-code-editor = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} -makepad-xr = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} -makepad-ai = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} -makepad-base64 = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", features = ["test", "csg", "gltf"] } +makepad-code-editor = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} +makepad-xr = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} +makepad-ai = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} +makepad-base64 = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} # makepad-gltf: read-side GLB parser. Used for round-trip validation # of arch_gltf.rs output (write GLB → load with makepad_gltf → verify). nigig-core = { path = "../../nigig-core" } diff --git a/crates/apps/nigig-chat/Cargo.toml b/crates/apps/nigig-chat/Cargo.toml index 16ce2cd..173a6f8 100644 --- a/crates/apps/nigig-chat/Cargo.toml +++ b/crates/apps/nigig-chat/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-delivery/Cargo.toml b/crates/apps/nigig-delivery/Cargo.toml index c7f9998..8907206 100644 --- a/crates/apps/nigig-delivery/Cargo.toml +++ b/crates/apps/nigig-delivery/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-email/Cargo.toml b/crates/apps/nigig-email/Cargo.toml index f79a4f9..e696d7e 100644 --- a/crates/apps/nigig-email/Cargo.toml +++ b/crates/apps/nigig-email/Cargo.toml @@ -4,10 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } -serde = { version = "1", features = ["derive"] } -serde_json = "1" +# Used by inbox.rs::format_thread_time for list-row timestamps. chrono = { version = "0.4", features = ["serde"] } -robius-location = { git = "https://github.com/project-robius/robius", rev = "b766e62b0600f5d2ee21cc6995648346fc277bd8" } diff --git a/crates/apps/nigig-email/src/email_frame/pages/bulk.rs b/crates/apps/nigig-email/src/email_frame/pages/bulk.rs index 2cddb30..d6f4ff6 100644 --- a/crates/apps/nigig-email/src/email_frame/pages/bulk.rs +++ b/crates/apps/nigig-email/src/email_frame/pages/bulk.rs @@ -1,4 +1,5 @@ use makepad_widgets::*; +use nigig_core::email_account::AccountDraft; use nigig_core::email_worker::{spawn_send_email, spawn_smtp_test, EmailWorkerAction, SmtpConfig}; script_mod! { @@ -87,29 +88,45 @@ impl Widget for EmailBulkPage { self.view.handle_event(cx, event, scope); if let Event::Actions(actions) = event { - let server = self.text_input(cx, ids!(server_input)).text(); - let port_t = self.text_input(cx, ids!(port_input)).text(); - let username = self.text_input(cx, ids!(username_input)).text(); - let password = self.text_input(cx, ids!(password_input)).text(); - let from = self.text_input(cx, ids!(from_input)).text(); + // B2: this block used to read five TextInputs and build an + // SmtpConfig on EVERY action event -- ten heap allocations + // per keystroke, per scroll, per timer tick from any widget + // in the app, for a struct only read when a button is + // clicked. Worse, it captured whatever the fields happened + // to hold when an unrelated action fired. Read on click + // instead. + let test_clicked = self.button(cx, ids!(test_btn)).clicked(actions); + let send_clicked = self.button(cx, ids!(send_btn)).clicked(actions); - let port: u16 = port_t.parse().unwrap_or(587); - self.smtp_config = SmtpConfig { - server: server.clone(), - port, - username: username.clone(), - password: password.clone(), - from: from.clone(), - }; - - if self.button(cx, ids!(test_btn)).clicked(actions) { - let config = self.smtp_config.clone(); - self.label(cx, ids!(status_label)) - .set_text(cx, "Testing..."); - spawn_smtp_test(config); + if test_clicked || send_clicked { + match self.read_config(cx) { + Err(msg) => { + // B3: the port used to be parsed with + // `unwrap_or(587)`, so "465x" silently became 587 + // -- and because the port selects the transport + // (465 implicit TLS vs 587 STARTTLS) that + // silently changed the security posture too. Say + // so instead. + let id = if test_clicked { + ids!(status_label) + } else { + ids!(send_status) + }; + self.label(cx, id).set_text(cx, &msg); + self.view.redraw(cx); + } + Ok(config) => { + self.smtp_config = config.clone(); + if test_clicked { + self.label(cx, ids!(status_label)) + .set_text(cx, "Testing..."); + spawn_smtp_test(config); + } + } + } } - if self.button(cx, ids!(send_btn)).clicked(actions) { + if send_clicked && !self.smtp_config.server.is_empty() { let to = self.text_input(cx, ids!(to_input)).text(); let subject = self.text_input(cx, ids!(subject_input)).text(); let message = self.text_input(cx, ids!(message_input)).text(); @@ -141,3 +158,36 @@ impl Widget for EmailBulkPage { self.view.draw_walk(cx, scope, walk) } } + +impl EmailBulkPage { + /// Read the SMTP form and validate it. + /// + /// Routes through `AccountDraft::validate`, which is unit tested in + /// nigig-core, rather than re-implementing parsing here. That is the + /// only reason this page now rejects a malformed port instead of + /// silently rewriting it to 587 (B3). + fn read_config(&mut self, cx: &mut Cx) -> Result { + let draft = AccountDraft { + address: self.text_input(cx, ids!(from_input)).text(), + smtp_server: self.text_input(cx, ids!(server_input)).text(), + smtp_port: self.text_input(cx, ids!(port_input)).text(), + username: self.text_input(cx, ids!(username_input)).text(), + password: self.text_input(cx, ids!(password_input)).text(), + display_name: String::new(), + }; + match draft.validate() { + Ok((account, password)) => Ok(SmtpConfig { + server: account.smtp_server, + port: account.smtp_port, + username: account.username, + password, + from: account.address, + }), + Err(errors) => Err(errors + .iter() + .map(|e| e.message()) + .collect::>() + .join(" ")), + } + } +} diff --git a/crates/apps/nigig-feed/Cargo.toml b/crates/apps/nigig-feed/Cargo.toml index 37b5821..8a8ec5f 100644 --- a/crates/apps/nigig-feed/Cargo.toml +++ b/crates/apps/nigig-feed/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-garage/Cargo.toml b/crates/apps/nigig-garage/Cargo.toml index 446a5d7..22817e5 100644 --- a/crates/apps/nigig-garage/Cargo.toml +++ b/crates/apps/nigig-garage/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-health/Cargo.toml b/crates/apps/nigig-health/Cargo.toml index a0e385d..1fd726e 100644 --- a/crates/apps/nigig-health/Cargo.toml +++ b/crates/apps/nigig-health/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-insure/Cargo.toml b/crates/apps/nigig-insure/Cargo.toml index de9ccd9..5fdb19f 100644 --- a/crates/apps/nigig-insure/Cargo.toml +++ b/crates/apps/nigig-insure/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-marikiti/Cargo.toml b/crates/apps/nigig-marikiti/Cargo.toml index 11652d2..8dd73bb 100644 --- a/crates/apps/nigig-marikiti/Cargo.toml +++ b/crates/apps/nigig-marikiti/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-mobility/Cargo.toml b/crates/apps/nigig-mobility/Cargo.toml index b983191..65892e6 100644 --- a/crates/apps/nigig-mobility/Cargo.toml +++ b/crates/apps/nigig-mobility/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-mpesa/Cargo.toml b/crates/apps/nigig-mpesa/Cargo.toml index 449ee71..b1d3fe7 100644 --- a/crates/apps/nigig-mpesa/Cargo.toml +++ b/crates/apps/nigig-mpesa/Cargo.toml @@ -38,7 +38,7 @@ default = ["demo"] demo = ["nigig-pay-ui/demo"] [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", features = ["test"] } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", features = ["test"] } nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-pay-ui/Cargo.toml b/crates/apps/nigig-pay-ui/Cargo.toml index 6457be0..80f233d 100644 --- a/crates/apps/nigig-pay-ui/Cargo.toml +++ b/crates/apps/nigig-pay-ui/Cargo.toml @@ -34,7 +34,7 @@ default = [] demo = [] [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-pay-domain = { path = "../../nigig-pay-domain" } # Session correlation (review items 2.7 / 5.3). The registry that refuses an diff --git a/crates/apps/nigig-pay/Cargo.toml b/crates/apps/nigig-pay/Cargo.toml index 7086852..bc1e67e 100644 --- a/crates/apps/nigig-pay/Cargo.toml +++ b/crates/apps/nigig-pay/Cargo.toml @@ -38,7 +38,7 @@ default = ["demo"] demo = ["nigig-pay-ui/demo"] [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", features = ["test"] } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", features = ["test"] } nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } robius-ussd = { path = "../../robius-ussd", features = ["serde"] } diff --git a/crates/apps/nigig-property/Cargo.toml b/crates/apps/nigig-property/Cargo.toml index 5a98075..4104d23 100644 --- a/crates/apps/nigig-property/Cargo.toml +++ b/crates/apps/nigig-property/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-rider/Cargo.toml b/crates/apps/nigig-rider/Cargo.toml index 33e1b83..b7d742d 100644 --- a/crates/apps/nigig-rider/Cargo.toml +++ b/crates/apps/nigig-rider/Cargo.toml @@ -10,7 +10,7 @@ edition = "2021" # The example app in makepad-example-map uses the same flag. # `map_style` belongs to the Nigig map crate; the Robrix Makepad fork exposes # its built-in map widget through the `maps` feature only. -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", features = ["maps"] } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", features = ["maps"] } nigig-map = { path = "../map" } nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } diff --git a/crates/apps/nigig-shop/Cargo.toml b/crates/apps/nigig-shop/Cargo.toml index 6d37d95..e54b20c 100644 --- a/crates/apps/nigig-shop/Cargo.toml +++ b/crates/apps/nigig-shop/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-sms/Cargo.toml b/crates/apps/nigig-sms/Cargo.toml index f086520..5018e74 100644 --- a/crates/apps/nigig-sms/Cargo.toml +++ b/crates/apps/nigig-sms/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } chrono = { version = "0.4", features = ["serde"] } diff --git a/crates/apps/nigig-tow/Cargo.toml b/crates/apps/nigig-tow/Cargo.toml index d1a6f88..c911f44 100644 --- a/crates/apps/nigig-tow/Cargo.toml +++ b/crates/apps/nigig-tow/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-vehicle/Cargo.toml b/crates/apps/nigig-vehicle/Cargo.toml index 0cd0635..88d4575 100644 --- a/crates/apps/nigig-vehicle/Cargo.toml +++ b/crates/apps/nigig-vehicle/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig-walkie/Cargo.toml b/crates/apps/nigig-walkie/Cargo.toml index 920a202..d57fd32 100644 --- a/crates/apps/nigig-walkie/Cargo.toml +++ b/crates/apps/nigig-walkie/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/nigig_doc_scanner/Cargo.toml b/crates/apps/nigig_doc_scanner/Cargo.toml index 991715b..3891631 100644 --- a/crates/apps/nigig_doc_scanner/Cargo.toml +++ b/crates/apps/nigig_doc_scanner/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/pdf/pdf-makepad/Cargo.toml b/crates/apps/pdf/pdf-makepad/Cargo.toml index 0ac9a9d..dc7cf22 100644 --- a/crates/apps/pdf/pdf-makepad/Cargo.toml +++ b/crates/apps/pdf/pdf-makepad/Cargo.toml @@ -11,14 +11,14 @@ nigig-pdf-document = { path = "../pdf-document" } nigig-pdf-graphics = { path = "../pdf-graphics" } # The `test` feature gates makepad-widgets' re-export of makepad-test, # which tests/ui.rs imports as makepad_widgets::makepad_test. -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", features = ["test"] } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", features = ["test"] } [dev-dependencies] # Both are required, and neither is redundant: `ui.rs` imports the symbols # through the re-export above, but the `#[makepad_test]` attribute expands # to an absolute `::makepad_test::` path, which only resolves if the crate # is also a direct dependency. Dropping either breaks the UI tests. -makepad-test = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", package = "makepad-test" } +makepad-test = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", package = "makepad-test" } # A binary host so makepad_test can drive the widget through real event # delivery; the crate itself remains a library. diff --git a/crates/apps/spreadsheet/spreadsheet-ui/Cargo.toml b/crates/apps/spreadsheet/spreadsheet-ui/Cargo.toml index 9392e1c..eae46c4 100644 --- a/crates/apps/spreadsheet/spreadsheet-ui/Cargo.toml +++ b/crates/apps/spreadsheet/spreadsheet-ui/Cargo.toml @@ -16,8 +16,8 @@ description = "Makepad widget wrappers for the spreadsheet engine." # # For now, using a relative path from this crate's location: # crates/apps/spreadsheet/spreadsheet-ui/ → ../../../../makepad/widgets -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} spreadsheet-engine = { path = "../spreadsheet-engine" } [dev-dependencies] -makepad-test = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", package = "makepad-test" } +makepad-test = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", package = "makepad-test" } diff --git a/crates/apps/streem/Cargo.toml b/crates/apps/streem/Cargo.toml index 6a944ea..647f7a5 100644 --- a/crates/apps/streem/Cargo.toml +++ b/crates/apps/streem/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../../nigig-core" } nigig-uikit = { path = "../../nigig-uikit" } serde = { version = "1", features = ["derive"] } diff --git a/crates/apps/theming/Cargo.toml b/crates/apps/theming/Cargo.toml index 6ad0867..1d0d897 100644 --- a/crates/apps/theming/Cargo.toml +++ b/crates/apps/theming/Cargo.toml @@ -21,7 +21,7 @@ nigig-core = { path = "../../nigig-core" } # matches. If nigig-core uses a path dep, match it here. If it uses git, # match that. # makepad-widgets = { git = "https://github.com/makepad/makepad.git", branch = "dev" } -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} # ── Robius integration ─────────────────────────────────────────────────── # robius-use-makepad sets up the right Makepad feature flags for diff --git a/crates/nigig-core/Cargo.toml b/crates/nigig-core/Cargo.toml index 31e1280..3eb2041 100644 --- a/crates/nigig-core/Cargo.toml +++ b/crates/nigig-core/Cargo.toml @@ -12,7 +12,7 @@ async-rt = [] [dependencies] matrix_client = { path = "../matrix_client", default-features = false } nigig-system-prefs = { path = "../nigig-system-prefs" } -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} serde = { version = "1", features = ["derive"] } serde_json = "1" chrono = { version = "0.4", features = ["serde"] } diff --git a/crates/nigig-uikit/Cargo.toml b/crates/nigig-uikit/Cargo.toml index 8c25554..048508b 100644 --- a/crates/nigig-uikit/Cargo.toml +++ b/crates/nigig-uikit/Cargo.toml @@ -5,7 +5,7 @@ version = "0.1.0" edition = "2021" [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572"} +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc"} nigig-core = { path = "../nigig-core" } serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/crates/pageflipnav/Cargo.toml b/crates/pageflipnav/Cargo.toml index dd5aa32..f0028ee 100644 --- a/crates/pageflipnav/Cargo.toml +++ b/crates/pageflipnav/Cargo.toml @@ -48,7 +48,7 @@ panic = 'abort' strip = true [dependencies] -makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572", default-features = false, features = ["test", "serde", "maps"] } +makepad-widgets = { git = "https://gitdab.com/andodeki/makepad", rev = "ecf5a572ab62a1c1598909971f602f99083671cc", default-features = false, features = ["test", "serde", "maps"] } robius-use-makepad = "0.1.1" robius-open = { git = "https://github.com/project-robius/robius", rev = "b766e62b0600f5d2ee21cc6995648346fc277bd8" } robius-directories = { git = "https://github.com/project-robius/robius", rev = "b766e62b0600f5d2ee21cc6995648346fc277bd8" }