You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: close OSS-launch gaps — docs accuracy, issue templates, neutral copy, message deep links
- CHANGELOG: correct the stale [Unreleased] entry claiming DLQ monitoring is
Azure-only; DlqMonitorWorker scans all providers and DlqMonitorService skips
only unregistered ones.
- README: surface the security posture (read-only default, AES-GCM at rest,
zero external calls, prod safety rails) as a callout at the top; replace
stale test counts with resilient rounded figures.
- Add .github/ISSUE_TEMPLATE (bug report, feature request, config) so the
templates CONTRIBUTING already references actually exist; security reports
routed to SECURITY.md via contact link.
- ConnectPage: provider-neutral marketing copy (hero, empty state, how-it-works,
comparison table) — Azure-specific text stays only in the Azure form and SAS
instructions. No functional changes.
- MessagesPage: message-level deep links — selection is initialized from and
mirrored to a ?message=<id> URL parameter so a specific message can be shared;
cleared on tab/entity switch with a first-render guard so deep links survive
page load. 4 new tests.
Frontend: 1,106 tests green, tsc clean. Backend untouched.
description: Something in ServiceHub isn't working as expected
3
+
title: "[Bug]: "
4
+
labels: ["bug", "triage"]
5
+
body:
6
+
- type: markdown
7
+
attributes:
8
+
value: |
9
+
Thanks for taking the time to report a bug. Before submitting, please search
10
+
[existing issues](https://github.com/debdevops/servicehub/issues) to avoid duplicates.
11
+
12
+
⚠️ **Security vulnerabilities:** do NOT report them here — see [SECURITY.md](https://github.com/debdevops/servicehub/blob/main/SECURITY.md) for responsible disclosure.
13
+
- type: textarea
14
+
id: what-happened
15
+
attributes:
16
+
label: What happened?
17
+
description: A clear description of the bug, and what you expected to happen instead.
18
+
placeholder: "When I click Replay on a DLQ message, the request fails with..."
19
+
validations:
20
+
required: true
21
+
- type: textarea
22
+
id: steps
23
+
attributes:
24
+
label: Steps to reproduce
25
+
placeholder: |
26
+
1. Connect a namespace with provider '...'
27
+
2. Open the Dead-Letter tab on queue '...'
28
+
3. Click '...'
29
+
4. See error
30
+
validations:
31
+
required: true
32
+
- type: dropdown
33
+
id: provider
34
+
attributes:
35
+
label: Cloud provider
36
+
description: Which provider does this affect?
37
+
options:
38
+
- Azure Service Bus
39
+
- AWS SQS/SNS
40
+
- GCP Pub/Sub
41
+
- Simulator mode
42
+
- Not provider-specific
43
+
validations:
44
+
required: true
45
+
- type: dropdown
46
+
id: mode
47
+
attributes:
48
+
label: Run mode
49
+
options:
50
+
- "./run.sh (development, real credentials)"
51
+
- "./run.sh --simulator"
52
+
- Self-hosted deployment
53
+
- Other
54
+
validations:
55
+
required: true
56
+
- type: input
57
+
id: version
58
+
attributes:
59
+
label: ServiceHub version
60
+
description: From the `.version` file or the version badge in the UI footer.
61
+
placeholder: "3.3.0"
62
+
validations:
63
+
required: true
64
+
- type: textarea
65
+
id: environment
66
+
attributes:
67
+
label: Environment
68
+
description: OS, .NET SDK version (`dotnet --version`), Node version (`node --version`), browser.
69
+
placeholder: |
70
+
OS: macOS 15.5
71
+
.NET: 10.0.100
72
+
Node: 22.11.0
73
+
Browser: Chrome 138
74
+
validations:
75
+
required: true
76
+
- type: textarea
77
+
id: logs
78
+
attributes:
79
+
label: Relevant logs
80
+
description: |
81
+
API console output or browser console errors.
82
+
⚠️ **Redact any connection strings, keys, or secrets before pasting.**
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@
15
15
16
16
-**AWS and GCP now have resilience pipelines matching Azure's retry pattern** — `AwsResiliencePipeline` and `GcpResiliencePipeline` (Polly-based, 3 retries, exponential backoff with jitter, 1s base / 30s cap) wrap the AWS SQS/SNS and GCP Pub/Sub message receivers/senders, retrying only transient errors (AWS: SDK-marked retryable or 5xx/429; GCP: `Unavailable`/`DeadlineExceeded`/`Internal`/`ResourceExhausted`/`Aborted` gRPC codes).
17
17
-**GCP Pub/Sub message count normalized** — `GcpMessageReceiver.GetMessageCountAsync` previously could surface as a failure; Pub/Sub has no direct count API, so it now returns a neutral `Success(0)`, consistent with the existing "unsupported read" convention used elsewhere (e.g. `GetScheduledMessagesAsync`).
18
-
-**DLQ background monitoring now skips non-Azure namespaces explicitly** — `DlqMonitorWorker`filters to Azure namespaces before scanning (DLQ monitoring is Azure-only today) and logs how many namespaces were skipped, instead of attempting and failing an Azure client build against AWS/GCP namespaces every poll cycle.
18
+
-**DLQ background monitoring is provider-aware** — `DlqMonitorWorker`scans all active namespaces regardless of provider; `DlqMonitorService` resolves each namespace's provider through `CloudProviderRouter`, skipping only namespaces whose provider is not registered on this server (with an explanatory log entry) instead of attempting an Azure client build against AWS/GCP namespaces. Provider conventions are handled per cloud: GCP `-dlq` dead-letter topic subscriptions, Azure `DeadLetterCount` short-circuiting.
Copy file name to clipboardExpand all lines: README.md
+5-2Lines changed: 5 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,6 +25,9 @@ Production breaks at 2 AM. Your cloud portal shows **5,000 messages in the Dead-
25
25
26
26
**ServiceHub is an ultra-fast, self-hosted web application that gives engineers full forensic visibility into their cloud message queues** — like a debugger, but for Azure Service Bus, AWS SQS/SNS, and GCP Pub/Sub.
27
27
28
+
> [!IMPORTANT]
29
+
> **Built for strict environments.** Read-only by default (`Peek`, never consume) · connection strings AES-GCM-256 encrypted at rest · **zero external calls** — pattern analysis runs entirely in your browser, no message data ever leaves your network · destructive actions (replay, send) blocked on production namespaces. Details in [Security](#security).
30
+
28
31
> [!TIP]
29
32
> **No credentials?** Try the built-in [Simulator Mode](#simulator-mode) — runs 3 synthetic namespaces (Azure + AWS + GCP) with 50 seeded messages each. No cloud account needed.
30
33
@@ -267,10 +270,10 @@ ServiceHub uses client-side heuristic pattern detection — pure JavaScript in y
267
270
Bug fixes, features, and documentation improvements are welcome!
268
271
269
272
```bash
270
-
# Unit tests (Vitest — 1,045 tests, ≥60% coverage required)
273
+
# Unit tests (Vitest — 1,100+ tests, ≥60% coverage required)
271
274
cd apps/web && npm run test:coverage
272
275
273
-
# Backend tests (xUnit — 1,327 tests)
276
+
# Backend tests (xUnit — 1,500+ unit + integration tests)
0 commit comments