homesec 1.2.0__tar.gz → 1.2.2__tar.gz

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 (144) hide show
  1. homesec-1.2.2/CHANGELOG.md +343 -0
  2. {homesec-1.2.0 → homesec-1.2.2}/DESIGN.md +8 -1
  3. {homesec-1.2.0 → homesec-1.2.2}/PKG-INFO +216 -167
  4. homesec-1.2.2/README.md +328 -0
  5. {homesec-1.2.0 → homesec-1.2.2}/config/example.yaml +23 -8
  6. {homesec-1.2.0 → homesec-1.2.2}/pyproject.toml +1 -1
  7. homesec-1.2.2/skills/local/homesec-db-logs/SKILL.md +73 -0
  8. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/__init__.py +3 -1
  9. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/config.py +3 -1
  10. homesec-1.2.2/src/homesec/models/source/__init__.py +3 -0
  11. homesec-1.2.2/src/homesec/models/source/ftp.py +97 -0
  12. homesec-1.2.2/src/homesec/models/source/local_folder.py +30 -0
  13. homesec-1.2.2/src/homesec/models/source/rtsp.py +165 -0
  14. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/filters/yolo.py +2 -2
  15. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/sources/ftp.py +1 -1
  16. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/sources/local_folder.py +1 -1
  17. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/sources/rtsp.py +2 -2
  18. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/sources/__init__.py +4 -2
  19. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/sources/ftp.py +1 -1
  20. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/sources/local_folder.py +1 -1
  21. homesec-1.2.2/src/homesec/sources/rtsp/__init__.py +5 -0
  22. homesec-1.2.2/src/homesec/sources/rtsp/clock.py +18 -0
  23. homesec-1.2.2/src/homesec/sources/rtsp/core.py +1264 -0
  24. homesec-1.2.2/src/homesec/sources/rtsp/frame_pipeline.py +325 -0
  25. homesec-1.2.2/src/homesec/sources/rtsp/hardware.py +143 -0
  26. homesec-1.2.2/src/homesec/sources/rtsp/motion.py +94 -0
  27. homesec-1.2.2/src/homesec/sources/rtsp/recorder.py +180 -0
  28. homesec-1.2.2/src/homesec/sources/rtsp/utils.py +35 -0
  29. homesec-1.2.2/tests/homesec/rtsp/test_frame_pipeline.py +120 -0
  30. homesec-1.2.2/tests/homesec/rtsp/test_hardware.py +111 -0
  31. homesec-1.2.0/tests/homesec/test_rtsp_helpers.py → homesec-1.2.2/tests/homesec/rtsp/test_helpers.py +3 -3
  32. homesec-1.2.2/tests/homesec/rtsp/test_runtime.py +962 -0
  33. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_app.py +1 -1
  34. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_ftp_source.py +1 -1
  35. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_yolo_filter.py +1 -1
  36. {homesec-1.2.0 → homesec-1.2.2}/uv.lock +2 -2
  37. homesec-1.2.0/CHANGELOG.md +0 -98
  38. homesec-1.2.0/README.md +0 -279
  39. homesec-1.2.0/src/homesec/models/source.py +0 -81
  40. homesec-1.2.0/src/homesec/sources/rtsp.py +0 -1304
  41. {homesec-1.2.0 → homesec-1.2.2}/.dockerignore +0 -0
  42. {homesec-1.2.0 → homesec-1.2.2}/.env.example +0 -0
  43. {homesec-1.2.0 → homesec-1.2.2}/.github/workflows/ci.yml +0 -0
  44. {homesec-1.2.0 → homesec-1.2.2}/.github/workflows/release.yaml +0 -0
  45. {homesec-1.2.0 → homesec-1.2.2}/.github/workflows/validate-pr-title.yaml +0 -0
  46. {homesec-1.2.0 → homesec-1.2.2}/.gitignore +0 -0
  47. {homesec-1.2.0 → homesec-1.2.2}/AGENTS.md +0 -0
  48. {homesec-1.2.0 → homesec-1.2.2}/Dockerfile +0 -0
  49. {homesec-1.2.0 → homesec-1.2.2}/LICENSE +0 -0
  50. {homesec-1.2.0 → homesec-1.2.2}/Makefile +0 -0
  51. {homesec-1.2.0 → homesec-1.2.2}/PLUGIN_DEVELOPMENT.md +0 -0
  52. {homesec-1.2.0 → homesec-1.2.2}/TESTING.md +0 -0
  53. {homesec-1.2.0 → homesec-1.2.2}/alembic/env.py +0 -0
  54. {homesec-1.2.0 → homesec-1.2.2}/alembic/script.py.mako +0 -0
  55. {homesec-1.2.0 → homesec-1.2.2}/alembic/versions/e6f25df0df90_initial.py +0 -0
  56. {homesec-1.2.0 → homesec-1.2.2}/alembic.ini +0 -0
  57. {homesec-1.2.0 → homesec-1.2.2}/docker-compose.yml +0 -0
  58. {homesec-1.2.0 → homesec-1.2.2}/docker-entrypoint.sh +0 -0
  59. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/__init__.py +0 -0
  60. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/app.py +0 -0
  61. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/cli.py +0 -0
  62. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/config/__init__.py +0 -0
  63. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/config/loader.py +0 -0
  64. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/config/validation.py +0 -0
  65. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/errors.py +0 -0
  66. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/health/__init__.py +0 -0
  67. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/health/server.py +0 -0
  68. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/interfaces.py +0 -0
  69. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/logging_setup.py +0 -0
  70. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/maintenance/__init__.py +0 -0
  71. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/maintenance/cleanup_clips.py +0 -0
  72. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/alert.py +0 -0
  73. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/clip.py +0 -0
  74. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/enums.py +0 -0
  75. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/events.py +0 -0
  76. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/filter.py +0 -0
  77. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/storage.py +0 -0
  78. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/models/vlm.py +0 -0
  79. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/pipeline/__init__.py +0 -0
  80. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/pipeline/alert_policy.py +0 -0
  81. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/pipeline/core.py +0 -0
  82. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/__init__.py +0 -0
  83. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/alert_policies/__init__.py +0 -0
  84. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/alert_policies/default.py +0 -0
  85. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/alert_policies/noop.py +0 -0
  86. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/analyzers/__init__.py +0 -0
  87. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/analyzers/openai.py +0 -0
  88. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/filters/__init__.py +0 -0
  89. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/notifiers/__init__.py +0 -0
  90. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/notifiers/mqtt.py +0 -0
  91. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/notifiers/multiplex.py +0 -0
  92. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/notifiers/sendgrid_email.py +0 -0
  93. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/registry.py +0 -0
  94. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/sources/__init__.py +0 -0
  95. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/storage/__init__.py +0 -0
  96. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/storage/dropbox.py +0 -0
  97. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/storage/local.py +0 -0
  98. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/plugins/utils.py +0 -0
  99. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/py.typed +0 -0
  100. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/repository/__init__.py +0 -0
  101. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/repository/clip_repository.py +0 -0
  102. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/sources/base.py +0 -0
  103. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/state/__init__.py +0 -0
  104. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/state/postgres.py +0 -0
  105. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/storage_paths.py +0 -0
  106. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/telemetry/__init__.py +0 -0
  107. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/telemetry/db/__init__.py +0 -0
  108. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/telemetry/db/log_table.py +0 -0
  109. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/telemetry/db_log_handler.py +0 -0
  110. {homesec-1.2.0 → homesec-1.2.2}/src/homesec/telemetry/postgres_settings.py +0 -0
  111. {homesec-1.2.0 → homesec-1.2.2}/tests/__init__.py +0 -0
  112. {homesec-1.2.0 → homesec-1.2.2}/tests/conftest.py +0 -0
  113. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/__init__.py +0 -0
  114. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/conftest.py +0 -0
  115. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/mocks/__init__.py +0 -0
  116. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/mocks/event_store.py +0 -0
  117. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/mocks/filter.py +0 -0
  118. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/mocks/notifier.py +0 -0
  119. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/mocks/state_store.py +0 -0
  120. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/mocks/storage.py +0 -0
  121. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/mocks/vlm.py +0 -0
  122. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_alert_policy.py +0 -0
  123. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_cleanup_clips.py +0 -0
  124. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_cli.py +0 -0
  125. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_clip_repository.py +0 -0
  126. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_clip_sources.py +0 -0
  127. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_config.py +0 -0
  128. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_dropbox_storage.py +0 -0
  129. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_enums.py +0 -0
  130. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_event_store.py +0 -0
  131. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_health.py +0 -0
  132. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_integration.py +0 -0
  133. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_local_storage.py +0 -0
  134. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_logging_setup.py +0 -0
  135. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_mqtt_notifier.py +0 -0
  136. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_notifiers.py +0 -0
  137. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_openai_vlm.py +0 -0
  138. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_pipeline.py +0 -0
  139. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_pipeline_events.py +0 -0
  140. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_plugin_registration.py +0 -0
  141. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_plugin_utils.py +0 -0
  142. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_sendgrid_notifier.py +0 -0
  143. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_source_health.py +0 -0
  144. {homesec-1.2.0 → homesec-1.2.2}/tests/homesec/test_state_store.py +0 -0
