source_monitor 0.1.3 → 0.2.0

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -0
  3. data/Gemfile.lock +1 -1
  4. data/app/assets/javascripts/source_monitor/application.js +4 -0
  5. data/app/assets/javascripts/source_monitor/controllers/confirm_navigation_controller.js +49 -0
  6. data/app/assets/javascripts/source_monitor/controllers/select_all_controller.js +36 -0
  7. data/app/controllers/source_monitor/import_sessions_controller.rb +791 -0
  8. data/app/controllers/source_monitor/sources_controller.rb +5 -36
  9. data/app/helpers/source_monitor/application_helper.rb +17 -0
  10. data/app/jobs/source_monitor/import_opml_job.rb +150 -0
  11. data/app/jobs/source_monitor/import_session_health_check_job.rb +93 -0
  12. data/app/models/source_monitor/import_history.rb +35 -0
  13. data/app/models/source_monitor/import_session.rb +34 -0
  14. data/app/views/source_monitor/import_sessions/_header.html.erb +12 -0
  15. data/app/views/source_monitor/import_sessions/_sidebar.html.erb +23 -0
  16. data/app/views/source_monitor/import_sessions/health_check/_progress.html.erb +20 -0
  17. data/app/views/source_monitor/import_sessions/health_check/_row.html.erb +44 -0
  18. data/app/views/source_monitor/import_sessions/show.html.erb +15 -0
  19. data/app/views/source_monitor/import_sessions/show.turbo_stream.erb +1 -0
  20. data/app/views/source_monitor/import_sessions/steps/_configure.html.erb +53 -0
  21. data/app/views/source_monitor/import_sessions/steps/_confirm.html.erb +121 -0
  22. data/app/views/source_monitor/import_sessions/steps/_health_check.html.erb +82 -0
  23. data/app/views/source_monitor/import_sessions/steps/_navigation.html.erb +29 -0
  24. data/app/views/source_monitor/import_sessions/steps/_preview.html.erb +172 -0
  25. data/app/views/source_monitor/import_sessions/steps/_upload.html.erb +42 -0
  26. data/app/views/source_monitor/sources/_form.html.erb +8 -138
  27. data/app/views/source_monitor/sources/_form_fields.html.erb +142 -0
  28. data/app/views/source_monitor/sources/_import_history_panel.html.erb +53 -0
  29. data/app/views/source_monitor/sources/index.html.erb +7 -1
  30. data/config/coverage_baseline.json +91 -15
  31. data/config/routes.rb +6 -0
  32. data/db/migrate/20251124090000_create_import_sessions.rb +18 -0
  33. data/db/migrate/20251124153000_add_health_fields_to_import_sessions.rb +14 -0
  34. data/db/migrate/20251125094500_create_import_histories.rb +19 -0
  35. data/lib/source_monitor/health/import_source_health_check.rb +55 -0
  36. data/lib/source_monitor/health.rb +1 -0
  37. data/lib/source_monitor/import_sessions/entry_normalizer.rb +30 -0
  38. data/lib/source_monitor/import_sessions/health_check_broadcaster.rb +103 -0
  39. data/lib/source_monitor/sources/params.rb +52 -0
  40. data/lib/source_monitor/version.rb +1 -1
  41. data/tasks/completed/codebase_audit_2025.md +1396 -0
  42. data/tasks/completed/engine-asset-configuration.md +203 -0
  43. data/tasks/completed/opml-import-wizard/opml-import-wizard-product-brief.md +58 -0
  44. data/tasks/completed/opml-import-wizard/opml-import-wizard-tech-brief.md +75 -0
  45. data/tasks/completed/opml-import-wizard/task-01/instructions.md +81 -0
  46. data/tasks/completed/opml-import-wizard/task-01/requirements.md +19 -0
  47. data/tasks/completed/opml-import-wizard/task-02/instructions.md +83 -0
  48. data/tasks/completed/opml-import-wizard/task-02/requirements.md +18 -0
  49. data/tasks/completed/opml-import-wizard/task-03/instructions.md +58 -0
  50. data/tasks/completed/opml-import-wizard/task-03/requirements.md +18 -0
  51. data/tasks/completed/opml-import-wizard/task-04/instructions.md +84 -0
  52. data/tasks/completed/opml-import-wizard/task-04/requirements.md +17 -0
  53. data/tasks/completed/opml-import-wizard/task-05/instructions.md +50 -0
  54. data/tasks/completed/opml-import-wizard/task-05/requirements.md +17 -0
  55. data/tasks/completed/opml-import-wizard/task-06/instructions.md +92 -0
  56. data/tasks/completed/opml-import-wizard/task-06/requirements.md +21 -0
  57. data/tasks/completed/phase_17_01_complexity_audit_2025-10-12.md +62 -0
  58. data/tasks/completed/phase_17_02_complexity_findings_2025-10-12.md +74 -0
  59. data/tasks/completed/phase_17_03_refactor_plan_2025-10-12.md +37 -0
  60. data/tasks/completed/phase_21_01_log_consolidation_2025-10-15.md +30 -0
  61. data/tasks/completed/release_checklist.md +23 -0
  62. data/tasks/completed/routes_refactor_evaluation.md +109 -0
  63. data/tasks/completed/source_monitor_rename_plan.md +70 -0
  64. data/tasks/completed/tasks.md +952 -0
  65. data/tasks/ideas.md +10 -0
  66. metadata +56 -3
  67. /data/tasks/{prd-setup-workflow-streamlining.md → completed/prd-setup-workflow-streamlining.md} +0 -0
  68. /data/tasks/{tasks-setup-workflow-streamlining.md → completed/tasks-setup-workflow-streamlining.md} +0 -0
