lifx-emulator 4.0.0__tar.gz → 4.2.0__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.
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/.gitignore +1 -1
- lifx_emulator-4.2.0/CHANGELOG.md +110 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/PKG-INFO +2 -1
- lifx_emulator-4.2.0/frontend/.gitignore +23 -0
- lifx_emulator-4.2.0/frontend/.npmrc +1 -0
- lifx_emulator-4.2.0/frontend/README.md +42 -0
- lifx_emulator-4.2.0/frontend/package-lock.json +1616 -0
- lifx_emulator-4.2.0/frontend/package.json +24 -0
- lifx_emulator-4.2.0/frontend/src/app.css +528 -0
- lifx_emulator-4.2.0/frontend/src/app.d.ts +13 -0
- lifx_emulator-4.2.0/frontend/src/app.html +12 -0
- lifx_emulator-4.2.0/frontend/src/lib/assets/favicon.svg +1 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/ActivityLog.svelte +135 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/AddDeviceForm.svelte +61 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/DeviceCard.svelte +167 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/DeviceList.svelte +128 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/DeviceTable.svelte +346 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/DeviceToolbar.svelte +212 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/Header.svelte +74 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/ScenarioPanel.svelte +589 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/StatsBar.svelte +33 -0
- lifx_emulator-4.2.0/frontend/src/lib/components/index.ts +9 -0
- lifx_emulator-4.2.0/frontend/src/lib/index.ts +1 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/activity.svelte.ts +38 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/connection.svelte.ts +172 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/devices.svelte.ts +55 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/index.ts +7 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/scenarios.svelte.ts +129 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/stats.svelte.ts +33 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/theme.svelte.ts +76 -0
- lifx_emulator-4.2.0/frontend/src/lib/stores/ui.svelte.ts +153 -0
- lifx_emulator-4.2.0/frontend/src/lib/types.ts +132 -0
- lifx_emulator-4.2.0/frontend/src/lib/utils/api.ts +150 -0
- lifx_emulator-4.2.0/frontend/src/lib/utils/color.ts +71 -0
- lifx_emulator-4.2.0/frontend/src/routes/+layout.svelte +18 -0
- lifx_emulator-4.2.0/frontend/src/routes/+layout.ts +3 -0
- lifx_emulator-4.2.0/frontend/src/routes/+page.svelte +131 -0
- lifx_emulator-4.2.0/frontend/static/robots.txt +3 -0
- lifx_emulator-4.2.0/frontend/svelte.config.js +21 -0
- lifx_emulator-4.2.0/frontend/tsconfig.json +16 -0
- lifx_emulator-4.2.0/frontend/vite.config.ts +6 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/pyproject.toml +2 -1
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/__main__.py +35 -7
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/__init__.py +0 -4
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/app.py +122 -16
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/models.py +32 -1
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/__init__.py +5 -1
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/devices.py +64 -10
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/routers/products.py +42 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/scenarios.py +55 -52
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/routers/websocket.py +70 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/__init__.py +25 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/device_service.py +386 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/event_bridge.py +234 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/scenario_service.py +153 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/websocket_manager.py +326 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/env.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/assets/0.DOQLX7EM.css +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/assets/2.CU0O2Xrb.css +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/BORyfda6.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/BTLkiQR5.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/BaoxLdOF.js +2 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/Binc8JbE.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/CDSQEL5N.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/DfIkQq0Y.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/MAGDeS2Z.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/N3z8axFy.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/yhjkpkcN.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/entry/app.Dhwm664s.js +2 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/entry/start.Nqz6UJJT.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/nodes/0.CPncm6RP.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/nodes/1.x-f3libw.js +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/nodes/2.BP5Yvqf4.js +6 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/version.json +1 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/index.html +38 -0
- lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/robots.txt +3 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/config.py +2 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/tests/test_api.py +370 -6
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/tests/test_api_validation.py +106 -4
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/tests/test_cli.py +144 -1
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/tests/test_cli_validation.py +15 -13
- lifx_emulator-4.2.0/tests/test_scenario_service.py +190 -0
- lifx_emulator-4.2.0/tests/test_websocket.py +444 -0
- lifx_emulator-4.0.0/CHANGELOG.md +0 -63
- lifx_emulator-4.0.0/src/lifx_emulator_app/api/services/__init__.py +0 -8
- lifx_emulator-4.0.0/src/lifx_emulator_app/api/services/device_service.py +0 -199
- lifx_emulator-4.0.0/src/lifx_emulator_app/api/static/dashboard.js +0 -588
- lifx_emulator-4.0.0/src/lifx_emulator_app/api/templates/dashboard.html +0 -357
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/README.md +0 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/__init__.py +0 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/mappers/__init__.py +0 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/mappers/device_mapper.py +0 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/monitoring.py +0 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/tests/conftest.py +0 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/tests/test_config.py +0 -0
- {lifx_emulator-4.0.0 → lifx_emulator-4.2.0}/tests/test_export_config.py +0 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# CHANGELOG
|
|
2
|
+
|
|
3
|
+
<!-- version list -->
|
|
4
|
+
|
|
5
|
+
## v4.2.0 (2026-02-03)
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- Address CodeRabbit PR review feedback
|
|
10
|
+
([`e302407`](https://github.com/Djelibeybi/lifx-emulator/commit/e302407e19f73de9a49361372b5c776b761d61e1))
|
|
11
|
+
|
|
12
|
+
- Correct $derived usage in ActivityLog.svelte for reactive filtering
|
|
13
|
+
([`a5e8280`](https://github.com/Djelibeybi/lifx-emulator/commit/a5e82809776e45a3f39f2b789fea3e5ca62185a7))
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- **api**: Add WebSocket endpoint for real-time updates
|
|
18
|
+
([`b1e9889`](https://github.com/Djelibeybi/lifx-emulator/commit/b1e98893049109cbe3d016c550b16e65d6a6c955))
|
|
19
|
+
|
|
20
|
+
- **api**: Complete WebSocket real-time event infrastructure
|
|
21
|
+
([`81cfa6f`](https://github.com/Djelibeybi/lifx-emulator/commit/81cfa6f11dfb7d216b40d6672ba73883841be11a))
|
|
22
|
+
|
|
23
|
+
- **app**: Add PyApp binary distribution support (Phase 5)
|
|
24
|
+
([`3c893a8`](https://github.com/Djelibeybi/lifx-emulator/commit/3c893a866b0c0c1a5578bf45146994eec8c37493))
|
|
25
|
+
|
|
26
|
+
- **dashboard**: Add activity filtering and device toolbar (Phase 3)
|
|
27
|
+
([`249964a`](https://github.com/Djelibeybi/lifx-emulator/commit/249964ac782c0d38e7af7341302c3cb49d430ce9))
|
|
28
|
+
|
|
29
|
+
- **dashboard**: Add scenario panel, pagination, and tabbed interface (Phase 4)
|
|
30
|
+
([`a50951d`](https://github.com/Djelibeybi/lifx-emulator/commit/a50951d805592787ea70a86441e44c781e307c1c))
|
|
31
|
+
|
|
32
|
+
- **dashboard**: Replace vanilla JS with SvelteKit frontend
|
|
33
|
+
([`a143c2c`](https://github.com/Djelibeybi/lifx-emulator/commit/a143c2c0aee31a809a027fa010c5046492ecd243))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
## v4.1.0 (2026-02-03)
|
|
37
|
+
|
|
38
|
+
### Features
|
|
39
|
+
|
|
40
|
+
- **api**: Add device state update, bulk create, and pagination
|
|
41
|
+
([`1f7bb46`](https://github.com/Djelibeybi/lifx-emulator/commit/1f7bb466ecf70cd8fd6a3e20f23ac49e00b2d709))
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
## v4.0.1 (2026-02-01)
|
|
45
|
+
|
|
46
|
+
### Bug Fixes
|
|
47
|
+
|
|
48
|
+
- **app**: Add products API, populate dashboard dropdown, remove stale TODOs
|
|
49
|
+
([`c49502a`](https://github.com/Djelibeybi/lifx-emulator/commit/c49502aa74d845b4e413761f081d06d157f27e6f))
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
## v4.0.0 (2026-02-01)
|
|
53
|
+
|
|
54
|
+
### Bug Fixes
|
|
55
|
+
|
|
56
|
+
- **app**: Pad zone_colors to zone_count with default color
|
|
57
|
+
([`46aed0a`](https://github.com/Djelibeybi/lifx-emulator/commit/46aed0a389bf2c6185fc9f07751fea3fbbf6e8d5))
|
|
58
|
+
|
|
59
|
+
- **app**: Preserve explicit empty devices/scenarios and truncate zone_colors
|
|
60
|
+
([`b5c420c`](https://github.com/Djelibeybi/lifx-emulator/commit/b5c420cb1a9bdc3cae3b6a7a373b4251828cfed5))
|
|
61
|
+
|
|
62
|
+
### Features
|
|
63
|
+
|
|
64
|
+
- **app**: Add YAML config file support for CLI
|
|
65
|
+
([`fceb9af`](https://github.com/Djelibeybi/lifx-emulator/commit/fceb9af1da6368a672cd24b58f68b2063b397c23))
|
|
66
|
+
|
|
67
|
+
### Breaking Changes
|
|
68
|
+
|
|
69
|
+
- **app**: No devices are created by default anymore.
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## v3.1.0 (2026-01-11)
|
|
73
|
+
|
|
74
|
+
### Features
|
|
75
|
+
|
|
76
|
+
- Add Python 3.10 support
|
|
77
|
+
([`c19eee5`](https://github.com/Djelibeybi/lifx-emulator/commit/c19eee5181fc3e0e3b4ef9fc3e6d47308dce7a0f))
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## v3.0.2 (2025-12-24)
|
|
81
|
+
|
|
82
|
+
### Bug Fixes
|
|
83
|
+
|
|
84
|
+
- **api**: Eliminate XSS vulnerabilities and extract dashboard JavaScript
|
|
85
|
+
([`8302a09`](https://github.com/Djelibeybi/lifx-emulator/commit/8302a0947b326e73f6c2f15de85986a464a307ad))
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
## v3.0.1 (2025-11-26)
|
|
89
|
+
|
|
90
|
+
### Bug Fixes
|
|
91
|
+
|
|
92
|
+
- Adjust uv build for new monorepo layout
|
|
93
|
+
([`a0d5b7c`](https://github.com/Djelibeybi/lifx-emulator/commit/a0d5b7c1c1ab5659acc8554931f6c441654add05))
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## v3.0.0 (2025-11-26)
|
|
97
|
+
|
|
98
|
+
### Refactoring
|
|
99
|
+
|
|
100
|
+
- Split into monorepo with separate library and CLI packages
|
|
101
|
+
([`402fe6e`](https://github.com/Djelibeybi/lifx-emulator/commit/402fe6e6c42e4fb730d076cd4dd0bfe7743b2c57))
|
|
102
|
+
|
|
103
|
+
### Breaking Changes
|
|
104
|
+
|
|
105
|
+
- The project is now split into two packages:
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
## v2.4.0 (2025-11-26)
|
|
109
|
+
|
|
110
|
+
- Initial Release
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lifx-emulator
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.2.0
|
|
4
4
|
Summary: Standalone LIFX Emulator with CLI and HTTP management API
|
|
5
5
|
Author-email: Avi Miller <me@dje.li>
|
|
6
6
|
Maintainer-email: Avi Miller <me@dje.li>
|
|
@@ -25,6 +25,7 @@ Requires-Dist: fastapi>=0.115.0
|
|
|
25
25
|
Requires-Dist: lifx-emulator-core>=2.4.0
|
|
26
26
|
Requires-Dist: rich>=14.2.0
|
|
27
27
|
Requires-Dist: uvicorn>=0.34.0
|
|
28
|
+
Requires-Dist: websockets>=16.0
|
|
28
29
|
Description-Content-Type: text/markdown
|
|
29
30
|
|
|
30
31
|
# lifx-emulator
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
node_modules
|
|
2
|
+
|
|
3
|
+
# Output
|
|
4
|
+
.output
|
|
5
|
+
.vercel
|
|
6
|
+
.netlify
|
|
7
|
+
.wrangler
|
|
8
|
+
/.svelte-kit
|
|
9
|
+
/build
|
|
10
|
+
|
|
11
|
+
# OS
|
|
12
|
+
.DS_Store
|
|
13
|
+
Thumbs.db
|
|
14
|
+
|
|
15
|
+
# Env
|
|
16
|
+
.env
|
|
17
|
+
.env.*
|
|
18
|
+
!.env.example
|
|
19
|
+
!.env.test
|
|
20
|
+
|
|
21
|
+
# Vite
|
|
22
|
+
vite.config.js.timestamp-*
|
|
23
|
+
vite.config.ts.timestamp-*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
engine-strict=true
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# sv
|
|
2
|
+
|
|
3
|
+
Everything you need to build a Svelte project, powered by [`sv`](https://github.com/sveltejs/cli).
|
|
4
|
+
|
|
5
|
+
## Creating a project
|
|
6
|
+
|
|
7
|
+
If you're seeing this, you've probably already done this step. Congrats!
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
# create a new project
|
|
11
|
+
npx sv create my-app
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
To recreate this project with the same configuration:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
# recreate this project
|
|
18
|
+
npx sv create --template minimal --types ts --no-install .
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Developing
|
|
22
|
+
|
|
23
|
+
Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
npm run dev
|
|
27
|
+
|
|
28
|
+
# or start the server and open the app in a new browser tab
|
|
29
|
+
npm run dev -- --open
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Building
|
|
33
|
+
|
|
34
|
+
To create a production version of your app:
|
|
35
|
+
|
|
36
|
+
```sh
|
|
37
|
+
npm run build
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
You can preview the production build with `npm run preview`.
|
|
41
|
+
|
|
42
|
+
> To deploy your app, you may need to install an [adapter](https://svelte.dev/docs/kit/adapters) for your target environment.
|