From e9664ea2f986dc70153bca158ba957398c2e00e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 7 Nov 2026 07:48:58 +0000 Subject: [PATCH] Version Packages --- .../2026-10-02-drop-unused-uptime-orphans.md | 12 ---- .tegami/2026-10-19-alchemy-beta-83.md | 21 ------ .tegami/2026-10-19-deps-patch.md | 8 --- .tegami/2026-10-20-harden-api-auth.md | 11 --- ...2026-10-22-deps-dotenv-workers-recharts.md | 10 --- .tegami/2026-11-07-alchemy-dev-stack.md | 8 --- ...026-11-07-effect-httpapi-tanstack-query.md | 10 --- ...026-11-07-shared-lint-dashboard-renders.md | 8 --- .tegami/2026-11-07-solzeroai-repository.md | 8 --- .tegami/publish-lock.yaml | 71 +++++++++---------- CHANGELOG.md | 62 ++++++++++++++++ VERSION | 2 +- 12 files changed, 96 insertions(+), 135 deletions(-) delete mode 100644 .tegami/2026-10-02-drop-unused-uptime-orphans.md delete mode 100644 .tegami/2026-10-19-alchemy-beta-83.md delete mode 100644 .tegami/2026-10-19-deps-patch.md delete mode 100644 .tegami/2026-10-20-harden-api-auth.md delete mode 100644 .tegami/2026-10-22-deps-dotenv-workers-recharts.md delete mode 100644 .tegami/2026-11-07-alchemy-dev-stack.md delete mode 100644 .tegami/2026-11-07-effect-httpapi-tanstack-query.md delete mode 100644 .tegami/2026-11-07-shared-lint-dashboard-renders.md delete mode 100644 .tegami/2026-11-07-solzeroai-repository.md diff --git a/.tegami/2026-10-02-drop-unused-uptime-orphans.md b/.tegami/2026-10-02-drop-unused-uptime-orphans.md deleted file mode 100644 index 88769d43..00000000 --- a/.tegami/2026-10-02-drop-unused-uptime-orphans.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -## Drop unused uptime check ID and patch schema - -`uptimeChecksPatchSchema` is removed. Uptime check rows use integer -auto-increment IDs, so `PRE_ID.uptimeCheck` and the exported `nanoid` -helper are gone. Use `uptimeChecksSelectSchema` or -`uptimeChecksInsertSchema`, and `createId(PRE_ID.endpointMonitor)` for -endpoint monitor IDs. diff --git a/.tegami/2026-10-19-alchemy-beta-83.md b/.tegami/2026-10-19-alchemy-beta-83.md deleted file mode 100644 index 80c340d7..00000000 --- a/.tegami/2026-10-19-alchemy-beta-83.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -## Bump Alchemy to 2.0.0-beta.83 - -Package consumers now get Alchemy 2.0.0-beta.83. That version is the -intended pin. Effect stays on master's 4.0.5 with matching -`@effect/platform-node` and `@effect/platform-node-shared`. Drizzle stays -on 1.0.0-rc.5-ab785fc. - -Alchemy 2.0.0-beta.82 and later deploy Durable Objects with Cloudflare -declarative exports. This is one-way. The first deploy of a Worker that -hosts Durable Objects, including `monitor-trigger`, must go out at full -traffic. Older Alchemy releases cannot deploy that Worker afterward. - -D1 resources pass the existing migrations directory through Alchemy's -`migrations` input. The wrapper still forwards `--stage` and now also sets -`ALCHEMY_STAGE` so Alchemy's stage env rename does not change deploy names. -The Alchemy CLI entry is `alchemy/bin/cli.js` (`bin/alchemy.ts` is gone). diff --git a/.tegami/2026-10-19-deps-patch.md b/.tegami/2026-10-19-deps-patch.md deleted file mode 100644 index 9a3c69b7..00000000 --- a/.tegami/2026-10-19-deps-patch.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -### Update minor and patch dependencies - -Effect 4.0.5, Zod 4.6.7, and the matching lockfile refresh. diff --git a/.tegami/2026-10-20-harden-api-auth.md b/.tegami/2026-10-20-harden-api-auth.md deleted file mode 100644 index cc353eaa..00000000 --- a/.tegami/2026-10-20-harden-api-auth.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -## Harden API authentication and query parameterization - -API routes other than `/api/auth` now require a session. Endpoint monitor -URL checks bind the submitted URL as a query parameter. Patch requests -accept a valid `url` and do not accept `id`. Better Auth uses the Drizzle -D1 client for its database adapter. diff --git a/.tegami/2026-10-22-deps-dotenv-workers-recharts.md b/.tegami/2026-10-22-deps-dotenv-workers-recharts.md deleted file mode 100644 index 42d911e3..00000000 --- a/.tegami/2026-10-22-deps-dotenv-workers-recharts.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -## Update dotenv and dashboard chart dependencies - -The CLI loads `.env` with dotenv 18.0.9 and does not print an injection line. - -The dashboard charts use Recharts 3.10.1. Status legends stay next to the uptime and latency charts, and tooltips still show status counts and latency. Vite, date-fns, and the dropdown menu keep the versions the lockfile already resolved, with higher minimum ranges. diff --git a/.tegami/2026-11-07-alchemy-dev-stack.md b/.tegami/2026-11-07-alchemy-dev-stack.md deleted file mode 100644 index 18fc3576..00000000 --- a/.tegami/2026-11-07-alchemy-dev-stack.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -## Run local development on the Alchemy dev stack - -`nub run dev` now runs the dashboard, both monitor workers, D1, and KV together with `alchemy dev`. The Wrangler dev scripts, the local Wrangler database scripts and configs, the seed script, and the Vite mock API are removed. A stack now stops with a clear error when `BETTER_AUTH_SECRET` is not set, instead of signing sessions with an empty secret. diff --git a/.tegami/2026-11-07-effect-httpapi-tanstack-query.md b/.tegami/2026-11-07-effect-httpapi-tanstack-query.md deleted file mode 100644 index f4a8942e..00000000 --- a/.tegami/2026-11-07-effect-httpapi-tanstack-query.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -packages: - "release:solstatus": minor ---- - -## Serve the API with Effect HttpApi and load data with TanStack Query - -The dashboard API is now an Effect `HttpApi` with typed requests, responses, and errors. Signed-in users can read the OpenAPI document at `/api/openapi.json` and the API docs at `/api/docs`. The dashboard loads and refreshes data with TanStack Query, and the list filters, sorting, paging, and the detail time range are kept in the URL. - -`POST /api/endpoint-monitors/{id}/execute-check` replaces the `GET` form of that endpoint. diff --git a/.tegami/2026-11-07-shared-lint-dashboard-renders.md b/.tegami/2026-11-07-shared-lint-dashboard-renders.md deleted file mode 100644 index be269adb..00000000 --- a/.tegami/2026-11-07-shared-lint-dashboard-renders.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -## Dashboard renders follow the React Compiler rules - -The latency and uptime charts share one time-range helper. The monitor details drawer loads the latest check when it opens, not from an effect. The monitor page derives its uptime percentage and average latency from the loaded checks. The theme switch reads the client state without an extra render. diff --git a/.tegami/2026-11-07-solzeroai-repository.md b/.tegami/2026-11-07-solzeroai-repository.md deleted file mode 100644 index 96d9d19f..00000000 --- a/.tegami/2026-11-07-solzeroai-repository.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -packages: - "release:solstatus": patch ---- - -## Point package and app links at SolZeroAI/solstatus - -The repository moved to the SolZeroAI organization. Package metadata, the dashboard sidebar links, and the Opsgenie alert details now link to `github.com/SolZeroAI/solstatus`. GitHub redirects the old links. diff --git a/.tegami/publish-lock.yaml b/.tegami/publish-lock.yaml index 4bdef861..ab5fd822 100644 --- a/.tegami/publish-lock.yaml +++ b/.tegami/publish-lock.yaml @@ -1,46 +1,41 @@ core:changelogs: - - content: "---\npackages:\n solstatus:\n type: major\n \"@solstatus/common\":\n type: major\n \"@solstatus/api\":\n type: major\n \"@solstatus/app\":\n type: major\n \"@solstatus/infra\":\n type: major\n---\n\n## Align the published toolchain with Shared Project DNA\n\nPackage consumers now get Nub 0.4.11, TypeScript 7.0.2, Effect 4.0.0-beta.107,\nDrizzle ORM 1.0.0-rc.5, Zod 4.4.3, and Alchemy 2.0.0-beta.72. The dashboard is\nTanStack Start on Cloudflare instead of Next.js + OpenNext. The CLI stays on\nEffect 4 `effect/unstable/cli` because `@effect/cli` still peers Effect 3.\n\nInstall with `nub install`. The previous `pnpm` workspace, Biome lint/format\npath, and Next.js app entrypoints are gone.\n" - filename: 2026-08-27-shared-project-dna.md + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n## Drop unused uptime check ID and patch schema\n\n`uptimeChecksPatchSchema` is removed. Uptime check rows use integer\nauto-increment IDs, so `PRE_ID.uptimeCheck` and the exported `nanoid`\nhelper are gone. Use `uptimeChecksSelectSchema` or\n`uptimeChecksInsertSchema`, and `createId(PRE_ID.endpointMonitor)` for\nendpoint monitor IDs.\n" + filename: 2026-10-02-drop-unused-uptime-orphans.md v: 0.0.0 - - content: "---\npackages:\n solstatus:\n type: patch\n \"@solstatus/api\":\n type: patch\n \"@solstatus/infra\":\n type: patch\n---\n\n## Reconcile Alchemy production deploy with leftover Wrangler\n\nProduction deploy is the Alchemy CLI (`nub run cli -- --stage prod`). Wrangler\nconfigs in `@solstatus/infra` are local D1 and local monitor-worker dev only;\nOpenNext worker keys and the unused `wrangler:gen` script are gone. `db:seed`\nreads the same `packages/infra/.wrangler` persist directory that\n`nub run dev:api` uses.\n" - filename: 2026-09-11-reconcile-alchemy-wrangler.md + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n## Bump Alchemy to 2.0.0-beta.83\n\nPackage consumers now get Alchemy 2.0.0-beta.83. That version is the\nintended pin. Effect stays on master's 4.0.5 with matching\n`@effect/platform-node` and `@effect/platform-node-shared`. Drizzle stays\non 1.0.0-rc.5-ab785fc.\n\nAlchemy 2.0.0-beta.82 and later deploy Durable Objects with Cloudflare\ndeclarative exports. This is one-way. The first deploy of a Worker that\nhosts Durable Objects, including `monitor-trigger`, must go out at full\ntraffic. Older Alchemy releases cannot deploy that Worker afterward.\n\nD1 resources pass the existing migrations directory through Alchemy's\n`migrations` input. The wrapper still forwards `--stage` and now also sets\n`ALCHEMY_STAGE` so Alchemy's stage env rename does not change deploy names.\nThe Alchemy CLI entry is `alchemy/bin/cli.js` (`bin/alchemy.ts` is gone).\n" + filename: 2026-10-19-alchemy-beta-83.md v: 0.0.0 - - content: "---\npackages:\n \"@solstatus/api\":\n type: major\n \"@solstatus/common\":\n type: major\n---\n\n## Remove unfinished synthetic monitor types\n\n`InitPayload` is endpoint-only. It no longer accepts `monitorType: \"synthetic\"`,\n`timeoutSeconds`, or `runtime`. `PRE_ID.syntheticMonitor` is removed. Endpoint\nmonitor init, alarm, pause, and resume are unchanged. App callers may keep\npassing `monitorType: \"endpoint\"`.\n" - filename: 2026-09-06-drop-synthetic-monitor.md + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n### Update minor and patch dependencies\n\nEffect 4.0.5, Zod 4.6.7, and the matching lockfile refresh.\n" + filename: 2026-10-19-deps-patch.md v: 0.0.0 - - content: "---\npackages:\n \"@solstatus/api\":\n type: patch\n---\n\n## Keep monitor alarms running after a failed first check\n\nDurable Object alarm retries now reschedule the next check instead of\nreturning without an alarm. Unused monitor-exec response bodies are\ncancelled. Opsgenie down-alert details point at jonbeckman/solstatus.\nAlchemy binds OPSGENIE_API_KEY as a Worker secret.\n" - filename: 2026-09-06-worker-do-platform-hygiene.md + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n## Harden API authentication and query parameterization\n\nAPI routes other than `/api/auth` now require a session. Endpoint monitor\nURL checks bind the submitted URL as a query parameter. Patch requests\naccept a valid `url` and do not accept `id`. Better Auth uses the Drizzle\nD1 client for its database adapter.\n" + filename: 2026-10-20-harden-api-auth.md + v: 0.0.0 + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n## Update dotenv and dashboard chart dependencies\n\nThe CLI loads `.env` with dotenv 18.0.9 and does not print an injection line.\n\nThe dashboard charts use Recharts 3.10.1. Status legends stay next to the uptime and latency charts, and tooltips still show status counts and latency. Vite, date-fns, and the dropdown menu keep the versions the lockfile already resolved, with higher minimum ranges.\n" + filename: 2026-10-22-deps-dotenv-workers-recharts.md + v: 0.0.0 + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n## Run local development on the Alchemy dev stack\n\n`nub run dev` now runs the dashboard, both monitor workers, D1, and KV together with `alchemy dev`. The Wrangler dev scripts, the local Wrangler database scripts and configs, the seed script, and the Vite mock API are removed. A stack now stops with a clear error when `BETTER_AUTH_SECRET` is not set, instead of signing sessions with an empty secret.\n" + filename: 2026-11-07-alchemy-dev-stack.md + v: 0.0.0 + - content: "---\npackages:\n release:solstatus:\n type: minor\n---\n\n## Serve the API with Effect HttpApi and load data with TanStack Query\n\nThe dashboard API is now an Effect `HttpApi` with typed requests, responses, and errors. Signed-in users can read the OpenAPI document at `/api/openapi.json` and the API docs at `/api/docs`. The dashboard loads and refreshes data with TanStack Query, and the list filters, sorting, paging, and the detail time range are kept in the URL.\n\n`POST /api/endpoint-monitors/{id}/execute-check` replaces the `GET` form of that endpoint.\n" + filename: 2026-11-07-effect-httpapi-tanstack-query.md + v: 0.0.0 + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n## Dashboard renders follow the React Compiler rules\n\nThe latency and uptime charts share one time-range helper. The monitor details drawer loads the latest check when it opens, not from an effect. The monitor page derives its uptime percentage and average latency from the loaded checks. The theme switch reads the client state without an extra render.\n" + filename: 2026-11-07-shared-lint-dashboard-renders.md + v: 0.0.0 + - content: "---\npackages:\n release:solstatus:\n type: patch\n---\n\n## Point package and app links at SolZeroAI/solstatus\n\nThe repository moved to the SolZeroAI organization. Package metadata, the dashboard sidebar links, and the Opsgenie alert details now link to `github.com/SolZeroAI/solstatus`. GitHub redirects the old links.\n" + filename: 2026-11-07-solzeroai-repository.md v: 0.0.0 core:packages: - changelogIds: - - 2026-08-27-shared-project-dna.md - - 2026-09-11-reconcile-alchemy-wrangler.md - id: npm:solstatus - updated: true - - changelogIds: - - 2026-08-27-shared-project-dna.md - - 2026-09-06-drop-synthetic-monitor.md - - 2026-09-06-worker-do-platform-hygiene.md - - 2026-09-11-reconcile-alchemy-wrangler.md - id: npm:@solstatus/api - updated: true - - changelogIds: - - 2026-08-27-shared-project-dna.md - id: npm:@solstatus/app - updated: true - - changelogIds: - - 2026-08-27-shared-project-dna.md - - 2026-09-06-drop-synthetic-monitor.md - id: npm:@solstatus/common - updated: true - - changelogIds: - - 2026-08-27-shared-project-dna.md - - 2026-09-11-reconcile-alchemy-wrangler.md - id: npm:@solstatus/infra + - 2026-10-02-drop-unused-uptime-orphans.md + - 2026-10-19-alchemy-beta-83.md + - 2026-10-19-deps-patch.md + - 2026-10-20-harden-api-auth.md + - 2026-10-22-deps-dotenv-workers-recharts.md + - 2026-11-07-alchemy-dev-stack.md + - 2026-11-07-effect-httpapi-tanstack-query.md + - 2026-11-07-shared-lint-dashboard-renders.md + - 2026-11-07-solzeroai-repository.md + id: release:solstatus updated: true -npm:packages: - - id: npm:solstatus - - id: npm:@solstatus/api - - id: npm:@solstatus/app - - id: npm:@solstatus/common - - id: npm:@solstatus/infra diff --git a/CHANGELOG.md b/CHANGELOG.md index ecff7156..e565790f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,65 @@ +## solstatus@4.1.0 + +### Drop unused uptime check ID and patch schema + +`uptimeChecksPatchSchema` is removed. Uptime check rows use integer +auto-increment IDs, so `PRE_ID.uptimeCheck` and the exported `nanoid` +helper are gone. Use `uptimeChecksSelectSchema` or +`uptimeChecksInsertSchema`, and `createId(PRE_ID.endpointMonitor)` for +endpoint monitor IDs. + +### Bump Alchemy to 2.0.0-beta.83 + +Package consumers now get Alchemy 2.0.0-beta.83. That version is the +intended pin. Effect stays on master's 4.0.5 with matching +`@effect/platform-node` and `@effect/platform-node-shared`. Drizzle stays +on 1.0.0-rc.5-ab785fc. + +Alchemy 2.0.0-beta.82 and later deploy Durable Objects with Cloudflare +declarative exports. This is one-way. The first deploy of a Worker that +hosts Durable Objects, including `monitor-trigger`, must go out at full +traffic. Older Alchemy releases cannot deploy that Worker afterward. + +D1 resources pass the existing migrations directory through Alchemy's +`migrations` input. The wrapper still forwards `--stage` and now also sets +`ALCHEMY_STAGE` so Alchemy's stage env rename does not change deploy names. +The Alchemy CLI entry is `alchemy/bin/cli.js` (`bin/alchemy.ts` is gone). + +### Update minor and patch dependencies + +Effect 4.0.5, Zod 4.6.7, and the matching lockfile refresh. + +### Harden API authentication and query parameterization + +API routes other than `/api/auth` now require a session. Endpoint monitor +URL checks bind the submitted URL as a query parameter. Patch requests +accept a valid `url` and do not accept `id`. Better Auth uses the Drizzle +D1 client for its database adapter. + +### Update dotenv and dashboard chart dependencies + +The CLI loads `.env` with dotenv 18.0.9 and does not print an injection line. + +The dashboard charts use Recharts 3.10.1. Status legends stay next to the uptime and latency charts, and tooltips still show status counts and latency. Vite, date-fns, and the dropdown menu keep the versions the lockfile already resolved, with higher minimum ranges. + +### Run local development on the Alchemy dev stack + +`nub run dev` now runs the dashboard, both monitor workers, D1, and KV together with `alchemy dev`. The Wrangler dev scripts, the local Wrangler database scripts and configs, the seed script, and the Vite mock API are removed. A stack now stops with a clear error when `BETTER_AUTH_SECRET` is not set, instead of signing sessions with an empty secret. + +### Serve the API with Effect HttpApi and load data with TanStack Query + +The dashboard API is now an Effect `HttpApi` with typed requests, responses, and errors. Signed-in users can read the OpenAPI document at `/api/openapi.json` and the API docs at `/api/docs`. The dashboard loads and refreshes data with TanStack Query, and the list filters, sorting, paging, and the detail time range are kept in the URL. + +`POST /api/endpoint-monitors/{id}/execute-check` replaces the `GET` form of that endpoint. + +### Dashboard renders follow the React Compiler rules + +The latency and uptime charts share one time-range helper. The monitor details drawer loads the latest check when it opens, not from an effect. The monitor page derives its uptime percentage and average latency from the loaded checks. The theme switch reads the client state without an extra render. + +### Point package and app links at SolZeroAI/solstatus + +The repository moved to the SolZeroAI organization. Package metadata, the dashboard sidebar links, and the Opsgenie alert details now link to `github.com/SolZeroAI/solstatus`. GitHub redirects the old links. + ## solstatus@3.0.0 ### Align the published toolchain with Shared Project DNA diff --git a/VERSION b/VERSION index fcdb2e10..ee74734a 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.0.0 +4.1.0