@@ -0,0 +1,343 @@
1
+ # CHANGELOG
2
+
3
+ <!-- version list -->
4
+
5
+ ## v1.2.2 (2026-01-27)
6
+
7
+ ### Bug Fixes
8
+
9
+ - Align recording sensitivity constraints ([#16](https://github.com/lan17/homesec/pull/16),
10
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
11
+
12
+ - Defer rtsp detect fallback while recording ([#16](https://github.com/lan17/homesec/pull/16),
13
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
14
+
15
+ - Harden rtsp recording retries ([#16](https://github.com/lan17/homesec/pull/16),
16
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
17
+
18
+ - Honor exact rtsp reconnect attempts ([#16](https://github.com/lan17/homesec/pull/16),
19
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
20
+
21
+ - Improve rtsp reconnect and fallback ([#16](https://github.com/lan17/homesec/pull/16),
22
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
23
+
24
+ - Make recording motion threshold more sensitive ([#16](https://github.com/lan17/homesec/pull/16),
25
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
26
+
27
+ ### Chores
28
+
29
+ - Remove rtsp improvements plan from repo ([#16](https://github.com/lan17/homesec/pull/16),
30
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
31
+
32
+ ### Documentation
33
+
34
+ - Add homesec db logs skill ([#16](https://github.com/lan17/homesec/pull/16),
35
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
36
+
37
+ ### Refactoring
38
+
39
+ - Centralize rtsp recording state ([#16](https://github.com/lan17/homesec/pull/16),
40
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
41
+
42
+ - Export rtsp public api ([#16](https://github.com/lan17/homesec/pull/16),
43
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
44
+
45
+ - Extract rtsp motion detector ([#16](https://github.com/lan17/homesec/pull/16),
46
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
47
+
48
+ - Make rtsp pipeline lifecycle explicit ([#16](https://github.com/lan17/homesec/pull/16),
49
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
50
+
51
+ - Reorganize source configs ([#16](https://github.com/lan17/homesec/pull/16),
52
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
53
+
54
+ - Restrict rtsp package exports ([#16](https://github.com/lan17/homesec/pull/16),
55
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
56
+
57
+ - Simplify rtsp run loop ([#16](https://github.com/lan17/homesec/pull/16),
58
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
59
+
60
+ - Simplify rtsp run loop and probes ([#16](https://github.com/lan17/homesec/pull/16),
61
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
62
+
63
+ - Split rtsp into package modules ([#16](https://github.com/lan17/homesec/pull/16),
64
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
65
+
66
+ - Tighten rtsp detect fallback and backoff ([#16](https://github.com/lan17/homesec/pull/16),
67
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
68
+
69
+ ### Testing
70
+
71
+ - Add rtsp reconnect deferral coverage ([#16](https://github.com/lan17/homesec/pull/16),
72
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
73
+
74
+ - Add rtsp stall and detect recovery coverage ([#16](https://github.com/lan17/homesec/pull/16),
75
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
76
+
77
+ - Cover detect switch fallback ([#16](https://github.com/lan17/homesec/pull/16),
78
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
79
+
80
+ - Cover ffmpeg timeout fallback ([#16](https://github.com/lan17/homesec/pull/16),
81
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
82
+
83
+ - Cover ffprobe error handling ([#16](https://github.com/lan17/homesec/pull/16),
84
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
85
+
86
+ - Cover ffprobe timeout fallback ([#16](https://github.com/lan17/homesec/pull/16),
87
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
88
+
89
+ - Cover recording start backoff ([#16](https://github.com/lan17/homesec/pull/16),
90
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
91
+
92
+ - Cover rtsp frame pipeline edge cases ([#16](https://github.com/lan17/homesec/pull/16),
93
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
94
+
95
+ - Cover rtsp recording timers ([#16](https://github.com/lan17/homesec/pull/16),
96
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
97
+
98
+ - Expand rtsp config coverage ([#16](https://github.com/lan17/homesec/pull/16),
99
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
100
+
101
+ - Expand rtsp coverage and regroup tests ([#16](https://github.com/lan17/homesec/pull/16),
102
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
103
+
104
+ - Harden rtsp config paths ([#16](https://github.com/lan17/homesec/pull/16),
105
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
106
+
107
+ - Harden rtsp hardware detection ([#16](https://github.com/lan17/homesec/pull/16),
108
+ [`8ac42d2`](https://github.com/lan17/homesec/commit/8ac42d2e828cf2c5e9f7c0cc5da32b677ddbbd54))
109
+
110
+
111
+ ## v1.2.1 (2026-01-19)
112
+
113
+ ### Bug Fixes
114
+
115
+ - Correct ToC anchor for 'With Docker' section ([#9](https://github.com/lan17/homesec/pull/9),
116
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
117
+
118
+ - Improve CLI help output to show available commands ([#9](https://github.com/lan17/homesec/pull/9),
119
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
120
+
121
+ ### Chores
122
+
123
+ - Sync uv.lock version ([#9](https://github.com/lan17/homesec/pull/9),
124
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
125
+
126
+ - Update uv.lock
127
+ ([`f417abc`](https://github.com/lan17/homesec/commit/f417abc93632e52dbb8bb109ba9bedf354713252))
128
+
129
+ ### Documentation
130
+
131
+ - Add .env setup to manual quickstart to address feedback
132
+ ([#9](https://github.com/lan17/homesec/pull/9),
133
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
134
+
135
+ - Add installation section and update CLI examples ([#9](https://github.com/lan17/homesec/pull/9),
136
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
137
+
138
+ - Add Postgres state tracking to mermaid diagram ([#15](https://github.com/lan17/homesec/pull/15),
139
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
140
+
141
+ - Address copilot feedback (ToC links, hierarchy, config cleanup)
142
+ ([#15](https://github.com/lan17/homesec/pull/15),
143
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
144
+
145
+ - Address PR feedback on Intro and Design Principles ([#9](https://github.com/lan17/homesec/pull/9),
146
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
147
+
148
+ - Clean up mermaid diagram with simplified Postgres tracking
149
+ ([#15](https://github.com/lan17/homesec/pull/15),
150
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
151
+
152
+ - Consolidate plugin sections with interfaces table ([#9](https://github.com/lan17/homesec/pull/9),
153
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
154
+
155
+ - Fix ToC links to point to valid headers ([#15](https://github.com/lan17/homesec/pull/15),
156
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
157
+
158
+ - Fix yolo docstring in tests ([#9](https://github.com/lan17/homesec/pull/9),
159
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
160
+
161
+ - Huge readme refactor and config update ([#9](https://github.com/lan17/homesec/pull/9),
162
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
163
+
164
+ - Humanize tone, simpler phrasing, no em-dashes ([#9](https://github.com/lan17/homesec/pull/9),
165
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
166
+
167
+ - Improve mermaid diagram to show clip file intermediate step
168
+ ([#9](https://github.com/lan17/homesec/pull/9),
169
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
170
+
171
+ - Improve README intro with clearer value prop and PyPI badge
172
+ ([#9](https://github.com/lan17/homesec/pull/9),
173
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
174
+
175
+ - Move Clip Source inside subgraph to fix title overlap
176
+ ([#15](https://github.com/lan17/homesec/pull/15),
177
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
178
+
179
+ - Overhaul README & Update Config for Accuracy/DX ([#9](https://github.com/lan17/homesec/pull/9),
180
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
181
+
182
+ - Polish README - consistent paths, clearer tips ([#9](https://github.com/lan17/homesec/pull/9),
183
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
184
+
185
+ - Position Postgres to the right of pipeline ([#15](https://github.com/lan17/homesec/pull/15),
186
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
187
+
188
+ - Refine mermaid diagram (graph LR, remove styles) ([#15](https://github.com/lan17/homesec/pull/15),
189
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
190
+
191
+ - Refine mermaid layout with nested wrapper subgraph
192
+ ([#15](https://github.com/lan17/homesec/pull/15),
193
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
194
+
195
+ - Refine README tone to be more technical ([#9](https://github.com/lan17/homesec/pull/9),
196
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
197
+
198
+ - Remove dup header, fix ToC, update yolo docstring ([#9](https://github.com/lan17/homesec/pull/9),
199
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
200
+
201
+ - Rename RTSP var to DRIVEWAY_RTSP_URL to match camera name
202
+ ([#9](https://github.com/lan17/homesec/pull/9),
203
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
204
+
205
+ - Reorganize README table of contents ([#9](https://github.com/lan17/homesec/pull/9),
206
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
207
+
208
+ - Restructure Configuration with minimal and full examples
209
+ ([#9](https://github.com/lan17/homesec/pull/9),
210
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
211
+
212
+ - Restructure Quickstart - shared config, Docker/non-Docker run options
213
+ ([#9](https://github.com/lan17/homesec/pull/9),
214
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
215
+
216
+ - Revert mermaid diagram to vertical (graph TD) ([#15](https://github.com/lan17/homesec/pull/15),
217
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
218
+
219
+ - Revert to mermaid diagram but make it vertical ([#9](https://github.com/lan17/homesec/pull/9),
220
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
221
+
222
+ - Simplify Running without Docker, expand Development section
223
+ ([#9](https://github.com/lan17/homesec/pull/9),
224
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
225
+
226
+ - Streamline Quickstart for pip-only users ([#9](https://github.com/lan17/homesec/pull/9),
227
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
228
+
229
+ - Sync readme config examples with .env.example ([#9](https://github.com/lan17/homesec/pull/9),
230
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
231
+
232
+ - Update Highlights - YOLO11 and remove redundant bullet
233
+ ([#9](https://github.com/lan17/homesec/pull/9),
234
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
235
+
236
+ - Wrap mermaid pipeline in subgraph for better visual grouping
237
+ ([#15](https://github.com/lan17/homesec/pull/15),
238
+ [`908b0d8`](https://github.com/lan17/homesec/commit/908b0d807dfe91eae5a0b29601c598d305c676d6))
239
+
240
+ ### Refactoring
241
+
242
+ - Rename YOLOv8Filter to YOLOFilter and overhaul docs based on feedback
243
+ ([#9](https://github.com/lan17/homesec/pull/9),
244
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
245
+
246
+ - Use Fire's native help output for CLI commands ([#9](https://github.com/lan17/homesec/pull/9),
247
+ [`77b5f65`](https://github.com/lan17/homesec/commit/77b5f65461ce4016186cfbf2b3961779fd5a9fef))
248
+
249
+
250
+ ## v1.2.0 (2026-01-19)
251
+
252
+ ### Bug Fixes
253
+
254
+ - **rtsp**: Remove incompatible -rw_timeout flag and unused variables
255
+ ([`40339a2`](https://github.com/lan17/homesec/commit/40339a27ff3f45117ef918c6485da8dbcc0be724))
256
+
257
+ - **rtsp**: Use -vsync 0 instead of -fps_mode for older ffmpeg compat
258
+ ([`22fc7e3`](https://github.com/lan17/homesec/commit/22fc7e3fab57aefa869d4246b036d5d0b47494dd))
259
+
260
+ ### Chores
261
+
262
+ - Sync uv.lock with project version 1.1.2 ([#14](https://github.com/lan17/homesec/pull/14),
263
+ [`64f50d8`](https://github.com/lan17/homesec/commit/64f50d86d22f0a52a8298c9ba38146cc17a1f0be))
264
+
265
+ ### Features
266
+
267
+ - **rtsp**: Add configurable ffmpeg_flags and robust defaults
268
+ ([`e460637`](https://github.com/lan17/homesec/commit/e460637bbdeee7f3947ddf2778a69c980edcf24b))
269
+
270
+
271
+ ## v1.1.2 (2026-01-19)
272
+
273
+ ### Bug Fixes
274
+
275
+ - Use PAT token for release workflow to bypass branch protection
276
+ ([#13](https://github.com/lan17/homesec/pull/13),
277
+ [`511ac6d`](https://github.com/lan17/homesec/commit/511ac6d8899365d324ede41aefdbe8fab910f1cb))
278
+
279
+ ### Refactoring
280
+
281
+ - Complete plugin architecture standardization ([#10](https://github.com/lan17/homesec/pull/10),
282
+ [`4e5b85f`](https://github.com/lan17/homesec/commit/4e5b85fd9a32d4f71c4365222a735c2e01eba583))
283
+
284
+
285
+ ## v1.1.1 (2026-01-16)
286
+
287
+ ### Bug Fixes
288
+
289
+ - Improve CLI help output to show available commands ([#8](https://github.com/lan17/homesec/pull/8),
290
+ [`4c8342f`](https://github.com/lan17/homesec/commit/4c8342f71274f2110231f112b77d68c8bb119c17))
291
+
292
+ ### Chores
293
+
294
+ - Sync uv.lock version ([#8](https://github.com/lan17/homesec/pull/8),
295
+ [`4c8342f`](https://github.com/lan17/homesec/commit/4c8342f71274f2110231f112b77d68c8bb119c17))
296
+
297
+ ### Refactoring
298
+
299
+ - Use Fire's native help output for CLI commands ([#8](https://github.com/lan17/homesec/pull/8),
300
+ [`4c8342f`](https://github.com/lan17/homesec/commit/4c8342f71274f2110231f112b77d68c8bb119c17))
301
+
302
+
303
+ ## v1.1.0 (2026-01-12)
304
+
305
+ ### Bug Fixes
306
+
307
+ - Add Codecov token to CI workflow ([#5](https://github.com/lan17/homesec/pull/5),
308
+ [`6657cf2`](https://github.com/lan17/homesec/commit/6657cf2e94fe7bf8d0eaed39cfa98242f9766188))
309
+
310
+ - Correct Codecov badge URL case (HomeSec) ([#6](https://github.com/lan17/homesec/pull/6),
311
+ [`74019fe`](https://github.com/lan17/homesec/commit/74019fe4b313d588a72e96ff86a7b647e69c8150))
312
+
313
+ ### Features
314
+
315
+ - Add code coverage and improve documentation ([#4](https://github.com/lan17/homesec/pull/4),
316
+ [`b1d9490`](https://github.com/lan17/homesec/commit/b1d949057db675ed20f2623f06cef1fd58c4dcc3))
317
+
318
+ ### Testing
319
+
320
+ - Improve code coverage from 64% to 70% ([#7](https://github.com/lan17/homesec/pull/7),
321
+ [`7b93468`](https://github.com/lan17/homesec/commit/7b934685e8389bb24c8cc8878cb43b5570f5371e))
322
+
323
+
324
+ ## v1.0.2 (2026-01-11)
325
+
326
+ ### Bug Fixes
327
+
328
+ - CI and release workflow improvements ([#3](https://github.com/lan17/homesec/pull/3),
329
+ [`ab61e47`](https://github.com/lan17/homesec/commit/ab61e47c7c16c79e8472807c07e4974e31a13c29))
330
+
331
+
332
+ ## v1.0.1 (2026-01-11)
333
+
334
+ ### Bug Fixes
335
+
336
+ - Improve release workflow dry run and prevent major version jumps
337
+ ([#2](https://github.com/lan17/HomeSec/pull/2),
338
+ [`ba02512`](https://github.com/lan17/HomeSec/commit/ba025129de5caa984552807e4e0f376666db485e))
339
+
340
+
341
+ ## v1.0.0 (2026-01-11)
342
+
343
+ - Initial Release
@@ -136,7 +136,14 @@ Build a reliable, pluggable pipeline to:
136
136
 
137
137
  ## Current Building Blocks (Repo)
138
138
 
139
- - Motion + recording: `src/homesec/sources/rtsp.py` (OpenCV motion detection + ffmpeg recording).
139
+ - Motion + recording: `src/homesec/sources/rtsp/core.py` (OpenCV motion detection + ffmpeg recording).
140
+ - RTSP helpers live in `src/homesec/sources/rtsp/`:
141
+ - `frame_pipeline.py` (ffmpeg frame reader + stall/reconnect support)
142
+ - `recorder.py` (ffmpeg recording process)
143
+ - `motion.py` (motion detection logic)
144
+ - `hardware.py` (hwaccel detection)
145
+ - `clock.py` (clock abstraction for tests)
146
+ - `utils.py` (shared helpers)
140
147
  - Object detection plugin (reference): `src/homesec/plugins/filters/yolo.py` (YOLOv8 sampling to detect people/animals).
141
148
  - VLM plugin (reference): `src/homesec/plugins/analyzers/openai.py` (structured output with `risk_level`, `activity_type`, timeline).
142
149
  - Postgres (workflow state when available): Alembic migrations (`alembic/`) + telemetry logging (`src/db_log_handler.py`) + workflow state table `clip_states` (best-effort; DB outages may drop state updates).