What's Changed
- feat: implement core business logic for TTL extension, restore, discovery, and CLI commands by @AbdulmalikAlayande in #1
- feat(alerts): complete alerting system overhaul — retry limits, HMAC signing, severity, resolution notifications by @AbdulmalikAlayande in #2
- Feat/alerting system overhaul by @AbdulmalikAlayande in #3
- feat: core business logic, alerting overhaul, and sorokeep rebrand by @AbdulmalikAlayande in #4
- docs: rewrite README for current project state by @AbdulmalikAlayande in #5
- Merge from main to dev by @AbdulmalikAlayande in #6
- Dev by @AbdulmalikAlayande in #7
- ci: setup github actions for PRs by @AbdulmalikAlayande in #237
- Cli fix by @nextgenuniversity1-oss in #240
- feat: add 'check' command to monitor contract TTL health by @somotochukwu-dev in #238
- feat(db): implement lightweight schema migration engine by @Windowlight in #236
- feat(ci): create GitLab CI template by @GOE001 in #219
- feat: add production Docker container with multi-stage build by @Bellamzy in #231
- docs: add CI/CD integration guide for GitHub Actions, GitLab CI, and Bitbucket Pipelines (#182) by @kuse-design in #212
- feat(alerts): implement Telegram Bot delivery by @Abdulrasaq1515 in #209
- feat(alerts): implement Discord webhook delivery (#183) by @JesseJohn7 in #213
- feat(alerts): alert on resource consumption spikes by @nextgenuniversity1-oss in #235
- feat(alerts): implement PagerDuty Events API v2 integration by @olufunsoolutayo in #232
- feat(core): estimate projections from live fee stats by @Killerjunior in #233
- Feat/core contract introspection by @Enemuo-debug in #220
- Feat/daemon introspection rescan by @Enemuo-debug in #218
- feat: add --no-introspection option to watch command by @Enemuo-debug in #215
- feat(mcp): register list_watched_contracts tool by @debbieAmoni in #241
- Fixed feat(mcp): register get_contract_status tool by @bigjoe-io in #234
- feat(mcp): register get_extension_costs tool by @Michealshodipo56 in #223
- feat(#162): cache introspection results in SQLite to minimize RPC calls by @funds0033-cmyk in #244
- feat(db): add state_snapshots and state_changes tables by @Peaostrel in #208
- feat(costs): implement rolling average for cost anomaly detection by @dee-john in #210
- feat(core): implement rent cost projection model for 30/60/90 day windows by @funds0033-cmyk in #242
- feat: export watchContract and runMonitorCycle as public library API by @abubakarlekson27577-wq in #228
- feat: add channels add/list/fund subcommands by @mrteeednut007-dotcom in #224
- feat: add systemd service descriptor for daemon by @abubakarlekson27577-wq in #227
- feat: add ChannelAccountPool for concurrent TTL extensions by @abubakarlekson27577-wq in #225
- feat: recover from bad_sequence errors with sequence refresh and retry by @Bellamzy in #229
- #205 test(e2e) setup complete end to end testing pipeline fix by @onakijames-droid in #243
- test(db): add migration engine test coverage (TDD red) by @JudeDaniel6 in #239
- bypass CI check failures by @oluseguntaiwojoel-lab in #230
- Docs: add CONTRIBUTING.md guide, ADRs, E2E sandbox, and onboarding tests by @dunnidev in #222
- test(e2e): verify monitoring daemon execution cycles by @jaynomyaro in #221
- Completed by @paulpeter32-coder in #217
- completed by @paulpeter32-coder in #214
- Transaction Resource Costs Extraction by @GauravKarakoti in #211
- Dev by @AbdulmalikAlayande in #257
- Dev by @AbdulmalikAlayande in #258
- feat(daemon): add structured JSON log mode by @adepoju2006 in #250
- Add watch command batch file support by @TheShnider in #277
- feat(db): add delivered/delivered_at columns to alerts_fired table by @Emoji-dot in #284
- feat(core): integrate AWS Secrets Manager for key retrieval by @probablyABug in #259
- feat(core): implement state value diff detection by @Faizehy in #274
- Add db export and import commands by @TheShnider in #280
- feat(daemon): fix #112 by integrating alert delivery into the daemon loop by @Gezziy in #279
- feat(core): implement retry with exponential backoff for RPC calls by @Stephan-Thomas in #254
- feat(cli): add history command to show state changes by @Faizehy in #276
- feat(cli): add budget configuration commands by @neyij in #264
- Feat/148 adaptive polling intervals by @nazteeemba in #262
- feat(alerts): alert on configured state changes by @Faizehy in #275
- #145 feat(core): integrate HashiCorp Vault for key retrieval FIXED by @veloura-dev in #270
- #157 feat(core): decode Stellar Asset Contract (SAC) balances FIXED by @veloura-dev in #265
- feat(db): add resource_usage_logs table with repository functions by @funds0033-cmyk in #246
- test(cli): add tests for alerts test command by @Tijesunimi004 in #281
- feat(alerts): implement webhook delivery channel (#110) by @daveades in #289
- feat(core): implement ExtendFootprintTTLOp with simulation and fee parsing (#115) by @daveades in #288
- feat(cli): implement restore command (#119) by @daveades in #287
- feat(cli): add database maintenance commands by @OkonkwoEmeka in #294
- Update e2e-sandbox.md by @judithJn in #306
- feat(core): build ledger entry key decoder by @probablyABug in #256
- spec: draft get_monitored_keys() contract convention by @Stephan-Thomas in #255
- feat(cli): add inspect command for decoded entry values by @Faizehy in #299
- feat: add guard command tests for --auto-extend policy registration by @JClark011 in #307
- docs: write complete CLI reference manual by @lightnoor890 in #304
- chore: regenerate package-lock.json and update dependencies by @Arome8240 in #216
- resolve alerts per alert by @farouqyakubu6-creator in #248
- Feature/169 cost projections forecasted rent by @funds0033-cmyk in #249
- fix(cli): mask private keys in all console and log outputs by @Godfrey-Delight in #252
- feat(core): implement auto-extension rate limiter and parse resource estimates by @Bokky73 in #298
- feat(db): add budget_tracking table to SQLite by @jacintaaugustine in #301
- feat(core): integrate auto-extension into monitor cycle by @Tijesunimi004 in #282
- test(cli): expand alerts add/list/remove test coverage by @Tijesunimi004 in #283
- Feat/GitHub action by @Power70 in #297
- Feat/instance storage scanner by @oscarj007 in #267
- Feat/secure keychain storage by @oscarj007 in #268
- Feat/simulation traffic cache by @oscarj007 in #269
- update by @lightnoor890 in #303
- feat(cli): add shell completion for bash/zsh by @aliyuHabibu in #247
- implement RPC rate limiting by @farouqyakubu6-creator in #251
- Implementing AlertChannel interface and dispatcher core by @Olagoke22 in #290
- add integration test for full alert lifecycle by @Olagoke22 in #291
- implement transaction building for RestoreFootprintOp by @Olagoke22 in #295
- Implement costs command by @Olagoke22 in #296
- json output flag to status and costs commands by @farouqyakubu6-creator in #253
- test(core): add edge case tests for simulation failures by @neyij in #263
- feat: dynamically discover storage keys from transaction footprints by @Glam26 in #271
- feat(core): build SCVal-to-JSON type translator by @sarah-obasi-analytics in #285
- feat(cli): support custom schema files for state formatting groundwork by @sarah-obasi-analytics in #286
- Resolve by @Fale1278 in #292
- feat(core): implement MCP server with stdio transport by @OkonkwoEmeka in #293
- feat(core): enforce budget limits before auto-extension by @jacintaaugustine in #300
- feat(core): implement key resolution chain (env -> keychain -> file) by @jacintaaugustine in #302
- feat(cli): add --dry-run flag to guard command by @lightnoor890 in #305
- feat: config fallback, slack webhook, unwatch, pause/resume monitoring by @habdullhigh in #309
New Contributors
- @nextgenuniversity1-oss made their first contribution in #240
- @somotochukwu-dev made their first contribution in #238
- @Windowlight made their first contribution in #236
- @GOE001 made their first contribution in #219
- @Bellamzy made their first contribution in #231
- @kuse-design made their first contribution in #212
- @Abdulrasaq1515 made their first contribution in #209
- @JesseJohn7 made their first contribution in #213
- @olufunsoolutayo made their first contribution in #232
- @Killerjunior made their first contribution in #233
- @Enemuo-debug made their first contribution in #220
- @debbieAmoni made their first contribution in #241
- @bigjoe-io made their first contribution in #234
- @Michealshodipo56 made their first contribution in #223
- @funds0033-cmyk made their first contribution in #244
- @Peaostrel made their first contribution in #208
- @dee-john made their first contribution in #210
- @abubakarlekson27577-wq made their first contribution in #228
- @mrteeednut007-dotcom made their first contribution in #224
- @onakijames-droid made their first contribution in #243
- @JudeDaniel6 made their first contribution in #239
- @oluseguntaiwojoel-lab made their first contribution in #230
- @dunnidev made their first contribution in #222
- @jaynomyaro made their first contribution in #221
- @paulpeter32-coder made their first contribution in #217
- @GauravKarakoti made their first contribution in #211
- @adepoju2006 made their first contribution in #250
- @TheShnider made their first contribution in #277
- @Emoji-dot made their first contribution in #284
- @probablyABug made their first contribution in #259
- @Faizehy made their first contribution in #274
- @Gezziy made their first contribution in #279
- @Stephan-Thomas made their first contribution in #254
- @neyij made their first contribution in #264
- @nazteeemba made their first contribution in #262
- @veloura-dev made their first contribution in #270
- @Tijesunimi004 made their first contribution in #281
- @daveades made their first contribution in #289
- @OkonkwoEmeka made their first contribution in #294
- @judithJn made their first contribution in #306
- @JClark011 made their first contribution in #307
- @lightnoor890 made their first contribution in #304
- @Arome8240 made their first contribution in #216
- @farouqyakubu6-creator made their first contribution in #248
- @Godfrey-Delight made their first contribution in #252
- @Bokky73 made their first contribution in #298
- @jacintaaugustine made their first contribution in #301
- @Power70 made their first contribution in #297
- @oscarj007 made their first contribution in #267
- @aliyuHabibu made their first contribution in #247
- @Olagoke22 made their first contribution in #290
- @Glam26 made their first contribution in #271
- @sarah-obasi-analytics made their first contribution in #285
- @Fale1278 made their first contribution in #292
- @habdullhigh made their first contribution in #309
Full Changelog: https://github.com/AbdulmalikAlayande/sorokeep/commits/v1.0.0