homesec 1.0.0__tar.gz → 1.0.1__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.
- {homesec-1.0.0 → homesec-1.0.1}/.github/workflows/release.yaml +18 -15
- homesec-1.0.1/CHANGELOG.md +16 -0
- {homesec-1.0.0 → homesec-1.0.1}/PKG-INFO +1 -1
- {homesec-1.0.0 → homesec-1.0.1}/pyproject.toml +3 -2
- homesec-1.0.0/CHANGELOG.md +0 -7
- {homesec-1.0.0 → homesec-1.0.1}/.dockerignore +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/.env.example +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/.github/workflows/ci.yml +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/.github/workflows/validate-pr-title.yaml +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/.gitignore +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/AGENTS.md +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/DESIGN.md +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/Dockerfile +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/LICENSE +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/Makefile +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/README.md +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/alembic/env.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/alembic/script.py.mako +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/alembic/versions/e6f25df0df90_initial.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/alembic.ini +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/config/example.yaml +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/docker-compose.yml +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/docker-entrypoint.sh +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/app.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/cli.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/config/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/config/loader.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/config/validation.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/errors.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/health/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/health/server.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/interfaces.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/logging_setup.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/maintenance/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/maintenance/cleanup_clips.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/alert.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/clip.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/config.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/events.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/filter.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/source.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/storage.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/models/vlm.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/pipeline/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/pipeline/alert_policy.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/pipeline/core.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/alert_policies/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/alert_policies/default.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/alert_policies/noop.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/analyzers/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/analyzers/openai.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/filters/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/filters/yolo.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/notifiers/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/notifiers/mqtt.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/notifiers/multiplex.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/notifiers/sendgrid_email.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/storage/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/storage/dropbox.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/storage/local.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/plugins/utils.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/py.typed +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/repository/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/repository/clip_repository.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/sources/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/sources/base.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/sources/ftp.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/sources/local_folder.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/sources/rtsp.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/state/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/state/postgres.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/storage_paths.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/telemetry/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/telemetry/db/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/telemetry/db/log_table.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/telemetry/db_log_handler.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/src/homesec/telemetry/postgres_settings.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/conftest.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/conftest.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/mocks/__init__.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/mocks/event_store.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/mocks/filter.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/mocks/notifier.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/mocks/state_store.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/mocks/storage.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/mocks/vlm.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_alert_policy.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_app.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_cleanup_clips.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_clip_repository.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_clip_sources.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_config.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_dropbox_storage.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_event_store.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_health.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_integration.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_local_folder_deduplication.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_mqtt_notifier.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_notifiers.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_openai_vlm.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_pipeline.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_pipeline_events.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_plugin_registration.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_rtsp_helpers.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_state_store.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/tests/homesec/test_yolo_filter.py +0 -0
- {homesec-1.0.0 → homesec-1.0.1}/uv.lock +0 -0
|
@@ -6,7 +6,7 @@ on:
|
|
|
6
6
|
dry_run:
|
|
7
7
|
description: 'Dry run (no actual release)'
|
|
8
8
|
required: false
|
|
9
|
-
default:
|
|
9
|
+
default: false
|
|
10
10
|
type: boolean
|
|
11
11
|
|
|
12
12
|
jobs:
|
|
@@ -30,38 +30,41 @@ jobs:
|
|
|
30
30
|
- name: Install python-semantic-release
|
|
31
31
|
run: pip install python-semantic-release
|
|
32
32
|
|
|
33
|
+
- name: Configure Git
|
|
34
|
+
run: |
|
|
35
|
+
git config user.name "github-actions[bot]"
|
|
36
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
37
|
+
|
|
33
38
|
- name: Semantic Release (dry run)
|
|
34
|
-
if:
|
|
35
|
-
run: semantic-release version --
|
|
39
|
+
if: inputs.dry_run
|
|
40
|
+
run: semantic-release version --print
|
|
36
41
|
|
|
37
42
|
- name: Semantic Release
|
|
38
|
-
if: ${{ inputs.dry_run
|
|
43
|
+
if: ${{ !inputs.dry_run }}
|
|
44
|
+
id: semrel
|
|
39
45
|
env:
|
|
40
46
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
41
47
|
run: |
|
|
42
|
-
git config user.name "github-actions[bot]"
|
|
43
|
-
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
44
48
|
semantic-release version
|
|
49
|
+
echo "version=$(grep 'version = ' pyproject.toml | head -1 | cut -d'\"' -f2)" >> $GITHUB_OUTPUT
|
|
45
50
|
|
|
46
51
|
- name: Build Package
|
|
47
|
-
if: ${{ inputs.dry_run
|
|
52
|
+
if: ${{ !inputs.dry_run }}
|
|
48
53
|
run: |
|
|
49
54
|
pip install build
|
|
50
55
|
python -m build
|
|
51
56
|
|
|
52
57
|
- name: Publish to PyPI
|
|
53
|
-
if: ${{ inputs.dry_run
|
|
58
|
+
if: ${{ !inputs.dry_run }}
|
|
54
59
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
55
60
|
with:
|
|
56
61
|
verbose: true
|
|
57
62
|
|
|
58
|
-
- name:
|
|
59
|
-
if: ${{ inputs.dry_run
|
|
63
|
+
- name: Upload to GitHub Release
|
|
64
|
+
if: ${{ !inputs.dry_run }}
|
|
60
65
|
env:
|
|
61
66
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
62
67
|
run: |
|
|
63
|
-
VERSION=$
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
--generate-notes \
|
|
67
|
-
dist/*
|
|
68
|
+
VERSION=${{ steps.semrel.outputs.version }}
|
|
69
|
+
# Upload dist files to the release that semantic-release created
|
|
70
|
+
gh release upload "v$VERSION" dist/* --clobber || true
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
<!-- version list -->
|
|
4
|
+
|
|
5
|
+
## v1.0.1 (2026-01-11)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Improve release workflow dry run and prevent major version jumps
|
|
10
|
+
([#2](https://github.com/lan17/HomeSec/pull/2),
|
|
11
|
+
[`ba02512`](https://github.com/lan17/HomeSec/commit/ba025129de5caa984552807e4e0f376666db485e))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## v1.0.0 (2026-01-11)
|
|
15
|
+
|
|
16
|
+
- Initial Release
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: homesec
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.1
|
|
4
4
|
Summary: Pluggable async home security camera pipeline with detection, VLM analysis, and alerts.
|
|
5
5
|
Project-URL: Homepage, https://github.com/lan17/homesec
|
|
6
6
|
Project-URL: Source, https://github.com/lan17/homesec
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "homesec"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.1"
|
|
4
4
|
description = "Pluggable async home security camera pipeline with detection, VLM analysis, and alerts."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -120,8 +120,9 @@ version_toml = ["pyproject.toml:project.version"]
|
|
|
120
120
|
version_source = "tag"
|
|
121
121
|
commit_message = "chore(release): v{version}"
|
|
122
122
|
branch = "main"
|
|
123
|
+
major_on_zero = false # Don't bump to 1.0.0 on breaking changes while in 0.x
|
|
123
124
|
|
|
124
125
|
[tool.semantic_release.commit_parser_options]
|
|
125
126
|
# feat = minor, fix/perf/chore/docs/style/refactor = patch
|
|
126
|
-
# BREAKING CHANGE = major
|
|
127
|
+
# BREAKING CHANGE = major (but blocked by major_on_zero while in 0.x)
|
|
127
128
|
patch_tags = ["fix", "perf", "chore", "docs", "style", "refactor"]
|
homesec-1.0.0/CHANGELOG.md
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|