mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-26 11:49:16 +00:00
7e3e22138b
* fix(mesh): distinguish proxy bridge from pilot tunnel in registerProxyBridge rejection When central's MeshProxyTunnelDialer dials a node whose slot is already held by a peer-initiated proxy bridge, the registration is correctly refused, but the activity-log message read "pilot tunnel already registered for node N; proxy bridge refused" regardless of which kind of bridge was actually in the slot. No pilot tunnel exists in proxy-mode remotes by definition, so the wording pointed operators at the wrong subsystem. Use the existing bridgeKinds index (already consulted correctly by the sister method replaceOrRegisterProxyBridge) to emit a kind-accurate message: "proxy bridge already registered for node N; concurrent dial refused" when the existing bridge is a peer-initiated proxy bridge, keeping the original "pilot tunnel" wording for the pilot-agent case so existing log filters and the sister test still match. Pure cosmetic; the rejection behavior is unchanged. New regression test asserts the discriminator in both directions. Also tightens the test-fixture beforeEach to clear bridgeKinds alongside bridges so future tests cannot read a stale kind. * chore: ignore local trailer directory in git repository * refactor(mesh): centralize bridge-kind type and conflict-message formatter Followup tidy on PilotTunnelManager after /simplify flagged two related items in the F-R-2 change: - Extract `BridgeKind = 'pilot' | 'proxy'` as a module-scoped type alias so the kind taxonomy lives in one place. `bridgeKinds` and `injectBridgeForTest` now consume it; the inline union literal is gone. - Extract `formatBridgeConflict(nodeId, existingKind)` as a private helper. Both `registerProxyBridge` and `replaceOrRegisterProxyBridge` call it from their "slot already held" rejection paths, removing the byte-identical "pilot tunnel already registered for node N; proxy bridge refused" string copy across the two sites. - Trim the 6-line WHAT comment above the rejection throw to a 2-line WHY so the call site stays scannable. No behavior change; the three relevant test suites stay green.
68 lines
872 B
Plaintext
68 lines
872 B
Plaintext
# Dependencies
|
|
node_modules/
|
|
|
|
# Environment Variables (CRITICAL: Never commit secrets)
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
|
|
# Build Outputs
|
|
dist/
|
|
*.tsbuildinfo
|
|
backend/public/
|
|
|
|
# Sencho User Data & Mocks
|
|
data/
|
|
mock_data/
|
|
docker/
|
|
sencho.json
|
|
|
|
# OS Generated Files
|
|
.DS_Store
|
|
Thumbs.db
|
|
Desktop.ini
|
|
ehthumbs.db
|
|
|
|
# IDE / Editors
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
*.sublime-project
|
|
*.sublime-workspace
|
|
|
|
# Testing artifacts
|
|
test-results/
|
|
e2e/report/
|
|
html-report/
|
|
.coverage/
|
|
coverage/
|
|
.playwright-mcp/
|
|
|
|
# Logs
|
|
*.log
|
|
npm-debug.log*
|
|
|
|
# Auto-generated files
|
|
backend/cookies.txt
|
|
backend/src/generated/version.ts
|
|
|
|
# Local-only working files
|
|
.claude/
|
|
.worktrees/
|
|
plans/
|
|
CLAUDE.md
|
|
|
|
# Design system (local-only authoritative reference)
|
|
frontend/DESIGN.md
|
|
.design-bundle/
|
|
|
|
# Local-only projects (separate repos)
|
|
demo-video/
|
|
trailer/
|
|
website/
|
|
|
|
# Internal engineering docs (not published)
|
|
docs/internal/
|