Skip to content

fix(upgrade): context-aware footer + EPERM handling + gitignore parent coverage (#549)#551

Closed
bradygaster wants to merge 135 commits intomainfrom
squad/549-privacy-messaging
Closed

fix(upgrade): context-aware footer + EPERM handling + gitignore parent coverage (#549)#551
bradygaster wants to merge 135 commits intomainfrom
squad/549-privacy-messaging

Conversation

@bradygaster
Copy link
Copy Markdown
Owner

Fixes #549

  • Footer now shows 'Privacy scrub applied' when email scrub ran, 'Preserves user state' otherwise
  • ensureGitattributes gracefully warns on EPERM instead of crashing
  • ensureGitignore skips entries already covered by parent paths

Tested: upgrade test suite passes, end-to-end agent testing on upgrade path completed.

bradygaster and others added 30 commits March 7, 2026 12:05
… merged

Session: 2026-03-07T20-03-20Z-v0821-release
Requested by: Spawn manifest (release coordination)

Changes:
- Logged orchestration outputs for Kobayashi, Hockney, McManus, Rabin
- Logged session summary: v0.8.21 release complete (3,768 tests passing, docs deployed)
- Merged decisions from inbox: npm publish CI directive + Kobayashi's GitHub Actions automation
- Propagated cross-agent updates to affected agents' history.md (Kobayashi, Hockney, McManus, Rabin)

Directives:
- GitHub Actions (publish.yml) is now authoritative for npm publishing; local npm publish deprecated
- Brady must add NPM_TOKEN secret to GitHub repo settings to enable CI-based publishing
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
# Conflicts:
#	package.json
#	packages/squad-cli/package.json
#	packages/squad-sdk/package.json
# Conflicts:
#	.squad/agents/_alumni/kobayashi/history.md
Add the required changeset for the README docs fix.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When squad init runs inside a subdirectory of a parent git repo,
copilot resolves .github/agents/ from the git root (parent), not
from CWD. This makes the Squad agent invisible to copilot.

Added detectParentGitRepo() to init.ts that:
- Compares CWD to git rev-parse --show-toplevel
- Warns the user if they differ
- Auto-runs git init to create a proper repo boundary

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-13T17-53-reskill
Requested by: squad-coordinator

Changes:
- Logged reskill session (Verbal skills, charter trim, history hygiene)
- Verbal created 3 skills: reskill, agent-collaboration, ci-validation-gates
- Keaton trimmed all 22 charters (25.7KB savings, 42.2% reduction)
- Hockney deduplicated 6 agent histories (204.5KB savings, 84.8% reduction)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Session: 2026-03-13T20-28-00Z-issue-triage
Agent: Keaton (Lead)

Changes:
- Logged issue triage session (47 issues processed)
- Remapped 19 Apollo 13 labels to Usual Suspects cast
- Triaged 26 unlabeled issues
- Closed 2 duplicate issues

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds custom universe casting from contributor boclifton-MSFT.
Users can define custom character lists in .squad-templates/casting/.
Replaces real-name examples with fictional ones per review feedback.

Co-authored-by: boclifton-MSFT <102168009+boclifton-MSFT@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Updates README.md links to point to published docs site instead of local paths.

Co-authored-by: Matthew Corven <27839633+matthewcorven@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds prominent recommendation to use 'copilot --yolo' in Quick Start guide to avoid approval prompts for each tool call.

Co-authored-by: Dina Berry <41597107+diberry@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds mandatory scannability framework for content review. Defines when to use paragraphs, bullets, tables, and callouts. Includes decision test for format selection.

Co-authored-by: Dina Berry <41597107+diberry@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…346)

Replaces hardcoded ~/.squad/ references with platform-aware descriptions. The SDK correctly resolves personal squad paths via resolveGlobalSquadPath().

Co-authored-by: James Sturtevant <648372+jsturtevant@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Updated history with PR merge pattern learnings and base branch handling strategies.
Co-authored-by: Dina Berry <diberry@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Dina Berry <diberry@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: James Sturtevant <jsturtevant@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Dina Berry <diberry@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
New docs pages derived from public blog post analysis:
- scenarios/ralph-operations.md: outer loop deployment, mutex, logging, alerting
- scenarios/proactive-communication.md: two-way Teams webhooks and scanning
- features/issue-templates.md: squad-aware issue templates, routing labels
- features/reviewer-protocol.md: trust levels section (full/selective/self-managing)
- test/docs-build.test.ts: assertions updated for new pages

All content follows Microsoft Style Guide. No individual repo names — aggregate
references only per owner privacy directive.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove ralph-operations.md and proactive-communication.md — both document
infrastructure around Squad (webhooks, WorkIQ, deployment patterns) rather
than Squad itself. Content moves to Squad IRL repo.

Reframe issue-templates.md to clarify GitHub Issue Templates are a platform
feature configured for Squad routing, not a Squad feature.

Litmus test applied: if Squad doesn't ship the code/config, it belongs in IRL.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Created comprehensive documentation for working across GitHub personal
accounts and GitHub Enterprise Managed Users (EMU):

- New scenario page: scenarios/cross-org-auth.md
  - Three solution approaches: gh auth switch, Copilot instructions,
    Squad skill pattern
  - Git credential helper configuration
  - Common error messages and verification steps

- Updated troubleshooting.md with cross-org auth section
- Updated enterprise-platforms.md authentication section with cross-ref
- Added navigation entry for Cross-Org Auth scenario
- Updated test assertions in docs-build.test.ts

Follows Microsoft Style Guide (sentence-case headings, active voice).
Includes practical examples and cross-references to related pages.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fixed test assertion arrays to match actual files on disk:
- EXPECTED_SCENARIOS: expanded from 7 to 25 entries
- EXPECTED_FEATURES: added new array with 32 entries

This resolves the sync issue identified in PR #331 review where
test assertions were out of sync with docs/src/content/docs/ structure.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ntent triage, remote access proposal

Session: 2026-03-11T01-27-57-post-work-orchestration
Agents: FIDO (Quality Owner), Flight (Lead)

Changes:
- Orchestration logs for FIDO (test assertion sync fix, commit 6599db6) and Flight (content triage skill)
- Merged 6 decisions from inbox to decisions.md
- Consolidated boundary heuristic: "Squad Ships It" (docs vs IRL) across content-triage skill and PR #331 review
- Added content-triage workflow for external content integration
- Added phased rollout proposal for remote Squad access (Discussions → Copilot → Chat)
- Added PR trust levels spectrum (full/selective/self-managing)
- Cross-agent updates: FIDO, Flight, PAO history.md sync; boundary heuristic shared

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…dlers

Includes:
- SkillScriptLoader with handler types
- Replace CONCERN_TOOL_MAP with directory scan
- OTel instrumentation for skill handlers
- resolveSkillPath DRY refactor
- backendConfig security docs

Co-authored-by: Emmitt <1337ERJ1337@gmail.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove incorrect lazyRunShell() call in cli-entry.ts (use runShell directly)
- Remove undefined maxVisible prop from MessageStream component

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: spboyer <spboyer@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- docs-build.test.ts: Add EXPECTED_CONCEPTS array for new concepts/ docs
  Added 5 concept files (github-workflow, memory-and-knowledge, parallel-work,
  portability, your-team) and included them in HTML generation test

- shell-metrics.test.ts: Clear OTEL_EXPORTER_OTLP_ENDPOINT in disabled test
  enableShellMetrics() returns true if either SQUAD_TELEMETRY=1 OR
  OTEL_EXPORTER_OTLP_ENDPOINT is set. Test now clears both to verify
  disabled state

- cli-packaging-smoke.test.ts: Remove non-existent commands
  Removed 'subsquads', 'upstream', and 'workstreams' commands that were
  removed in recent PRs

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
bradygaster and others added 27 commits March 22, 2026 03:17
* feat: economy mode skill, governance proposals for #500 and #344

- Add .squad/skills/economy-mode/SKILL.md: Layer 3 cost modifier
  - Economy table shifts code tasks to gpt-4.1/gpt-5-mini, arch to sonnet
  - Activation: session phrase, config.json economyMode:true, or --economy flag
  - Layer 0/1/2 (user intent) always overrides economy mode
  - 💰 indicator in spawn acknowledgments
  - Confidence: low (first implementation)

- Add .squad/decisions/inbox/procedures-economy-mode-governance.md
  - Draft additions to squad.agent.md for Flight review
  - Economy mode paragraph after Layer 0, updated table, 💰 convention
  - Valid models catalog audit findings (claude-sonnet-4.6 missing, etc.)

- Add .squad/decisions/inbox/procedures-personal-squad-governance.md
  - Five gap analysis: Init Mode, consult mode detection, TEAM_ROOT semantics,
    charter templates, missing consult-mode skill
  - Proposed CONSULT_MODE spawn signal and 🧳 acknowledgment format
  - Proposed new consult-mode skill (post-governance-approval)

- Update procedures history.md with learnings

Closes #500
References #344

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: economy mode for cost-conscious model selection (#500)

Add economy mode that shifts model selection to cheaper alternatives
at Layer 3 (task-aware auto) and Layer 4 (default). Explicit user
preferences at Layers 0-2 are never overridden.

SDK changes:
- Add ECONOMY_MODEL_MAP and applyEconomyMode() to config/models.ts
- Add readEconomyMode() / writeEconomyMode() for config.json persistence
- Update resolveModel() in config/models.ts with economyMode option
- Update resolveModel() in agents/model-selector.ts with economyMode option

CLI changes:
- Add 'squad economy [on|off]' command for persistent toggle
- Add --economy global flag for session-level activation (SQUAD_ECONOMY_MODE=1)

Tests:
- 34 new tests in test/economy-mode.test.ts (all passing)

Economy model table:
  claude-opus-4.6   -> claude-sonnet-4.5 (architecture/review)
  claude-sonnet-4.6 -> gpt-4.1           (code writing)
  claude-haiku-4.5  -> gpt-4.1           (docs/mechanical)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add .squad/skills/economy-mode/SKILL.md: Layer 3 cost modifier
  - Economy table shifts code tasks to gpt-4.1/gpt-5-mini, arch to sonnet
  - Activation: session phrase, config.json economyMode:true, or --economy flag
  - Layer 0/1/2 (user intent) always overrides economy mode
  - 💰 indicator in spawn acknowledgments
  - Confidence: low (first implementation)

- Add .squad/decisions/inbox/procedures-economy-mode-governance.md
  - Draft additions to squad.agent.md for Flight review
  - Economy mode paragraph after Layer 0, updated table, 💰 convention
  - Valid models catalog audit findings (claude-sonnet-4.6 missing, etc.)

- Add .squad/decisions/inbox/procedures-personal-squad-governance.md
  - Five gap analysis: Init Mode, consult mode detection, TEAM_ROOT semantics,
    charter templates, missing consult-mode skill
  - Proposed CONSULT_MODE spawn signal and 🧳 acknowledgment format
  - Proposed new consult-mode skill (post-governance-approval)

- Update procedures history.md with learnings

Closes #500
References #344

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add rateLimitGuidance() and extractRetryAfter() to error-messages.ts
- Detect rate limit errors (instanceof RateLimitError or message pattern)
  in handleDispatch catch block instead of falling through to generic message
- Show actionable recovery: retry time, squad economy on, model override
- Write .squad/rate-limit-status.json on detection for squad doctor to read
- Add checkRateLimitStatus() to squad doctor — warns on recent rate limits,
  passes when stale (>4h), silent when no rate limit has been hit
- 36 new tests covering rateLimitGuidance, extractRetryAfter, and doctor check

Closes #464

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Orchestration log for 2026-03-22 session covering:
- #500 economy mode (PR #504)
- #502 node:sqlite fix (PR #506)
- #464 rate limit UX (PR #505)
- #500/#344 governance (PR #503)
- #329/#344 architecture plan (Flight, no PR yet)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add orchestration log: 2026-03-22T22-45-flight-triage-525.md
- Add session log: 2026-03-22T22-45-triage-session.md
- Merge decision inbox (6 files) into decisions.md:
  - flight-triage-525.md (validated #525, P2 rating, sub-issue decomposition, top-5 v1 priorities)
  - eecom-economy-mode.md (economy mode design decision)
  - eecom-node-sqlite.md (Node 22.5.0+ hard-fail decision)
  - eecom-rate-limit-ux.md (rate limit detection and recovery)
  - procedures-economy-mode-governance.md (squad.agent.md governance proposal)
  - procedures-personal-squad-governance.md (consult mode governance proposal)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…udit, #533 filed

Orchestration logs for all 12 agent actions from 2026-03-23 parallel session:
- EECOM: SDK foundation, CLI surface, Ralph commands, worktree cleanup, VCS audit
- Procedures: Governance, issue lifecycle, coordinator worktree
- Flight: Issue decomposition, heuristic decision, doctor support
- FIDO: Test suite (27 tests, 4,818 passing)

Session log summarizes all work with decision captures, next steps, blocking status.

Merged user directive: Teams messaging requires Brady approval and content review.
Deleted: .squad/decisions/inbox/copilot-directive-20260322-173914.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…#536)

- Add personalDir to ResolvedSquadPaths
- Add resolvePersonalSquadDir() with SQUAD_NO_PERSONAL kill switch
- Add PersonalAgentMeta/PersonalAgentManifest types
- Add resolvePersonalAgents() for personal agent discovery
- Add mergeSessionCast() to merge personal into project cast
- Add ensureSquadPathTriple() for triple-root path validation
- Export all new functions and types

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* feat(sdk): add personal squad resolution and ambient discovery (#508)

- Add personalDir to ResolvedSquadPaths
- Add resolvePersonalSquadDir() with SQUAD_NO_PERSONAL kill switch
- Add PersonalAgentMeta/PersonalAgentManifest types
- Add resolvePersonalAgents() for personal agent discovery
- Add mergeSessionCast() to merge personal into project cast
- Add ensureSquadPathTriple() for triple-root path validation
- Export all new functions and types

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(cli): add personal squad commands and cast display (#508)

- Add 'squad personal init/list/add/remove' subcommands
- Add 'squad cast' to show merged session cast
- Add --team-root CLI flag for explicit team root override
- Register commands in cli-entry.ts with help text

PR #2 of #508 implementation plan.
Depends on: squad/508-sdk-foundation (PR #1)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add Ghost Protocol template for personal agent behavior rules
- Add personal charter template for personal agents
- Update squad.agent.md with personal squad awareness
- Add consult mode detection and routing
- Add personal-squad skill document

PR #3 of #508 implementation plan.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…543)

Create the missing issue-lifecycle template document referenced by
squad.agent.md at lines 1097 and 1103. Documents the complete
issue→branch→PR→merge lifecycle across GitHub, Azure DevOps, and
Planner platforms.

Includes:
- Platform-specific issue state mappings
- Branch naming conventions (squad/{issue-number}-{slug})
- PR creation and review workflows
- Ralph's role in issue lifecycle monitoring
- Spawn prompt additions for issue context
- Merge commands and cleanup procedures
- Common lifecycle patterns and anti-patterns

This template provides the reference guide that agents use when
working on repository issues, from initial assignment through
PR merge and cleanup.

Closes #527

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Test resolvePersonalSquadDir() with kill switch and dir detection
- Test resolvePersonalAgents() discovery and metadata parsing
- Test mergeSessionCast() dedup and precedence rules
- Test ensureSquadPathTriple() path validation for triple-root mode
- Test Ghost Protocol enforcement
- Test CLI personal commands (init, list, add, remove)

Added package.json exports for:
- @bradygaster/squad-sdk/config/agent-source
- @bradygaster/squad-cli/commands/personal
- @bradygaster/squad-cli/commands/cast

Fixed help text formatting to stay within 80-char UX gate.

PR #4 of #508 implementation plan.
All 27 tests pass. Full test suite: 4818 tests passing.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add pre-spawn worktree setup logic to coordinator prompt
- Add WORKTREE_PATH and WORKTREE_MODE to spawn templates
- Add worktree lifecycle management section
- Document worktree reuse and dependency management

Closes #529

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…518)

* feat: cooperative rate limiting with predictive circuit breaker (#515)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: TypeScript strict null checks and add missing SDK export

- Add non-null assertions for array indexing in PredictiveCircuitBreaker
- Add ./ralph/rate-limiting export entry to SDK package.json

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: split canUseQuota into pure read + consumeQuota, fix JSDoc

- canUseQuota() is now a pure read — returns boolean, no side effects
- consumeQuota() handles stale lease reclamation and usage tracking
- Correct JSDoc: prediction uses first-to-last delta rate, not linear regression
- Update tests: add consumeQuota test suite, fix canUseQuota purity assertions

Fixes Q review findings on PR #518: side-effect bug in canUseQuota()
and inaccurate 'linear regression' JSDoc claim.

* fix: use subpath imports in rate-limiting tests, remove unused writeFile import

- Changed test import from relative path to @bradygaster/squad-sdk/ralph/rate-limiting
- Removed unused writeFile import from rate-limiting.ts

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: bradygaster <bradyg@microsoft.com>
* docs: KEDA external scaler template for autoscaling (#516)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: remove stray test/capabilities.test.ts (belongs to PR #520)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: bradygaster <bradyg@microsoft.com>
* feat: machine capability discovery & needs:* label routing (#514)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: machine capability discovery & needs:* label routing (#514)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: revert package-lock.json engine requirement to >=20.0.0

The lockfile had been regenerated with >=22.5.0 engine requirements,
which is a breaking change. Reverting to keep Node >=20 compatibility.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: bradygaster <bradyg@microsoft.com>
10 fixes addressing 13 upgrade gaps found during 3-agent audit. Cross-tested across 23 repos (244/245 checks passing, 99.6%).

Fixes #544

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix broken link in cli.md: getting-started/index.md → guide.md
- Add TELMU and Automator to cspell dictionary
- Increase validateWorkItemType case-insensitive test timeout to 10s
  (execFileSync calls az CLI twice with 3s timeout each, exceeding 5s default)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Anonymized writeup of squad fanning out 9 agents across 23 repos
(244/245 checks passing) to validate the upgrade path before release.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Propagate canonical template changes from .squad-templates/ to all
target directories (templates/, packages/squad-cli/templates/,
packages/squad-sdk/templates/, .github/agents/).

Includes new skill templates, casting Futurama universe,
rate-limiting/circuit-breaker docs, and personal squad coordinator
section in squad.agent.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The patch-esm-imports script was skipping when any exports field existed,
even if it was incomplete (missing ./node.js). Now checks for the critical
./node.js subpath specifically before skipping.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…t coverage (#549)

- Footer now shows "Privacy scrub applied" when email scrub ran,
  "Preserves user state" otherwise (fixes contradictory messaging)
- ensureGitattributes gracefully warns on EPERM instead of crashing
- ensureGitignore skips entries already covered by parent paths

Closes #549

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Orchestration log: EECOM #549 privacy scrub fix (PR #551)
- Orchestration log: Flight community PR batch review (5 PRs reviewed)
- Session log: 2026-03-23T06-50-00Z PR review + #549 consolidation
- Merged decisions from inbox:
  * Context-aware upgrade footer message (#549)
  * Community PR batch review outcomes (diberry, tamirdresher, JasonYeYuhe)
  * Tamirdresher PR series guidance
- Updated agent histories with session outcomes

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace npx @bradygaster/squad-cli with squad (global install)
- Remove npx alternatives and stale migration notes
- Remove deprecated 'npx github:bradygaster/squad' hang troubleshooting section
- Update insider-program.md to use npm install -g @bradygaster/squad-cli@insider
- Audit 'agency' usage — all hits are MIT attribution for agency-agents (keep)
- Fix cli-entry.ts example: agency copilot -> gh copilot

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@bradygaster
Copy link
Copy Markdown
Owner Author

Merged locally to dev — branch work complete.

@bradygaster bradygaster deleted the squad/549-privacy-messaging branch March 23, 2026 17:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants