cronwatch 0.12.2 → 0.12.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c1fe0ab990fc8d76b7d1ccc58a036b6a8e3b83ba26f583d76eacc5e900bdae5
4
- data.tar.gz: f0759b8c9987110c648d3f3ae5a27a16e3133698df133b34c6f27c529b821b78
3
+ metadata.gz: d39b4e146c8c67dc490eefa94ea08be381f5851367f5827e4afb4f6a65b610f4
4
+ data.tar.gz: aafe200c2ae1f93ec641775edbd58416ddfa7f1508cd1f1b93929877e0e6aaf8
5
5
  SHA512:
6
- metadata.gz: 41b86b8cb46db24ff0bd69e64f99ef58a2fd834880c469584137f786697eef9ddcb943113f94275d7babeb63dcff28c6b7df52c9bbe33a209b5e3d0726edcda2
7
- data.tar.gz: acd9537f5bbb9f7f28b2e6df63524ed88413911a2dad3587bee4b6cc81a91994414136145c3662e8ba14108c715d5b54b9ab224ff9f301ed853d258064bea150
6
+ metadata.gz: 486579780d8c1a48e223c7bd321ff91a592db213d364db4e80167c5edd0652005ef7ecb76a7f0922e4fcab30466f0938cb73dc1b7d8dc42575e0eca69057d4b7
7
+ data.tar.gz: 79a910d5c1acd953fdeaf778007857c1ed962a53107474d2a6a0d655d876be5e6146423d78d69e0fc78ee2f490f8682f210782e19582bc97275ca28e9e001cc9
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Jon Phillips
3
+ Copyright (c) 2026 Jon C. Phillips
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -235,15 +235,15 @@ Adds two to four sentences from Claude (likely cause, first thing to check) to e
235
235
 
236
236
  ## Sharing a database with a Node app
237
237
 
238
- The ActiveRecord store writes the same three tables as `@cronwatch/sdk/postgres` and `@cronwatch/sdk/sqlite`: same names, columns and indexes, epoch milliseconds in the time columns, the SDK's camelCase JSON in the JSON columns. [`test/active_record/node_compat_test.rb`](https://github.com/phillips-jon/cronwatch/blob/main/packages/ruby/test/active_record/node_compat_test.rb) runs the SDK's stores in Node beside this one, on SQLite and Postgres, and checks that each reads what the other wrote, that the tables are the same whoever creates them, and that the rows are the same bytes. Use the same prefix on both sides and give each job a name only one side uses. Then one dashboard, Rails or Node, shows every job, and one MCP server reads them all. The Python, PHP, Go and Rust ports keep the same tables too, so a process in any of them can share the database the same way.
238
+ The ActiveRecord store writes the same three tables as `@cronwatch/sdk/postgres` and `@cronwatch/sdk/sqlite`: same names, columns and indexes, epoch milliseconds in the time columns, the SDK's camelCase JSON in the JSON columns. [`test/active_record/node_compat_test.rb`](https://github.com/cronwatchdev/cronwatch/blob/main/packages/ruby/test/active_record/node_compat_test.rb) runs the SDK's stores in Node beside this one, on SQLite and Postgres, and checks that each reads what the other wrote, that the tables are the same whoever creates them, and that the rows are the same bytes. Use the same prefix on both sides and give each job a name only one side uses. Then one dashboard, Rails or Node, shows every job, and one MCP server reads them all. The Python, PHP, Go and Rust ports keep the same tables too, so a process in any of them can share the database the same way.
239
239
 
240
240
  ## Kept in step with the TypeScript SDK
241
241
 
242
242
  The TypeScript SDK is the source of truth. `npm run conformance` at the repository root runs it and writes JSON cases to `conformance/`: duration parsing and formatting, schedules including daylight saving, sequences of runs and checks with the alerts and state they must produce, alert titles and messages, stats and health. This gem's tests replay every case, and the SDK's own check fails when the files are stale. A change of behaviour lands in TypeScript first, the cases are regenerated, and the gem is fixed until its tests pass. When the two disagree, the Ruby side is wrong.
243
243
 
244
- The dashboard is held to the SDK the same way: [`test/web/golden.json`](https://github.com/phillips-jon/cronwatch/blob/main/packages/ruby/test/web/golden.json) records what the SDK's routes answer to a fixed set of requests, and [`test/web_golden_test.rb`](https://github.com/phillips-jon/cronwatch/blob/main/packages/ruby/test/web_golden_test.rb) makes `Cronwatch::Web` answer them byte for byte.
244
+ The dashboard is held to the SDK the same way: [`test/web/golden.json`](https://github.com/cronwatchdev/cronwatch/blob/main/packages/ruby/test/web/golden.json) records what the SDK's routes answer to a fixed set of requests, and [`test/web_golden_test.rb`](https://github.com/cronwatchdev/cronwatch/blob/main/packages/ruby/test/web_golden_test.rb) makes `Cronwatch::Web` answer them byte for byte.
245
245
 
246
- The design of the port is in [DESIGN.md](https://github.com/phillips-jon/cronwatch/blob/main/packages/ruby/DESIGN.md).
246
+ The design of the port is in [DESIGN.md](https://github.com/cronwatchdev/cronwatch/blob/main/packages/ruby/DESIGN.md).
247
247
 
248
248
  ## Testing
249
249
 
@@ -264,7 +264,7 @@ The node compatibility tests run the built SDK and its drivers, and skip themsel
264
264
  npm ci && npm run build
265
265
  ```
266
266
 
267
- The default Gemfile tests Rails 8.1. Each supported Rails series has its own Gemfile, with its own lockfile, in [`test/rails/gemfiles`](https://github.com/phillips-jon/cronwatch/tree/main/packages/ruby/test/rails/gemfiles):
267
+ The default Gemfile tests Rails 8.1. Each supported Rails series has its own Gemfile, with its own lockfile, in [`test/rails/gemfiles`](https://github.com/cronwatchdev/cronwatch/tree/main/packages/ruby/test/rails/gemfiles):
268
268
 
269
269
  ```sh
270
270
  BUNDLE_GEMFILE=test/rails/gemfiles/rails_7_2.gemfile bundle install
@@ -281,7 +281,7 @@ npm run build --workspace packages/sdk && TZ=UTC node packages/ruby/test/web/gol
281
281
 
282
282
  `npm run check` fails while `test/web/golden.json` or `conformance/` is stale.
283
283
 
284
- The MCP server's tests can also drive this gem's `Cronwatch::Web` over HTTP ([`test/web/server.rb`](https://github.com/phillips-jon/cronwatch/blob/main/packages/ruby/test/web/server.rb)). They need `fugit`, `rack` and a server rackup can start (puma, or webrick, which the Gemfile's test group has) in the Ruby they run, and only run when asked, from `packages/mcp`:
284
+ The MCP server's tests can also drive this gem's `Cronwatch::Web` over HTTP ([`test/web/server.rb`](https://github.com/cronwatchdev/cronwatch/blob/main/packages/ruby/test/web/server.rb)). They need `fugit`, `rack` and a server rackup can start (puma, or webrick, which the Gemfile's test group has) in the Ruby they run, and only run when asked, from `packages/mcp`:
285
285
 
286
286
  ```sh
287
287
  CRONWATCH_TEST_RUBY=1 CRONWATCH_RUBY="rbenv exec ruby" npm test
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Cronwatch
4
4
  # Kept in step with @cronwatch/sdk.
5
- VERSION = "0.12.2"
5
+ VERSION = "0.12.4"
6
6
  end
@@ -98,7 +98,7 @@ module Cronwatch
98
98
  .signin{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:28px auto 0;max-width:420px}
99
99
  .signin label{font:500 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
100
100
  .signin input{flex:1 1 180px;min-width:0;font:400 16px/1.2 var(--mono);color:var(--ink);background:var(--sheet);border:1px solid var(--rule-2);border-radius:3px;height:32px;padding:0 10px}
101
- footer{display:flex;flex-wrap:wrap;gap:6px 18px;padding:20px 0 40px;border-top:1px solid var(--rule);font:400 12px/1.5 var(--mono);color:var(--muted)}
101
+ footer{display:flex;flex-wrap:wrap;gap:6px 18px;padding:20px 0 40px;border-top:1px solid var(--rule);font:400 12px/1.5 var(--mono);color:var(--muted)}footer .version{margin-left:auto}
102
102
  .timeline{margin:18px 0 0}
103
103
  .timeline .axis,.timeline .under,.timeline .over,.timeline .lane{display:grid;grid-template-columns:var(--who) minmax(0,1fr)}
104
104
  .timeline .hours{position:relative;height:22px;font:400 11px/1 var(--mono);color:var(--muted);letter-spacing:.04em}
@@ -442,7 +442,7 @@ module Cronwatch
442
442
  </section>
443
443
  #{sections}
444
444
  </main>
445
- <footer><span>Refreshes every minute. Times are UTC.</span><a href="#{h(base)}/api/jobs">JSON</a></footer>
445
+ <footer><span>Refreshes every minute. Times are UTC.</span><a href="#{h(base)}/api/jobs">JSON</a><a class="version" href="https://github.com/cronwatchdev/cronwatch/blob/main/CHANGELOG.md">cronwatch #{Cronwatch::VERSION}</a></footer>
446
446
  BODY
447
447
  layout("CronWatch", body, base, refresh: 60)
448
448
  end
@@ -570,7 +570,7 @@ module Cronwatch
570
570
  </div>
571
571
  </section>
572
572
  </main>
573
- <footer><span>Refreshes every minute. Times are UTC.</span><a href="#{h(base)}/api/jobs/#{encode_uri_component(job.name)}">JSON</a></footer>
573
+ <footer><span>Refreshes every minute. Times are UTC.</span><a href="#{h(base)}/api/jobs/#{encode_uri_component(job.name)}">JSON</a><a class="version" href="https://github.com/cronwatchdev/cronwatch/blob/main/CHANGELOG.md">cronwatch #{Cronwatch::VERSION}</a></footer>
574
574
  BODY
575
575
  layout("#{job.name}: CronWatch", body, base, refresh: 60)
576
576
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cronwatch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.2
4
+ version: 0.12.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon C. Phillips
@@ -101,9 +101,9 @@ licenses:
101
101
  - MIT
102
102
  metadata:
103
103
  homepage_uri: https://cronwatch.dev
104
- source_code_uri: https://github.com/phillips-jon/cronwatch/tree/main/packages/ruby
105
- changelog_uri: https://github.com/phillips-jon/cronwatch/releases
106
- bug_tracker_uri: https://github.com/phillips-jon/cronwatch/issues
104
+ source_code_uri: https://github.com/cronwatchdev/cronwatch/tree/main/packages/ruby
105
+ changelog_uri: https://github.com/cronwatchdev/cronwatch/releases
106
+ bug_tracker_uri: https://github.com/cronwatchdev/cronwatch/issues
107
107
  documentation_uri: https://cronwatch.dev/docs/ruby/
108
108
  rubygems_mfa_required: 'true'
109
109
  rdoc_options: []