This commit is contained in:
Thanh Nguyen 2026-01-30 15:57:06 +00:00 committed by GitHub
commit ddfb06b06a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 29 additions and 3 deletions

View File

@ -16,6 +16,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -101,6 +105,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -217,6 +225,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -293,6 +305,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then
@ -389,6 +405,10 @@ jobs:
- name: Checkout submodules (retry) - name: Checkout submodules (retry)
run: | run: |
set -euo pipefail set -euo pipefail
if [ ! -f .gitmodules ]; then
echo "No .gitmodules found; skipping submodule update."
exit 0
fi
git submodule sync --recursive git submodule sync --recursive
for attempt in 1 2 3 4 5; do for attempt in 1 2 3 4 5; do
if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then if git -c protocol.version=2 submodule update --init --force --depth=1 --recursive; then

View File

@ -8,21 +8,23 @@ export function normalizeSignalMessagingTarget(raw: string): string | undefined
if (!normalized) return undefined; if (!normalized) return undefined;
const lower = normalized.toLowerCase(); const lower = normalized.toLowerCase();
if (lower.startsWith("group:")) { if (lower.startsWith("group:")) {
// Preserve case for group IDs - base64 is case-sensitive
const id = normalized.slice("group:".length).trim(); const id = normalized.slice("group:".length).trim();
return id ? `group:${id}`.toLowerCase() : undefined; return id ? `group:${id}` : undefined;
} }
if (lower.startsWith("username:")) { if (lower.startsWith("username:")) {
const id = normalized.slice("username:".length).trim(); const id = normalized.slice("username:".length).trim();
return id ? `username:${id}`.toLowerCase() : undefined; return id ? `username:${id.toLowerCase()}` : undefined;
} }
if (lower.startsWith("u:")) { if (lower.startsWith("u:")) {
const id = normalized.slice("u:".length).trim(); const id = normalized.slice("u:".length).trim();
return id ? `username:${id}`.toLowerCase() : undefined; return id ? `username:${id.toLowerCase()}` : undefined;
} }
if (lower.startsWith("uuid:")) { if (lower.startsWith("uuid:")) {
const id = normalized.slice("uuid:".length).trim(); const id = normalized.slice("uuid:".length).trim();
return id ? id.toLowerCase() : undefined; return id ? id.toLowerCase() : undefined;
} }
// Phone numbers and other targets can be lowercased
return normalized.toLowerCase(); return normalized.toLowerCase();
} }

View File

@ -80,11 +80,15 @@ export async function runCommandWithTimeout(
} }
const stdio = resolveCommandStdio({ hasInput, preferInherit: true }); const stdio = resolveCommandStdio({ hasInput, preferInherit: true });
const cmdTool = path.parse(argv[0] ?? "").name;
const needsShell =
process.platform === "win32" && ["npm", "pnpm", "yarn", "npx"].includes(cmdTool);
const child = spawn(argv[0], argv.slice(1), { const child = spawn(argv[0], argv.slice(1), {
stdio, stdio,
cwd, cwd,
env: resolvedEnv, env: resolvedEnv,
windowsVerbatimArguments, windowsVerbatimArguments,
shell: needsShell,
}); });
// Spawn with inherited stdin (TTY) so tools like `pi` stay interactive when needed. // Spawn with inherited stdin (TTY) so tools like `pi` stay interactive when needed.
return await new Promise((resolve, reject) => { return await new Promise((resolve, reject) => {