data/tasks/ideas.md ADDED
@@ -0,0 +1,10 @@
1
+ - [ ] job queues stats cards needs to be rethought
2
+ - [X] ~~*add opml import/export*~~ [2025-11-25]
3
+ - [ ] clean upgrade strategy
4
+ - [ ] growl notifications are spamming the user when taking bulk actions
5
+ - [ ] add ability to manage per-source scraping rate limits to override configuration defaults
6
+ - [ ] ensure adaptive scheduling only reacts to truly new content (fetching a feed should use hashing on the summary or scrape to determine the item has really been updated, otherwise don't update anything)
7
+ - [ ] automatically extract transcripts from content that is mostly video or audio
8
+ - [ ] explore using this for markdown conversion (could be optional adapter for sources): https://github.com/Goldziher/html-to-markdown/blob/main/packages%2Fruby%2FREADME.md
9
+ - [ ] sources show page needs pagination for items
10
+ - [ ] sources show page should truncate item content to first 100 characters (with a stimulus expand link under the truncated content to show full body)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: source_monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - dchuk
@@ -254,9 +254,11 @@ files:
254
254
  - app/assets/images/source_monitor/.keep
255
255
  - app/assets/javascripts/source_monitor/application.js
256
256
  - app/assets/javascripts/source_monitor/controllers/async_submit_controller.js
257
+ - app/assets/javascripts/source_monitor/controllers/confirm_navigation_controller.js
257
258
  - app/assets/javascripts/source_monitor/controllers/dropdown_controller.js
258
259
  - app/assets/javascripts/source_monitor/controllers/modal_controller.js
259
260
  - app/assets/javascripts/source_monitor/controllers/notification_controller.js
261
+ - app/assets/javascripts/source_monitor/controllers/select_all_controller.js
260
262
  - app/assets/javascripts/source_monitor/turbo_actions.js
261
263
  - app/assets/stylesheets/source_monitor/application.tailwind.css
262
264
  - app/assets/svgs/source_monitor/.keep
@@ -266,6 +268,7 @@ files:
266
268
  - app/controllers/source_monitor/dashboard_controller.rb
267
269
  - app/controllers/source_monitor/fetch_logs_controller.rb
268
270
  - app/controllers/source_monitor/health_controller.rb
271
+ - app/controllers/source_monitor/import_sessions_controller.rb
269
272
  - app/controllers/source_monitor/items_controller.rb
270
273
  - app/controllers/source_monitor/logs_controller.rb
271
274
  - app/controllers/source_monitor/scrape_logs_controller.rb
@@ -279,6 +282,8 @@ files:
279
282
  - app/helpers/source_monitor/application_helper.rb
280
283
  - app/jobs/source_monitor/application_job.rb
281
284
  - app/jobs/source_monitor/fetch_feed_job.rb
285
+ - app/jobs/source_monitor/import_opml_job.rb
286
+ - app/jobs/source_monitor/import_session_health_check_job.rb
282
287
  - app/jobs/source_monitor/item_cleanup_job.rb
283
288
  - app/jobs/source_monitor/log_cleanup_job.rb
284
289
  - app/jobs/source_monitor/schedule_fetches_job.rb
@@ -290,6 +295,8 @@ files:
290
295
  - app/models/source_monitor/application_record.rb
291
296
  - app/models/source_monitor/fetch_log.rb
292
297
  - app/models/source_monitor/health_check_log.rb
298
+ - app/models/source_monitor/import_history.rb
299
+ - app/models/source_monitor/import_session.rb
293
300
  - app/models/source_monitor/item.rb
294
301
  - app/models/source_monitor/item_content.rb
295
302
  - app/models/source_monitor/log_entry.rb
@@ -303,6 +310,18 @@ files:
303
310
  - app/views/source_monitor/dashboard/_stats.html.erb
304
311
  - app/views/source_monitor/dashboard/index.html.erb
305
312
  - app/views/source_monitor/fetch_logs/show.html.erb
313
+ - app/views/source_monitor/import_sessions/_header.html.erb
314
+ - app/views/source_monitor/import_sessions/_sidebar.html.erb
315
+ - app/views/source_monitor/import_sessions/health_check/_progress.html.erb
316
+ - app/views/source_monitor/import_sessions/health_check/_row.html.erb
317
+ - app/views/source_monitor/import_sessions/show.html.erb
318
+ - app/views/source_monitor/import_sessions/show.turbo_stream.erb
319
+ - app/views/source_monitor/import_sessions/steps/_configure.html.erb
320
+ - app/views/source_monitor/import_sessions/steps/_confirm.html.erb
321
+ - app/views/source_monitor/import_sessions/steps/_health_check.html.erb
322
+ - app/views/source_monitor/import_sessions/steps/_navigation.html.erb
323
+ - app/views/source_monitor/import_sessions/steps/_preview.html.erb
324
+ - app/views/source_monitor/import_sessions/steps/_upload.html.erb
306
325
  - app/views/source_monitor/items/_details.html.erb
307
326
  - app/views/source_monitor/items/_details_wrapper.html.erb
308
327
  - app/views/source_monitor/items/index.html.erb
@@ -317,7 +336,9 @@ files:
317
336
  - app/views/source_monitor/sources/_empty_state_row.html.erb
318
337
  - app/views/source_monitor/sources/_fetch_interval_heatmap.html.erb
319
338
  - app/views/source_monitor/sources/_form.html.erb
339
+ - app/views/source_monitor/sources/_form_fields.html.erb
320
340
  - app/views/source_monitor/sources/_health_status_badge.html.erb
341
+ - app/views/source_monitor/sources/_import_history_panel.html.erb
321
342
  - app/views/source_monitor/sources/_row.html.erb
322
343
  - app/views/source_monitor/sources/edit.html.erb
323
344
  - app/views/source_monitor/sources/index.html.erb
@@ -348,6 +369,9 @@ files:
348
369
  - db/migrate/20251015100000_create_source_monitor_log_entries.rb
349
370
  - db/migrate/20251022100000_create_source_monitor_health_check_logs.rb
350
371
  - db/migrate/20251108120116_refresh_fetch_status_constraint.rb
372
+ - db/migrate/20251124090000_create_import_sessions.rb
373
+ - db/migrate/20251124153000_add_health_fields_to_import_sessions.rb
374
+ - db/migrate/20251125094500_create_import_histories.rb
351
375
  - docs/configuration.md
352
376
  - docs/deployment.md
353
377
  - docs/gh-cli-workflow.md
@@ -384,10 +408,13 @@ files:
384
408
  - lib/source_monitor/fetching/retry_policy.rb
385
409
  - lib/source_monitor/fetching/stalled_fetch_reconciler.rb
386
410
  - lib/source_monitor/health.rb
411
+ - lib/source_monitor/health/import_source_health_check.rb
387
412
  - lib/source_monitor/health/source_health_check.rb
388
413
  - lib/source_monitor/health/source_health_monitor.rb
389
414
  - lib/source_monitor/health/source_health_reset.rb
390
415
  - lib/source_monitor/http.rb
416
+ - lib/source_monitor/import_sessions/entry_normalizer.rb
417
+ - lib/source_monitor/import_sessions/health_check_broadcaster.rb
391
418
  - lib/source_monitor/instrumentation.rb
392
419
  - lib/source_monitor/items/item_creator.rb
393
420
  - lib/source_monitor/items/retention_pruner.rb
@@ -446,6 +473,7 @@ files:
446
473
  - lib/source_monitor/setup/verification/solid_queue_verifier.rb
447
474
  - lib/source_monitor/setup/verification/telemetry_logger.rb
448
475
  - lib/source_monitor/setup/workflow.rb
476
+ - lib/source_monitor/sources/params.rb
449
477
  - lib/source_monitor/sources/turbo_stream_presenter.rb
450
478
  - lib/source_monitor/turbo_streams/stream_responder.rb
451
479
  - lib/source_monitor/version.rb
@@ -459,8 +487,33 @@ files:
459
487
  - postcss.config.js
460
488
  - source_monitor.gemspec
461
489
  - stylelint.config.js
462
- - tasks/prd-setup-workflow-streamlining.md
463
- - tasks/tasks-setup-workflow-streamlining.md
490
+ - tasks/completed/codebase_audit_2025.md
491
+ - tasks/completed/engine-asset-configuration.md
492
+ - tasks/completed/opml-import-wizard/opml-import-wizard-product-brief.md
493
+ - tasks/completed/opml-import-wizard/opml-import-wizard-tech-brief.md
494
+ - tasks/completed/opml-import-wizard/task-01/instructions.md
495
+ - tasks/completed/opml-import-wizard/task-01/requirements.md
496
+ - tasks/completed/opml-import-wizard/task-02/instructions.md
497
+ - tasks/completed/opml-import-wizard/task-02/requirements.md
498
+ - tasks/completed/opml-import-wizard/task-03/instructions.md
499
+ - tasks/completed/opml-import-wizard/task-03/requirements.md
500
+ - tasks/completed/opml-import-wizard/task-04/instructions.md
501
+ - tasks/completed/opml-import-wizard/task-04/requirements.md
502
+ - tasks/completed/opml-import-wizard/task-05/instructions.md
503
+ - tasks/completed/opml-import-wizard/task-05/requirements.md
504
+ - tasks/completed/opml-import-wizard/task-06/instructions.md
505
+ - tasks/completed/opml-import-wizard/task-06/requirements.md
506
+ - tasks/completed/phase_17_01_complexity_audit_2025-10-12.md
507
+ - tasks/completed/phase_17_02_complexity_findings_2025-10-12.md
508
+ - tasks/completed/phase_17_03_refactor_plan_2025-10-12.md
509
+ - tasks/completed/phase_21_01_log_consolidation_2025-10-15.md
510
+ - tasks/completed/prd-setup-workflow-streamlining.md
511
+ - tasks/completed/release_checklist.md
512
+ - tasks/completed/routes_refactor_evaluation.md
513
+ - tasks/completed/source_monitor_rename_plan.md
514
+ - tasks/completed/tasks-setup-workflow-streamlining.md
515
+ - tasks/completed/tasks.md
516
+ - tasks/ideas.md
464
517
  homepage: https://github.com/dchuk/source_monitor
465
518
  licenses:
466
519
  - MIT