lifx-emulator 3.1.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.
Files changed (98) hide show
  1. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/.gitignore +1 -1
  2. lifx_emulator-4.2.0/CHANGELOG.md +110 -0
  3. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/PKG-INFO +2 -1
  4. lifx_emulator-4.2.0/frontend/.gitignore +23 -0
  5. lifx_emulator-4.2.0/frontend/.npmrc +1 -0
  6. lifx_emulator-4.2.0/frontend/README.md +42 -0
  7. lifx_emulator-4.2.0/frontend/package-lock.json +1616 -0
  8. lifx_emulator-4.2.0/frontend/package.json +24 -0
  9. lifx_emulator-4.2.0/frontend/src/app.css +528 -0
  10. lifx_emulator-4.2.0/frontend/src/app.d.ts +13 -0
  11. lifx_emulator-4.2.0/frontend/src/app.html +12 -0
  12. lifx_emulator-4.2.0/frontend/src/lib/assets/favicon.svg +1 -0
  13. lifx_emulator-4.2.0/frontend/src/lib/components/ActivityLog.svelte +135 -0
  14. lifx_emulator-4.2.0/frontend/src/lib/components/AddDeviceForm.svelte +61 -0
  15. lifx_emulator-4.2.0/frontend/src/lib/components/DeviceCard.svelte +167 -0
  16. lifx_emulator-4.2.0/frontend/src/lib/components/DeviceList.svelte +128 -0
  17. lifx_emulator-4.2.0/frontend/src/lib/components/DeviceTable.svelte +346 -0
  18. lifx_emulator-4.2.0/frontend/src/lib/components/DeviceToolbar.svelte +212 -0
  19. lifx_emulator-4.2.0/frontend/src/lib/components/Header.svelte +74 -0
  20. lifx_emulator-4.2.0/frontend/src/lib/components/ScenarioPanel.svelte +589 -0
  21. lifx_emulator-4.2.0/frontend/src/lib/components/StatsBar.svelte +33 -0
  22. lifx_emulator-4.2.0/frontend/src/lib/components/index.ts +9 -0
  23. lifx_emulator-4.2.0/frontend/src/lib/index.ts +1 -0
  24. lifx_emulator-4.2.0/frontend/src/lib/stores/activity.svelte.ts +38 -0
  25. lifx_emulator-4.2.0/frontend/src/lib/stores/connection.svelte.ts +172 -0
  26. lifx_emulator-4.2.0/frontend/src/lib/stores/devices.svelte.ts +55 -0
  27. lifx_emulator-4.2.0/frontend/src/lib/stores/index.ts +7 -0
  28. lifx_emulator-4.2.0/frontend/src/lib/stores/scenarios.svelte.ts +129 -0
  29. lifx_emulator-4.2.0/frontend/src/lib/stores/stats.svelte.ts +33 -0
  30. lifx_emulator-4.2.0/frontend/src/lib/stores/theme.svelte.ts +76 -0
  31. lifx_emulator-4.2.0/frontend/src/lib/stores/ui.svelte.ts +153 -0
  32. lifx_emulator-4.2.0/frontend/src/lib/types.ts +132 -0
  33. lifx_emulator-4.2.0/frontend/src/lib/utils/api.ts +150 -0
  34. lifx_emulator-4.2.0/frontend/src/lib/utils/color.ts +71 -0
  35. lifx_emulator-4.2.0/frontend/src/routes/+layout.svelte +18 -0
  36. lifx_emulator-4.2.0/frontend/src/routes/+layout.ts +3 -0
  37. lifx_emulator-4.2.0/frontend/src/routes/+page.svelte +131 -0
  38. lifx_emulator-4.2.0/frontend/static/robots.txt +3 -0
  39. lifx_emulator-4.2.0/frontend/svelte.config.js +21 -0
  40. lifx_emulator-4.2.0/frontend/tsconfig.json +16 -0
  41. lifx_emulator-4.2.0/frontend/vite.config.ts +6 -0
  42. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/pyproject.toml +2 -1
  43. lifx_emulator-4.2.0/src/lifx_emulator_app/__main__.py +1148 -0
  44. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/__init__.py +0 -4
  45. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/app.py +122 -16
  46. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/models.py +32 -1
  47. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/__init__.py +5 -1
  48. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/devices.py +64 -10
  49. lifx_emulator-4.2.0/src/lifx_emulator_app/api/routers/products.py +42 -0
  50. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/scenarios.py +55 -52
  51. lifx_emulator-4.2.0/src/lifx_emulator_app/api/routers/websocket.py +70 -0
  52. lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/__init__.py +25 -0
  53. lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/device_service.py +386 -0
  54. lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/event_bridge.py +234 -0
  55. lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/scenario_service.py +153 -0
  56. lifx_emulator-4.2.0/src/lifx_emulator_app/api/services/websocket_manager.py +326 -0
  57. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/env.js +1 -0
  58. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/assets/0.DOQLX7EM.css +1 -0
  59. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/assets/2.CU0O2Xrb.css +1 -0
  60. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/BORyfda6.js +1 -0
  61. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/BTLkiQR5.js +1 -0
  62. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/BaoxLdOF.js +2 -0
  63. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/Binc8JbE.js +1 -0
  64. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/CDSQEL5N.js +1 -0
  65. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/DfIkQq0Y.js +1 -0
  66. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/MAGDeS2Z.js +1 -0
  67. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/N3z8axFy.js +1 -0
  68. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/chunks/yhjkpkcN.js +1 -0
  69. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/entry/app.Dhwm664s.js +2 -0
  70. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/entry/start.Nqz6UJJT.js +1 -0
  71. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/nodes/0.CPncm6RP.js +1 -0
  72. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/nodes/1.x-f3libw.js +1 -0
  73. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/immutable/nodes/2.BP5Yvqf4.js +6 -0
  74. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/_app/version.json +1 -0
  75. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/index.html +38 -0
  76. lifx_emulator-4.2.0/src/lifx_emulator_app/api/static/robots.txt +3 -0
  77. lifx_emulator-4.2.0/src/lifx_emulator_app/config.py +316 -0
  78. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/tests/test_api.py +370 -6
  79. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/tests/test_api_validation.py +106 -4
  80. lifx_emulator-4.2.0/tests/test_cli.py +2056 -0
  81. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/tests/test_cli_validation.py +15 -13
  82. lifx_emulator-4.2.0/tests/test_config.py +738 -0
  83. lifx_emulator-4.2.0/tests/test_export_config.py +661 -0
  84. lifx_emulator-4.2.0/tests/test_scenario_service.py +190 -0
  85. lifx_emulator-4.2.0/tests/test_websocket.py +444 -0
  86. lifx_emulator-3.1.0/CHANGELOG.md +0 -43
  87. lifx_emulator-3.1.0/src/lifx_emulator_app/__main__.py +0 -592
  88. lifx_emulator-3.1.0/src/lifx_emulator_app/api/services/__init__.py +0 -8
  89. lifx_emulator-3.1.0/src/lifx_emulator_app/api/services/device_service.py +0 -199
  90. lifx_emulator-3.1.0/src/lifx_emulator_app/api/static/dashboard.js +0 -588
  91. lifx_emulator-3.1.0/src/lifx_emulator_app/api/templates/dashboard.html +0 -357
  92. lifx_emulator-3.1.0/tests/test_cli.py +0 -897
  93. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/README.md +0 -0
  94. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/__init__.py +0 -0
  95. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/mappers/__init__.py +0 -0
  96. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/mappers/device_mapper.py +0 -0
  97. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/src/lifx_emulator_app/api/routers/monitoring.py +0 -0
  98. {lifx_emulator-3.1.0 → lifx_emulator-4.2.0}/tests/conftest.py +0 -0
@@ -12,7 +12,6 @@ dist/
12
12
  downloads/
13
13
  eggs/
14
14
  .eggs/
15
- lib/
16
15
  lib64/
17
16
  parts/
18
17
  sdist/
@@ -92,3 +91,4 @@ Thumbs.db
92
91
  # Local storage
93
92
  .notes/
94
93
  .claude/settings.local.json
94
+ .envrc
@@ -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: 3.1.0
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.