Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
146 commits
Select commit Hold shift + click to select a range
f20b5e0
docs(specs): rate-limit fairness, over-limit visibility, scheduling p…
fclairamb Aug 26, 2026
bd6d421
docs: resolve open questions for rate-limit fair rotation spec
fclairamb Aug 26, 2026
36b2b28
docs: resolve open questions for superadmin entitlements editor spec
fclairamb Aug 26, 2026
a715ad9
chore: start implementing rate-limit fair rotation
fclairamb Aug 26, 2026
803124a
docs: add implementation plan for rate-limit fair rotation
fclairamb Aug 26, 2026
2e82d63
feat: preserve effective_scheduled_at on rate-limited deferrals
fclairamb Aug 26, 2026
59145e0
docs: correct the deprioritize-offset ceiling and document bucket scope
fclairamb Aug 26, 2026
1157adf
test: prove an over-cap org rotates its deficit across both claim paths
fclairamb Aug 26, 2026
7d873b9
test: cover the agent dispatch gate's rate-limit deferral end to end
fclairamb Aug 26, 2026
738af7b
docs: document the rate-limit deferral rotation and per-process bucke…
fclairamb Aug 26, 2026
1e22fc1
docs: refresh the maxChecksPerMinute enforcement line references
fclairamb Aug 26, 2026
9849e01
chore: all checks passing for rate-limit fair rotation
fclairamb Aug 26, 2026
a90f739
docs: correct the effective_scheduled_at offset ceiling on the model …
fclairamb Aug 26, 2026
4df77c1
docs: archive completed spec rate-limit fair rotation
fclairamb Aug 26, 2026
d9adab0
feat: add a daily rate-limited-skip usage counter and a shared passiv…
fclairamb Aug 26, 2026
66b2d83
feat: expose checksPerMinute demand, limit and daily skips on the ent…
fclairamb Aug 26, 2026
651ec75
feat: warn an over-limit org that its check executions are being skipped
fclairamb Aug 26, 2026
731b4ca
test: prove the demand formula, both skip counters and the banner's t…
fclairamb Aug 26, 2026
d752c74
chore: all checks passing for org over-limit banner
fclairamb Aug 26, 2026
e7b7c84
docs: archive completed spec org over-limit banner
fclairamb Aug 26, 2026
ea0198d
chore: start implementing check scheduling page
fclairamb Aug 26, 2026
1b68c8f
docs(specs): internal-check quota loophole (from entitlements banner …
fclairamb Aug 26, 2026
266c6f5
docs: add implementation plan for check scheduling page
fclairamb Aug 26, 2026
4dbd7d3
feat: add a check scheduling page that brings an org back under its r…
fclairamb Aug 26, 2026
e521169
test: prove the scheduling math, the rebalance proposal and the four …
fclairamb Aug 26, 2026
d481048
feat(dash0): make the scheduling table fully usable on a phone, with …
fclairamb Aug 26, 2026
91e1554
fix(dash0): anchor the scheduling meter on the server's own demand fi…
fclairamb Aug 26, 2026
c2186e4
chore: all checks passing for check scheduling page
fclairamb Aug 26, 2026
2aefe1d
fix(dash0): floor the scheduling period select at the server's 10s mi…
fclairamb Aug 26, 2026
69a1d02
chore: all checks passing for check scheduling page
fclairamb Aug 26, 2026
e284c74
docs: archive completed spec check scheduling page
fclairamb Aug 26, 2026
71563b1
chore: start implementing internal checks quota loophole
fclairamb Aug 26, 2026
da4f8e0
docs: add implementation plan for internal checks quota loophole
fclairamb Aug 26, 2026
c858a20
feat: refuse a client-supplied internal flag on every check write path
fclairamb Aug 26, 2026
a2efd09
fix: exempt internal checks from both per-org rate gates
fclairamb Aug 26, 2026
88b107b
feat(openapi): stop advertising internal as a writable check field
fclairamb Aug 26, 2026
658d590
test: prove internal is refused on every write path, with positive co…
fclairamb Aug 26, 2026
9e54965
test: prove internal checks draw no rate token on either gate
fclairamb Aug 26, 2026
245fcc1
feat: flag a document-level internal flag in validate, and document t…
fclairamb Aug 26, 2026
e6733fa
docs: add the internal-checks residue sweep query for upgrades
fclairamb Aug 26, 2026
c669655
refactor: split the import entry validation out of importSingleCheck
fclairamb Aug 26, 2026
0f14ecc
fix(dash0): stop typing internal as writable on check create/update
fclairamb Aug 26, 2026
3d8b478
chore: all checks passing for internal checks quota loophole
fclairamb Aug 26, 2026
07d0835
docs: archive completed spec internal checks quota loophole
fclairamb Aug 26, 2026
447c241
docs: resolve open questions for graph availability strip
fclairamb Aug 27, 2026
7cd9fad
feat: add severity/code to validation findings and an org-rate projec…
fclairamb Aug 27, 2026
04b8837
feat: report every check-validation finding, with severity, codes, sl…
fclairamb Aug 27, 2026
a0965a0
feat(openapi): document validate severities, codes and the extended r…
fclairamb Aug 27, 2026
417861a
test: prove multi-finding validate, slug collisions, the rate project…
fclairamb Aug 27, 2026
18797d4
feat(dash0): show a check's real custom period and warn before it bre…
fclairamb Aug 27, 2026
b256e00
docs: document the extended check validate contract
fclairamb Aug 27, 2026
8b02def
chore: satisfy gocritic, perfsprint and unparam in the validate pass
fclairamb Aug 27, 2026
eae0f77
fix(dash0): fall back to the ladder when a stored period is unparseable
fclairamb Aug 27, 2026
29552be
chore: all checks passing for Field-by-field check validation with wa…
fclairamb Aug 27, 2026
27a1816
docs: archive completed spec Field-by-field check validation with war…
fclairamb Aug 27, 2026
d162a76
chore: start implementing Superadmin entitlements editor
fclairamb Aug 27, 2026
96b8e3d
docs: add implementation plan for Superadmin entitlements editor
fclairamb Aug 27, 2026
36ce379
feat(entitlements): let an admin override outrank the next billing push
fclairamb Aug 27, 2026
04d3db1
feat(entitlements): add the superadmin org-limits endpoints
fclairamb Aug 27, 2026
86589e5
test: prove the admin override outranks billing and the editor's authz
fclairamb Aug 27, 2026
43fbac4
feat(openapi): document the superadmin entitlements editor and the su…
fclairamb Aug 27, 2026
f9194ad
feat(dash0): add the superadmin entitlements editor with explicit unl…
fclairamb Aug 27, 2026
8094738
test(dash0): cover the entitlements editor's unlimited semantics and …
fclairamb Aug 27, 2026
ba5568d
chore: all checks passing for Superadmin entitlements editor
fclairamb Aug 27, 2026
d9ff9f6
fix(dash0): render Permission Denied on a 403 instead of a generic lo…
fclairamb Aug 27, 2026
b2ad85b
chore: all checks passing for Superadmin entitlements editor
fclairamb Aug 27, 2026
b916846
fix(entitlements): make an admin row's null cap mean unlimited, and k…
fclairamb Aug 27, 2026
9009613
fix(dash0): surface an org-admin row as its own provenance, not as fr…
fclairamb Aug 27, 2026
7d14f5b
chore: all checks passing for Superadmin entitlements editor
fclairamb Aug 27, 2026
d91257c
fix(db): relabel legacy admin entitlement rows to org-admin before th…
fclairamb Aug 27, 2026
394325e
chore: all checks passing for Superadmin entitlements editor
fclairamb Aug 27, 2026
2f30846
docs: point the migration convention at 016_v0_19_0 now that v0.18.3 …
fclairamb Aug 27, 2026
5c44b34
docs: archive completed spec Superadmin entitlements editor
fclairamb Aug 27, 2026
5873337
Merge remote-tracking branch 'origin/main' into batch/2026-08-26-2
fclairamb Aug 27, 2026
99cdb4b
feat: add Gotify notification sender and wire it into the integration…
fclairamb Aug 27, 2026
4de7acb
test: cover the Gotify sender (URL join, token header, priority mappi…
fclairamb Aug 27, 2026
905418e
feat(dash0): add the Gotify integration form, icon, and locale entries
fclairamb Aug 27, 2026
93b79ca
docs: document the Gotify notification integration
fclairamb Aug 27, 2026
39f1ba9
chore: all checks passing for Self-hosters can't push SolidPing alert…
fclairamb Aug 27, 2026
bdbd7ea
docs: stop attributing the Gotify click-through comment to ntfy
fclairamb Aug 27, 2026
2fbb93e
docs: archive completed spec Self-hosters can't push SolidPing alerts…
fclairamb Aug 27, 2026
b13dfc5
feat: add Zulip notification sender and wire it into the integration …
fclairamb Aug 27, 2026
524c576
test: cover the Zulip sender (basic auth, form-encoded body, topic th…
fclairamb Aug 27, 2026
ee60f91
feat(dash0): add the Zulip integration form, icon, and locale entries
fclairamb Aug 27, 2026
b7833aa
docs: document the Zulip notification integration
fclairamb Aug 27, 2026
9d0c851
fix: address golangci-lint findings in the Zulip sender
fclairamb Aug 27, 2026
dd3bf39
chore: all checks passing for Zulip is the missing chat integration
fclairamb Aug 27, 2026
4ce8afd
fix: budget the incident-ref suffix before truncating a Zulip topic
fclairamb Aug 27, 2026
f51d04d
chore: all checks passing for Zulip is the missing chat integration
fclairamb Aug 27, 2026
5b25ba4
docs: archive completed spec Zulip is the missing chat integration
fclairamb Aug 27, 2026
f6b3808
chore: start implementing The dashboard "24h Availability" KPI is fab…
fclairamb Aug 27, 2026
2bd1031
docs: add implementation plan for the dashboard 24h availability KPI
fclairamb Aug 27, 2026
2917c30
feat(api): compute a real 24h availability figure server-side
fclairamb Aug 27, 2026
55a1ff7
feat(openapi): document CheckStats.availability24h
fclairamb Aug 27, 2026
a1f647d
test(api): cover the 24h availability aggregation on both dialects
fclairamb Aug 27, 2026
3060517
feat(dash0): render the real 24h availability KPI, never a fabricated…
fclairamb Aug 27, 2026
4751bf9
test(dash0): E2E cover the 24h availability KPI and drop the dead day…
fclairamb Aug 27, 2026
eed94da
chore: all checks passing for the dashboard 24h availability KPI
fclairamb Aug 27, 2026
4ad93b5
docs: document CheckStats.availability24h in the checks API spec
fclairamb Aug 27, 2026
3fce8f9
fix(cli): convert the entitlements source enum before concatenating it
fclairamb Aug 27, 2026
3e29594
docs: archive completed spec The dashboard 24h Availability KPI is fa…
fclairamb Aug 27, 2026
62404af
chore: start implementing the graph availability strip
fclairamb Aug 27, 2026
3dafb55
docs: add implementation plan for the graph availability strip
fclairamb Aug 27, 2026
702cd02
feat(uptimebar): add region-scoped availability reads and one shared …
fclairamb Aug 27, 2026
a95b63e
feat(api): add the bucketed check-availability endpoint behind the sh…
fclairamb Aug 27, 2026
a33ef77
docs(openapi): document the bucketed availability endpoint
fclairamb Aug 27, 2026
41f722a
feat(dash0): render an availability strip aligned to the response-tim…
fclairamb Aug 27, 2026
d0d6dc1
test(dash0): cover the availability strip's bucketing, states and cha…
fclairamb Aug 27, 2026
6b6ba72
test(dash0): E2E cover the chart availability strip across ranges, zo…
fclairamb Aug 27, 2026
4733d31
fix(lint): satisfy naming and spelling rules on the bucketed availabi…
fclairamb Aug 27, 2026
aa6b8e5
feat(status0): color the response-time chart strip by availability, n…
fclairamb Aug 27, 2026
97d95a1
test(dash0): assert the availability strip's tooltip content on hover
fclairamb Aug 27, 2026
cb55cfe
fix(lint): line length and spelling in the status-page availability t…
fclairamb Aug 27, 2026
41c9cc7
chore: all checks passing for the graph availability strip
fclairamb Aug 27, 2026
4f0c4b9
chore(client): regenerate the Go client from the current OpenAPI spec
fclairamb Aug 27, 2026
8a8d191
docs: stop claiming the badge SVG shares the availability classifier
fclairamb Aug 27, 2026
82869b0
docs: archive completed spec add an availability strip aligned to eve…
fclairamb Aug 27, 2026
eec72d9
chore: start implementing the stale org provider link fix
fclairamb Aug 27, 2026
ef24572
docs: add implementation plan for the stale org provider link fix
fclairamb Aug 27, 2026
961bed3
fix(integrations): heal stale provider links on the Slack and Discord…
fclairamb Aug 27, 2026
1453175
test(integrations): prove the stale-link heal on both install paths
fclairamb Aug 27, 2026
95f8296
fix(test): compare the entitlements source against its generated enum…
fclairamb Aug 27, 2026
16ffa7e
chore: all checks passing for the stale org provider link fix
fclairamb Aug 27, 2026
4be5370
docs: archive completed spec A stale organization_providers link perm…
fclairamb Aug 27, 2026
694c868
chore: start implementing the support reply preflight
fclairamb Aug 27, 2026
557869f
docs: add implementation plan for the support reply preflight
fclairamb Aug 27, 2026
47412ae
feat(support): make the reply pre-flight per-thread and refuse unrout…
fclairamb Aug 27, 2026
a4c6db1
docs(openapi): document the per-thread reply route and the resend end…
fclairamb Aug 27, 2026
dcb2133
test(support): prove the per-thread refusal stores nothing and resend…
fclairamb Aug 27, 2026
30a0164
feat(dash0): show the per-thread reply reason and offer a resend
fclairamb Aug 27, 2026
e6cde7d
docs: record why the Slack display-name resolution stays out of scope
fclairamb Aug 27, 2026
ead8f6a
chore: all checks passing for the support reply preflight
fclairamb Aug 27, 2026
41eee32
docs: describe both reply axes and the resend action in the support i…
fclairamb Aug 27, 2026
256377a
docs: archive completed spec The support inbox offers a reply box for…
fclairamb Aug 27, 2026
5eaff92
chore: start implementing the docs API base URL fix
fclairamb Aug 27, 2026
678fa03
docs: add implementation plan for the docs API base URL fix
fclairamb Aug 27, 2026
3583335
fix(docs): resolve the API reference base URL from the browsing host
fclairamb Aug 27, 2026
e7b55a3
chore: all checks passing for the docs API base URL fix
fclairamb Aug 27, 2026
4ea22b5
fix(docs): keep a deliberate API base URL pick across reference pages
fclairamb Aug 27, 2026
fe13771
docs: record the docs-host match divergence on both sides
fclairamb Aug 27, 2026
0ffb94f
chore: all checks passing for the docs API base URL fix (audit follow…
fclairamb Aug 27, 2026
48284e2
docs: archive completed spec The docs API reference shows a hardcoded…
fclairamb Aug 27, 2026
1e6dcd9
chore(client): regenerate the Go client at batch end
fclairamb Aug 27, 2026
c5e136e
fix(dash0): add the missing Scheduling breadcrumb leaf
fclairamb Aug 27, 2026
e635c24
fix(dash0): stop the design reference overflowing the page on mobile
fclairamb Aug 27, 2026
1072984
test(dash0): correct the stale rate-limit remedy-link expectation
fclairamb Aug 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,11 @@ jobs:
- name: Install dependencies
run: bun install

# Scoped to ./src on purpose, same as the status0 job: a bare `bun test`
# would also collect anything under build/ or node_modules.
- name: Run unit tests
run: bun run test:unit

# `bun run build` runs gen-api-docs first, generating the API reference
# from ../../server/internal/app/openapi/openapi.yaml (same repo).
# onBrokenLinks is "throw", so a broken doc link fails the build here.
Expand Down
7 changes: 6 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.PHONY: docker-build build build-backend build-dash build-dash0 build-status0 build-docs copy-dash copy-dash0 copy-status0 copy-docs \
build-cli install-cli clean clean-all run run-test dev dev-test dev-saas dev-dash dev-dash0 dev-status0 dev-docs dev-backend \
test test-scenario test-dash test-dash0 lint lint-back lint-dash fmt deps migrate help sync-brand-assets build-favicons \
test test-scenario test-dash test-dash0 test-docs lint lint-back lint-dash fmt deps migrate help sync-brand-assets build-favicons \
showcase \
build-loadgen bench-checks bench-checks-sqlite bench-checks-postgres \
build-scenario scenario-test
Expand Down Expand Up @@ -326,6 +326,11 @@ test-dash0: ## Run dash0 unit tests (mirrors the CI step)
@cd $(DASH0_DIR) && bun run test:unit
@echo "Dash0 unit tests complete"

test-docs: ## Run docs site unit tests (mirrors the CI step)
@echo "Running docs unit tests..."
@cd $(DOCS_DIR) && bun run test:unit
@echo "Docs unit tests complete"

showcase: ## Regenerate the docs showcase media (screenshots + AV1 video) from the real dash0 UI
@echo "Recording showcase media (needs a running SolidPing server)..."
@cd $(DASH0_DIR) && bunx playwright test --config=showcase/playwright.config.ts
Expand Down
Loading
Loading