# Changelog All notable changes to this project will be documented in this file. ## [0.7.0-dev.1] - 2026-03-08 ### Features - [`d7b1368`](https://github.com/pufereq/template-repo/commit/d7b136851bafa2c20e1634bd5568f4bac839177f) **client_details.html**: add temporary initial telemetry display - [`7e9a9e6`](https://github.com/pufereq/template-repo/commit/7e9a9e6eede6cc926fef64c626434e65984befbc) **backend_server.py**: add `initial_telemetry` support - [`6ed03ab`](https://github.com/pufereq/template-repo/commit/6ed03ab74de8e91d13b5f1971a3f4cec890e4fef) **client.py**: add `Client.initial_telemetry` property - [`40c08d0`](https://github.com/pufereq/template-repo/commit/40c08d01693973f29f13c133a11fc5f166891a25) **initial_handler.py**: add handler for `TELEMETRY/INTIIAL` msgs ### Build - [`3d13d24`](https://github.com/pufereq/template-repo/commit/3d13d241168b011c0044eb64db4b0fe70878d748) **uv.lock**: update judas_protocol to 0.9.1 - [`28b57b6`](https://github.com/pufereq/template-repo/commit/28b57b6964bfcd6ce78f2a77822f7221f6e4f7e5) **uv.lock**: update judas_protocol to 0.9.0 ## [0.6.0] - 2026-03-05 ### Bug Fixes - [`fbb75c2`](https://github.com/pufereq/template-repo/commit/fbb75c263c13726d7e1c3fa28fb4e8f1f8cf0a17) **backend_server.py**: fix double-connection handling - [`88d3490`](https://github.com/pufereq/template-repo/commit/88d349090e6e3605800656cc3e85779bf4b417c3) **backend_server.py**: fix double disconnect if client.inbound empty - [`e308a07`](https://github.com/pufereq/template-repo/commit/e308a07dabcf20d9b080ce12a8928760dcde3057) **backend_server.py**: call `_initialize_handlers()` on init - [`ead2224`](https://github.com/pufereq/template-repo/commit/ead22240660ff9f723c36ee35fa5918c33a0c66d) **backend_server.py**: do not disconnect a client if Exception raised on msg handling - [`6446fe8`](https://github.com/pufereq/template-repo/commit/6446fe883cea4268992efc9f97cdb493af416576) **backend_server.py**: check if client to disconnect has an open socket ### Features - [`72d51b4`](https://github.com/pufereq/template-repo/commit/72d51b451fc11ebe2f38d5e50bf263f9f441b03c) **backend_server.py**: add notice to known_clients.yaml - [`0e7c948`](https://github.com/pufereq/template-repo/commit/0e7c9486683be4ceb91203109986f0b9fc83eb8b) **config/**: add `config/` directory - [`97fc17f`](https://github.com/pufereq/template-repo/commit/97fc17fbb3ed5d681a4f5a0d488b7a2b09ab35df) **hello_handler.py**: remove client from `pending_hello` if recv'd HELLO - [`f5b14fc`](https://github.com/pufereq/template-repo/commit/f5b14fc6109e83730c4b13aaecf6f4314c0136a4) **backend_server.py**: add timeout on HELLO - [`bf1ad0e`](https://github.com/pufereq/template-repo/commit/bf1ad0ead0e4fc35c20d0d747cca05388b223d35) **ack_handler.py**: add handling for ACKs - [`a9bace8`](https://github.com/pufereq/template-repo/commit/a9bace8acaab07e6e5d02155a9966c6381ad107e) **backend_server.py**: add `ACK_TIMEOUT` constant - [`c88e39c`](https://github.com/pufereq/template-repo/commit/c88e39c7355b6f8c982198e6e56da2d09d17c61f) **backend_server.py**: track message ACKs and resend if no ACK recv'd within 5 seconds - [`dafe418`](https://github.com/pufereq/template-repo/commit/dafe418916485258694949538eda151d7da33695) **backend_server.py**: add warning if received an unknown message (no handler) - [`0ed478a`](https://github.com/pufereq/template-repo/commit/0ed478a88efa46f2f28b24371ad68010ecbf88d0) **backend_server.py**: implement message handling - [`c952413`](https://github.com/pufereq/template-repo/commit/c952413d912b7a5d2000bc48c11a4d9274533caf) **hello_handler.py**: add HELLO message handler - [`882c878`](https://github.com/pufereq/template-repo/commit/882c8780e15ec827fac1854cf7419b71d9a41a4f) **base_handler.py**: add `BaseHandler` class for message handling - [`faecc38`](https://github.com/pufereq/template-repo/commit/faecc382610daf890c90074809085560931fd178) **client_status.py**: move `ClientStatus` enum to own module ### Miscellaneous Tasks - [`61be674`](https://github.com/pufereq/template-repo/commit/61be674258dcce8a5b54efddb7d1d856c6cba9bc) remove `cache/` directory - [`f46d271`](https://github.com/pufereq/template-repo/commit/f46d27164b79107abe405b221c9d424add55a723) **.gitignore**: ignore `config/known_clients.yaml` as it's generated automatically - [`f13f243`](https://github.com/pufereq/template-repo/commit/f13f243b5b389d84acaa4ab933a234a00c6a981c) **__main__.py**: set logging level for werkzeug to WARNING - [`332238b`](https://github.com/pufereq/template-repo/commit/332238b403782a08a8974b9267071f8d0ff5f006) **__init__.py**: correct version - [`e54cc47`](https://github.com/pufereq/template-repo/commit/e54cc479b5f6bb3fb887803122fea0c551e27ee2) **handler/__init__.py**: add `AckHandler` to `__all__` - [`ee38141`](https://github.com/pufereq/template-repo/commit/ee381414a931ed9d7562410e08c9de5cdc7b94e7) **backend_server.py**: remove redundant HELLO msg handling - [`ec58a52`](https://github.com/pufereq/template-repo/commit/ec58a5257a3007a6edd502eb3967d92a9b652358) **handler/__init__.py**: add module init - [`d3f68d3`](https://github.com/pufereq/template-repo/commit/d3f68d3baff8b903be125b0da7a88b415cd56bac) **backend/__init__.py**: add `Client` and `ClientStatus` to `__all__` - [`bda10a6`](https://github.com/pufereq/template-repo/commit/bda10a6248478e99dfb42d8c605996cafdaf1e6e) **cache/**: add cache/ directory ### Refactor - [`efbf99f`](https://github.com/pufereq/template-repo/commit/efbf99f356c20fbd48937f1c4e8df0a2d57f0651) **backend_server.py**: if known_clients.yaml not present, call `_save_known_clients()` - [`35899d3`](https://github.com/pufereq/template-repo/commit/35899d366823c2878330eb06dc703f2965f61c3f) **backend_server.py**: move `known_clients.yaml` to `config/` - [`3eb681e`](https://github.com/pufereq/template-repo/commit/3eb681e233fa151c2476581854c947bdc77b4900) **backend_server.py**: move loading known clients to its own method - [`fa2da20`](https://github.com/pufereq/template-repo/commit/fa2da207a9cf3d90cdbfb5977033fee21d449528) **backend_server.py**: refactor calls to Message class constructors after protocol changes ### Styling - [`62acc4b`](https://github.com/pufereq/template-repo/commit/62acc4b181cd359557909fa94f0cb0e6a4109255) **client.py**: correct property typing ### Build - [`c64a258`](https://github.com/pufereq/template-repo/commit/c64a2582439e5ef1ab68bb9c588f7c4644bb4e07) **uv.lock**: update judas_protocol to 0.8.0 - [`f41a777`](https://github.com/pufereq/template-repo/commit/f41a7774ec5cb4997005ac8e31ed7bdc3541a8d6) **uv.lock**: update judas_protocol to 0.7.0 ## [0.5.0] - 2026-02-28 ### Features - [`956da02`](https://github.com/pufereq/template-repo/commit/956da024c3bbe88d83f3ef7bfa37e380c22a04d9) **style.css**: make client list elements flexboxes - [`54eec65`](https://github.com/pufereq/template-repo/commit/54eec657a5a4822f5b1211cbc6843045165fe25d) **style.css**: use monospaced font only for heading - [`1900bf4`](https://github.com/pufereq/template-repo/commit/1900bf46cc6f103f6e9d359b9fd6af9a74d4cf4d) **client_details.html**: add basic client details - [`c5771dc`](https://github.com/pufereq/template-repo/commit/c5771dc3718b447878633b252bdd94b3e793aec9) **panel.html**: use client_details.html after clicking on client on sidebar - [`de9240e`](https://github.com/pufereq/template-repo/commit/de9240e6e0c683643df5bb9495c46cae64b0bc68) **backend_server.py**: set client status to STALE if offline for >24h - [`b1656cd`](https://github.com/pufereq/template-repo/commit/b1656cdfa95673bb19605d9358cb3c98a69f15d2) **client.py**: redo ClientStatuses adding PENDING and STALE - [`563de5a`](https://github.com/pufereq/template-repo/commit/563de5aa199a64946d9f41b84c6e2803aff45714) **backend_server.py**: add known_clients.yaml file for storing clients between server restarts - [`6971548`](https://github.com/pufereq/template-repo/commit/6971548589f098f850896ee49e833c7c1bce5efc) **web_server.py**: use client_details blueprint - [`31c5157`](https://github.com/pufereq/template-repo/commit/31c51574f7a2b92a959ddf9ae4c8cbf336494725) **client_details.py**: add client_details route - [`b652db9`](https://github.com/pufereq/template-repo/commit/b652db930f9a299c467b52acb22420e7ca280fb7) **style.css**: style no-connection-icon and client list - [`1dfddd2`](https://github.com/pufereq/template-repo/commit/1dfddd2fc7f4436010ddad31f50355073c8e4abb) **panel.html**: add a side panel client list - [`d20ff9b`](https://github.com/pufereq/template-repo/commit/d20ff9be6eeb9e283304ca6d60a4635a2f9b0ab6) **panel.html**: add a no connection icon to header - [`2bbe118`](https://github.com/pufereq/template-repo/commit/2bbe118de6290b1e014aa9c1a6f5f9d5b134d2e0) rename `details.html` -> `client_details.html` - [`29b4f3a`](https://github.com/pufereq/template-repo/commit/29b4f3a2ff34493d245eb0eb144dd52b0cc9b134) **css/style.css**: add `.button:active` color - [`69bf4f1`](https://github.com/pufereq/template-repo/commit/69bf4f13585f06c561c0746966bf95762c188bd0) **css/style.css**: add #content styling, make `main`'s flex column to fit `aside` - [`563dc62`](https://github.com/pufereq/template-repo/commit/563dc626246f379f1179179faa36d13b019b6a4e) **css/style.css**: include flaticon icons - [`bb229dc`](https://github.com/pufereq/template-repo/commit/bb229dc724ef9cec4c147c6c3d9f67b28eb700ce) **css/style.css**: make UI more compact - [`3077a98`](https://github.com/pufereq/template-repo/commit/3077a98d6fe7f34219c861120bc217929dc919d9) **backend_server.py**: add `send_close()` method ### Miscellaneous Tasks - [`7f904fd`](https://github.com/pufereq/template-repo/commit/7f904fdcd50ac114cc584d7438675d5490b61bcd) **uv.lock**: add pyyaml to depedencies - [`f11b442`](https://github.com/pufereq/template-repo/commit/f11b442eced4781ee3be0102bd8ea0614bc378c4) **style.css**: style no connection message correctly - [`72a7433`](https://github.com/pufereq/template-repo/commit/72a74334e74f1a1a73d2ae11dd08e72a8a98b094) **pyproject.toml**: add pyyaml to depedencies - [`5ca5d9f`](https://github.com/pufereq/template-repo/commit/5ca5d9fcf4e8095b93cac1d72877769064895189) **.vscode/launch.json**: set cwd to workspace folder - [`0580a6b`](https://github.com/pufereq/template-repo/commit/0580a6be5390eb08a13eec0ce7c41219b1dca21a) **css/style.css**: remove transition from button hover bg color - [`97221bc`](https://github.com/pufereq/template-repo/commit/97221bc1b71112ac54168138bf5adc10acb920b5) **uv.lock**: update depedencies for Python 3.14 ### Refactor - [`a5e1ba8`](https://github.com/pufereq/template-repo/commit/a5e1ba88aeb06d337587e9dfd0a46520ef6c8d95) adapt for client.id - [`1e38be5`](https://github.com/pufereq/template-repo/commit/1e38be5ec5d55a30fd715a650ea7402b9fb4c546) **backend_server.py**: adapt client's `id` after refactor - [`b265feb`](https://github.com/pufereq/template-repo/commit/b265feba7a79ecd418bf8849a68a0633ae7d4778) **client.py**: rename `Client.mac_id` -> `Client.id` - [`840d9ce`](https://github.com/pufereq/template-repo/commit/840d9ce3c1838a3d88264fe895f933aea6c8cb4f) **login.html**: move elements from `main` to `#content` - [`9971981`](https://github.com/pufereq/template-repo/commit/9971981f666d4099132235fe0ecfb8e679745d95) **index.html**: move elements from `main` to `#content` - [`5510e9d`](https://github.com/pufereq/template-repo/commit/5510e9dd0874a1e3448a96eb8b8472b5599458a1) **backend_server.py**: rewrite `_handle_connection()` to minimize indents - [`1e02da1`](https://github.com/pufereq/template-repo/commit/1e02da185111f0e05651df0bf5c1df735f7dc6ff) **backend_server.py**: rename `_send_ack()` -> `send_ack()` ### Styling - [`f54d974`](https://github.com/pufereq/template-repo/commit/f54d974745c7a0f5d8db619d86d585709649b8ec) **style.css**: remove commented-out code ### Build - [`f01eaec`](https://github.com/pufereq/template-repo/commit/f01eaecba346715dd0c50eb4b253656df5c89ad8) **uv.lock**: update judas_protocol to 0.6.0 ## [0.4.0] - 2025-11-30 ### Bug Fixes - [`115deaa`](https://github.com/pufereq/template-repo/commit/115deaab4b0aaa9f0d3577be56e64fa3bb03f76b) **backend_server.py**: use unused `packet_size` argument to `_receive_inbound()` - [`cc6b650`](https://github.com/pufereq/template-repo/commit/cc6b650f5cd1f3889c251fbe7b36c681be48b2a0) **backend_server.py**: import Any from typing - [`5024862`](https://github.com/pufereq/template-repo/commit/50248621650590c17fcf96c0cec9618a2b0dd07c) **backend_server.py**: add 1ms sleep to prevent 100% CPU usage in `_loop()` - [`f0eeeb7`](https://github.com/pufereq/template-repo/commit/f0eeeb79a188548c3f306f4bc875bacc6fd89588) **backend_server.py**: handle unregister exceptions ### Features - [`6f5fa33`](https://github.com/pufereq/template-repo/commit/6f5fa33a122e9ebdf9df91628be67721cfc031e3) **backend_server.py**: handle all other client Exceptions in `_handle_connection()` ### Refactor - [`8d2b8f9`](https://github.com/pufereq/template-repo/commit/8d2b8f9519bb809df45ba79ea53f12775c3097d4) **backend_server.py**: change log levels - [`faf1f4e`](https://github.com/pufereq/template-repo/commit/faf1f4eeee341f5f8d234dc7d93ae5c86e276217) **backend_server.py**: remove unused argument in `BackendServer._send_outbound()` - [`61a607c`](https://github.com/pufereq/template-repo/commit/61a607c20e205c18e60a9b26f6fb3c37a47d6a55) wip ### Styling - [`f365139`](https://github.com/pufereq/template-repo/commit/f365139e9f064de309f655296b99868833ba7dce) **backend_server.py**: ignore type error in `_handle_connection()` ### Build - [`fe7d78c`](https://github.com/pufereq/template-repo/commit/fe7d78c1c8cd1d0e13276ce82549ee97b896aff0) **uv.lock**: update judas_protocol to 0.5.0 - [`cee3025`](https://github.com/pufereq/template-repo/commit/cee30251ddb87b1f3ca84d0f3c8cf40fb37debcc) **uv.lock**: update judas_protocol to 0.4.3 - [`721ab87`](https://github.com/pufereq/template-repo/commit/721ab87e7156045703f55ecefc6ed3e15ffa36aa) **uv.lock**: update judas_protocol to 0.3.0 - [`1211ca2`](https://github.com/pufereq/template-repo/commit/1211ca20294dcc3907dbadfee4b294cf7e24a8f9) **uv.lock**: update judas_protocol to 0.2.0 ## [0.3.0] - 2025-09-19 ### Bug Fixes - [`b68c755`](https://github.com/pufereq/template-repo/commit/b68c755c450c7b13f95b335fc93810847306708c) **backend_server.py**: send ack on connect - [`2922123`](https://github.com/pufereq/template-repo/commit/2922123a7050a9438b024067ebad2901adb84fe3) **backend/__init__.py**: fix backend_server import - [`c0cacfa`](https://github.com/pufereq/template-repo/commit/c0cacfad2d13799d3472a5d033ae15fd668401f9) **backend_server.py**: fix server waiting for closed socket to dissapear by reusing it in `__init__()` ### Documentation - [`b9a7c2b`](https://github.com/pufereq/template-repo/commit/b9a7c2bdaf4be8dcea4c6f3196a6092f76eac183) **backend_server.py**: add TODO in `_handle_connection()` ### Features - [`df0b19d`](https://github.com/pufereq/template-repo/commit/df0b19d94361f63d7ae3def51e3f9360242755b7) **routes/api.py**: support mulitple clients correctly - [`f2b4811`](https://github.com/pufereq/template-repo/commit/f2b4811145a0a45b2a866aefb095f833c8cb50ae) **backend_server.py**: add `BackendServer._send_ack()` helper method - [`d5985cf`](https://github.com/pufereq/template-repo/commit/d5985cf5945a304505546ef733631bc33d004621) **__main__.py**: display ascii judas splash screen on launch - [`b9fd84d`](https://github.com/pufereq/template-repo/commit/b9fd84d08f24bb21e51b48b529f62bfe2671c895) **gaga.py**: add Lady Gaga's Born This Way album art ASCII - [`c0ad91b`](https://github.com/pufereq/template-repo/commit/c0ad91b22f0e011da1021ead1c126a94aaf90f44) **backend_server.py**: re-add the `get_client_data()` method - [`2ecd32d`](https://github.com/pufereq/template-repo/commit/2ecd32decce95e6aec74433ef3255bc4cf3c3988) **client.py**: add `Client` class - [`1c96390`](https://github.com/pufereq/template-repo/commit/1c96390f3cade804b2667bb69bec4419703a6d56) **backend_server.py**: add error handling for HELLO message handler in `_accept_connection()` - [`639e1f7`](https://github.com/pufereq/template-repo/commit/639e1f73a07286bce1a1ef227d216a722e3fa214) **server.py**: add socket-based communication ### Miscellaneous Tasks - [`54512d8`](https://github.com/pufereq/template-repo/commit/54512d8393a32f59a9aaddf5a52cb18ee9986fdf) **routes/api.py**: adapt `emit_polled_data()` for `Client` class - [`ac66ce1`](https://github.com/pufereq/template-repo/commit/ac66ce19998a4518a346b6608645486121cd2123) **backend_server.py**: set `Client.last_seen` on message receive ### Refactor - [`0d074ad`](https://github.com/pufereq/template-repo/commit/0d074adc0d441428baac6858ff57717f3164cf6a) **backend_server.py**: use `_send_ack()` in `_handle_connection()` - [`ac77992`](https://github.com/pufereq/template-repo/commit/ac7799213cba82dbb189919873130647d7c87a78) **__main__.py**: provide `host` and `port` args to `BackendServer` explicitly - [`b5670e5`](https://github.com/pufereq/template-repo/commit/b5670e5d2cf08a031b99478de57aa53cba78bd5b) **server.py**: rename `server.py` to `backend_server.py` for clarity ### Styling - [`6bbb152`](https://github.com/pufereq/template-repo/commit/6bbb152ae1b1178aa77cf54c6e0f544a0fed66ef) **panel.py**: order imports - [`b14541e`](https://github.com/pufereq/template-repo/commit/b14541ea8302679091b519e3b6f630fabc0ce476) **index.py**: order imports - [`7d36e6e`](https://github.com/pufereq/template-repo/commit/7d36e6e43132a687d0494f14f36d9b4dc357abaf) **auth.py**: order imports - [`98c49b1`](https://github.com/pufereq/template-repo/commit/98c49b1d0d9bb7653a12c7558b5e6daf62a7762b) **api.py**: order imports - [`377a846`](https://github.com/pufereq/template-repo/commit/377a846c5982be129724a84b4b77a6fb69fd03df) **client.py**: order imports - [`a27b5b1`](https://github.com/pufereq/template-repo/commit/a27b5b1275fadfb2049fa5e5c535b6667ae37ab5) **backend_server.py**: order imports - [`19aa80a`](https://github.com/pufereq/template-repo/commit/19aa80a08ebe65685209678b5daf061ffbf19840) **__main__.py**: order imports - [`f7f6f19`](https://github.com/pufereq/template-repo/commit/f7f6f19808b19ae95bc361d00123a13c4afd344d) **__main__.py**: organize imports - [`cafef5e`](https://github.com/pufereq/template-repo/commit/cafef5ed932ea5456260398b44e42d71702a386a) **backend_server.py**: remove unused imports ### Build - [`66db11c`](https://github.com/pufereq/template-repo/commit/66db11c40b34d5315eda2a7dc19cd8ae428ae862) add ruff lint depedency - [`d96fec0`](https://github.com/pufereq/template-repo/commit/d96fec0222bbf707bc1aa48a6d215dbfec93f159) **web_server.py**: order imports - [`a1b28fa`](https://github.com/pufereq/template-repo/commit/a1b28faa9ff30ddf9da4e882c0bbac27f4863480) add isort as lint depedency - [`4e16a70`](https://github.com/pufereq/template-repo/commit/4e16a70174a4492ec59a2ff356deddd758e3e6e1) **uv.lock**: add depedency on judas_protocol - [`4aa2ca4`](https://github.com/pufereq/template-repo/commit/4aa2ca426c2ae3ac29724f70aa9a07e7eb5a723b) **pyproject.toml**: add depedency on judas_protocol ## [0.2.0] - 2025-08-26 ### Bug Fixes - [`1fa3550`](https://github.com/pufereq/template-repo/commit/1fa355089df36404fc5128620674f8a535e6d2c5) **panel.py**: fix panel route to be at `/panel` instead of `/panel/` - [`d8405fa`](https://github.com/pufereq/template-repo/commit/d8405fa36376a29b1f5ae99f571f2adc8a6cc978) **server.py**: fix placeholder naming to be consistent - [`8ad55ee`](https://github.com/pufereq/template-repo/commit/8ad55eed10dcc7d2fb849f3643dc805903f560a7) **__main__.py**: fix wrong import path - [`23a53f7`](https://github.com/pufereq/template-repo/commit/23a53f79a073d4c88756a347312340f59d31b0da) **web_server.py**: fix server error when using /stream ### Features - [`9f74246`](https://github.com/pufereq/template-repo/commit/9f74246157717216b7687b0ca5cb453fba60405e) **web_server.py**: use socketio - [`84ce509`](https://github.com/pufereq/template-repo/commit/84ce50963b7811c45e0c7fe94a1e66d71da70060) **routes/api.py**: add API route - [`dbb464e`](https://github.com/pufereq/template-repo/commit/dbb464e41ccac68854a30084122aaa7659272081) **__main__.py**: call `BackendServer.run()` - [`b8f5fdc`](https://github.com/pufereq/template-repo/commit/b8f5fdc794fe831386fb74e5ecb872f9ea118ec2) **server.py**: create a thread for _poll_loop - [`a494b60`](https://github.com/pufereq/template-repo/commit/a494b606a5bf796685b1c0757c69d63d62e5e8a2) **web_server.py**: add `WEB_SERVER` and `BACKEND` app.configs - [`4285da4`](https://github.com/pufereq/template-repo/commit/4285da4fa8be01e29041ec31bdf451d90f3e9825) **web_server.py**: add BackendServer reference to webserver - [`14450ba`](https://github.com/pufereq/template-repo/commit/14450ba70df1b6d7effeb66407db2a4f03846404) **__main__.py**: init BackendServer in __main__ - [`2964ac7`](https://github.com/pufereq/template-repo/commit/2964ac76442425ab0078366cbe0f4162bab87638) **backend/server.py**: add placeholder backend - [`38da1f4`](https://github.com/pufereq/template-repo/commit/38da1f476e3509d8c57b1c0a298e21bc1536c6d4) **templates/login.html**: autofocus password field - [`d91f135`](https://github.com/pufereq/template-repo/commit/d91f135d5361ab91c55c43303e4eb2ae8e688ea2) **user.py**: add user management - [`c1e20e5`](https://github.com/pufereq/template-repo/commit/c1e20e55245fa199d494453c9adf59addd232b86) **routes/__init__.py**: add __init__.py - [`d56256f`](https://github.com/pufereq/template-repo/commit/d56256f6816b6f0043791bcb288264554cd68cf0) **routes/panel.py**: add panel.py route blueprint - [`bbaffb3`](https://github.com/pufereq/template-repo/commit/bbaffb344fe0d519d2c535dc61902514acb3db9a) **routes/auth.py**: add auth.py route blueprint - [`50be48d`](https://github.com/pufereq/template-repo/commit/50be48dba4e895a73b09c9af32fa27268df7561a) **routes/index.py**: add index.py route blueprint - [`44df495`](https://github.com/pufereq/template-repo/commit/44df49509691505d9ec749395bc330a23e72fd38) **palette.css**: add catppuccin color palette - [`8dbbea3`](https://github.com/pufereq/template-repo/commit/8dbbea3f56894753edcf7acdd0961634fcac8732) **__main__.py**: add __main__.py ### Miscellaneous Tasks - [`89b6c1e`](https://github.com/pufereq/template-repo/commit/89b6c1ee835f7bf7cc8511683a0637f893daec25) **release.yaml**: update with latest pufereq/python-template release.yaml - [`860ce5c`](https://github.com/pufereq/template-repo/commit/860ce5c836ec459b6ae70adf5583d9f5b6f8858f) **panel.py**: remove unnecesarry imports - [`c628498`](https://github.com/pufereq/template-repo/commit/c628498637ab2a3d3554ee1e80a9872ecfd0d5e0) **__main__.py**: change log format - [`90094e9`](https://github.com/pufereq/template-repo/commit/90094e9c4380c9f516e1134b75f13fac775d9cd0) **web_server.py**: remove LoginManager from `self.app.config` - [`5a4b5dd`](https://github.com/pufereq/template-repo/commit/5a4b5ddd82bce3de8198dd2955c71edf5625d131) **backend/__init__.py**: add BackendServer to __all__ - [`1d00d5f`](https://github.com/pufereq/template-repo/commit/1d00d5f4f5cecb5c7e6b65347a29b3bfdfa48ddd) **routes/auth.py**: make login fail message more ambigiuous - [`a3e9aed`](https://github.com/pufereq/template-repo/commit/a3e9aed6f4caecf2b6c707ae5b87f395e788ccc3) **web_server.py**: add `web server` to initial loggin to avoid confusion - [`a32df2f`](https://github.com/pufereq/template-repo/commit/a32df2fd67a038b7bf147e83cbcca96498b89d58) **templates/stream.html**: remove stream.html template - [`1901441`](https://github.com/pufereq/template-repo/commit/190144194887865716977acc51971323ab0e0bdf) **py.typed**: add py.typed - [`f8f74cc`](https://github.com/pufereq/template-repo/commit/f8f74ccd4b27c9dc85c58b76d2328e9e7a288403) **routes/__init__.py**: add __init__.py - [`89dd67b`](https://github.com/pufereq/template-repo/commit/89dd67b4897cfda2af9387d0f3bd6cdaa531d85e) **backend/__init__.py**: add __init__.py - [`dbc61ac`](https://github.com/pufereq/template-repo/commit/dbc61ac6b73e821ba3ba6987bda68d8b84089aec) **web/__init__.py**: add web/__init__.py ### Refactor - [`e6cc1d9`](https://github.com/pufereq/template-repo/commit/e6cc1d901e2eaaef2c65e9cf02ee4c6b1fd2d425) **panel.html**: rewrite panel.html template - [`9e71270`](https://github.com/pufereq/template-repo/commit/9e71270e41aaa4e241e82d1688a29d1a9823fed4) **panel.py**: remove unnecesarry args to `render_template` - [`1140052`](https://github.com/pufereq/template-repo/commit/11400520c984bb6efb85f3a6ed8acfd2a5cfe177) **server.py**: fix method naming and add logging - [`77b6bd0`](https://github.com/pufereq/template-repo/commit/77b6bd07327cfe9750b18bcc7fcdb980b127ab27) **web_server.py**: rewrite to use OOP - [`8b418a7`](https://github.com/pufereq/template-repo/commit/8b418a7d52c0a32d967da735bc6c519cf2808804) **templates/panel.html**: adapt urls for blueprints - [`3e1fe9f`](https://github.com/pufereq/template-repo/commit/3e1fe9fa1e53a0376b2073fd208470bfb57ea1b0) **templates/login.html**: adapt urls for blueprints - [`bd9d95b`](https://github.com/pufereq/template-repo/commit/bd9d95b741e1bc032d0fa7c816f802ce678b5645) **templates/index.html**: adapt urls for blueprints - [`4baf29e`](https://github.com/pufereq/template-repo/commit/4baf29eb4afba7cf2cfab4e0ab5853d0c94c6ed1) **templates/details.html**: adapt urls for blueprints - [`fc5dc23`](https://github.com/pufereq/template-repo/commit/fc5dc23c0e222db257f7fb55d0b878db5c3a255d) **style.css**: use new palette - [`e575e8a`](https://github.com/pufereq/template-repo/commit/e575e8a15dd36616ac0d722e13e90a2df59af8b1) **.vscode/launch.json**: use __main__.py for running web server ### Styling - [`3bcffaa`](https://github.com/pufereq/template-repo/commit/3bcffaafab8ed9bd2f5cf0380d560ea1dc70616b) **style.css**: format w/ prettier - [`055ab10`](https://github.com/pufereq/template-repo/commit/055ab10ab702094c8a07f8e5317098e0f95eaffa) **__main__.py**: add typing - [`9949179`](https://github.com/pufereq/template-repo/commit/99491799970e28ec488dee0f9958ea885d5b7383) **login.html**: format - [`6a07272`](https://github.com/pufereq/template-repo/commit/6a072724f293e52d0d9eaef5ca70b92be05c115b) **index.html**: format - [`b79f3f3`](https://github.com/pufereq/template-repo/commit/b79f3f3387b15726a2b42fb17f2355fdb97a4a4a) **details.html**: format with prettier - [`5fb6920`](https://github.com/pufereq/template-repo/commit/5fb69204361379dab44c426c61a170baa1364280) **.vscode/settings.json**: fix indentation - [`c2e1984`](https://github.com/pufereq/template-repo/commit/c2e198495930f667eb8d777299dfcf2e83f88301) **web_server.py**: fix typing errors ### Build - [`786c43a`](https://github.com/pufereq/template-repo/commit/786c43ae06f0550d589e74c94b14cd1a9b1136c6) **uv.lock**: add `flask-socketio` depedency - [`309efe0`](https://github.com/pufereq/template-repo/commit/309efe074b24d9964dd7d2b767e85d533d526006) **pyproject.toml**: add `flask-socketio` depedency - [`6bed7da`](https://github.com/pufereq/template-repo/commit/6bed7da165f3c361d938d52ba94b3e2e15894d76) **pyproject.toml**: use basic type checking to kinda supress flask_login's nonexistent typing ## [0.1.1] - 2025-08-09 ### Miscellaneous Tasks - [`8b6bf1e`](https://github.com/pufereq/template-repo/commit/8b6bf1e91366d76ee3203b508b895e4b75d7f845) **.vscode/launch.json**: use shell instead of debugpy for running flask ## [0.1.0] - 2025-08-09 ### Bug Fixes - [`947adda`](https://github.com/pufereq/template-repo/commit/947adda4dac96dba545b795fbb71038642c8fe9a) **style.css**: fix text color on hover ### Documentation - [`c6e9df1`](https://github.com/pufereq/template-repo/commit/c6e9df1f075ed8b997dd9034afcf6e3e281c48a3) **CODE_OF_CONDUCT.md**: add CoC ### Features - [`f3c8449`](https://github.com/pufereq/template-repo/commit/f3c844929e585cff746e45077f5e4a77474b2722) **web_server.py**: remove redirect when logged in and trying to access `/` - [`c41f954`](https://github.com/pufereq/template-repo/commit/c41f95497cc84b03350579bd6dd692734b9f7f89) **index.html**: add go to panel button if logged in - [`8243ce2`](https://github.com/pufereq/template-repo/commit/8243ce22531cd3e80a8e71b0b120f36169d4e391) **style.css**: add button container class - [`9847979`](https://github.com/pufereq/template-repo/commit/9847979f43c779af107193128133dae4b3e94070) **style.css**: add link class - [`c0eb4e0`](https://github.com/pufereq/template-repo/commit/c0eb4e0a6dc2bb1d31c73ded8d90d3a110d18427) **style.css**: style details table - [`ec6ed47`](https://github.com/pufereq/template-repo/commit/ec6ed477b9053007c23597518e8d1eb6adddf1aa) **login.html**: display error if provided - [`95e40a4`](https://github.com/pufereq/template-repo/commit/95e40a412887493477035faa7e17b3cd5a5e7e39) **style.css**: add error container class - [`d998b85`](https://github.com/pufereq/template-repo/commit/d998b85f9f103c472dc27eb6dc95614dcdcd8e4a) **style.css**: make all links pretty - [`c0f51cb`](https://github.com/pufereq/template-repo/commit/c0f51cbaaf56ec931b5a577effd8190eb0d0cf04) **style.css**: add nord colors as variables for easy use - [`6872348`](https://github.com/pufereq/template-repo/commit/6872348375270906d39b7154b2571baa504575e2) **panel.html**: change bg color based on status - [`7c98d16`](https://github.com/pufereq/template-repo/commit/7c98d16cc2391c0ab22a9727887fa66d29b19b20) **panel.html**: add description and classes to table - [`3709a42`](https://github.com/pufereq/template-repo/commit/3709a42e6416632daa9194d0346bbd7106686660) **style.css**: style panel table - [`7b09a72`](https://github.com/pufereq/template-repo/commit/7b09a72d5cafc783e70d6f407627a2273a6b2c33) **style.css**: replace colors with var values - [`5031799`](https://github.com/pufereq/template-repo/commit/503179907249ab8c50ed35d7f5181f7cbc24ef53) **login.html**: add basic login page - [`6ec1af2`](https://github.com/pufereq/template-repo/commit/6ec1af2cf773bcd8bf9b3e64d639bc839c1b2802) **index.html**: add pretty typewriter effect to header on main - [`ff911bc`](https://github.com/pufereq/template-repo/commit/ff911bc8bc3427262af8872efb96232c1ece5595) **index.html**: add welcome text and a disclaimer - [`446e5fb`](https://github.com/pufereq/template-repo/commit/446e5fbc04ad9f7303e2327e859dd6be992d3d5b) **index.html**: add link to homepage to app name in header - [`368769e`](https://github.com/pufereq/template-repo/commit/368769e1a7a5c12bcf9130245fba4b3e4d9b28e5) **stream.html**: add stream page template - [`6ba91e5`](https://github.com/pufereq/template-repo/commit/6ba91e5ba6ad4aa2993abafb84677ac8ec689217) **panel.html**: add panel page template - [`b125a30`](https://github.com/pufereq/template-repo/commit/b125a3008f8871a8f6dbe2c3fad8ca883aea7a12) **index.html**: add index page template - [`e4620c8`](https://github.com/pufereq/template-repo/commit/e4620c81b2cbbedeb5decb192995494562a36f09) **details.html**: add details page template - [`1b39dce`](https://github.com/pufereq/template-repo/commit/1b39dce6986e62ea7be5424f1656772b70fcc620) **style.css**: add stylesheet - [`9edae70`](https://github.com/pufereq/template-repo/commit/9edae70618fae15d3ba138c09427c069cddb1465) **web_server.py**: add web_server.py ### Miscellaneous Tasks - [`b4b0e91`](https://github.com/pufereq/template-repo/commit/b4b0e9145075d30e3c06258756541ffac5de4766) **release.yaml**: add release workflow - [`a5c1490`](https://github.com/pufereq/template-repo/commit/a5c1490aca2328999b1c675320eec95052b0242e) **.gitignore**: expand gitignore - [`816582f`](https://github.com/pufereq/template-repo/commit/816582f61a551dbc2efdfabb7bfdba711f5743cb) **.vscode/launch.json**: fix formatting errors - [`8459eb8`](https://github.com/pufereq/template-repo/commit/8459eb836f040305612cafbb977ad803fc7db181) **.vscode/settings.json**: set type checking mode to standard - [`2fc702a`](https://github.com/pufereq/template-repo/commit/2fc702a482380bd56ffc6c3a0769fca06569aebd) **index.html**: add class link to login element - [`8c99a28`](https://github.com/pufereq/template-repo/commit/8c99a28a8528e21928cc7d8535c5119d08535fb4) **.vscode/launch.json**: run flask on 0.0.0.0 - [`06ea024`](https://github.com/pufereq/template-repo/commit/06ea0246f51742060ce4051d609dbce7d716fdf8) **web_server.py**: add more pc placeholders - [`2786f39`](https://github.com/pufereq/template-repo/commit/2786f39b9baf850a8438fb483a0346b8cd1ad1b7) **.vscode/launch.json**: add launch task for flask app - [`1ab8bb8`](https://github.com/pufereq/template-repo/commit/1ab8bb866d6bec2787f76443b76e84a2a7865398) **.vscode/settings.json**: add auto-import completion settings - [`324c404`](https://github.com/pufereq/template-repo/commit/324c4046f7f0c9ceab6b839be754abf8ac198130) initial commit ### Refactor - [`40d0edd`](https://github.com/pufereq/template-repo/commit/40d0edd5071f1562a3a980ac4801124ff072e877) move `judas_server/` into `src/judas_server/` - [`26352ca`](https://github.com/pufereq/template-repo/commit/26352ca54c763a83a6dde3ca49b5479e145c8380) **index.html**: make logout a button - [`ea0f5f9`](https://github.com/pufereq/template-repo/commit/ea0f5f9a834eaed2f0b530fc83e2ce80f7406e3d) **details.html**: shorten heading text - [`6979fe1`](https://github.com/pufereq/template-repo/commit/6979fe17e7f252a5168e9e53ec4fd085d488eaac) **style.css**: replace hex with var value - [`fe82dad`](https://github.com/pufereq/template-repo/commit/fe82dad557773a3dd29871863c81dbbd634cbd1f) **details.html**: change table and layout of buttons - [`7c7e762`](https://github.com/pufereq/template-repo/commit/7c7e762f0041f7eb28768dd934e14e0ea345d21b) **panel.html**: remove breaking line - [`e07a379`](https://github.com/pufereq/template-repo/commit/e07a379036649903bad2f92acfd47b9e2dee2c4c) **web_server.py**: display pretty error if password incorrect - [`960a7dd`](https://github.com/pufereq/template-repo/commit/960a7dd4bf936ad58c29b013c2b5a7673f13945e) **index.html**: put elements in main into divs to not screw up layout - [`1f0fcc7`](https://github.com/pufereq/template-repo/commit/1f0fcc71c91d70973233adf293a3bf4a2b7b41b4) **style.css**: make main a flex container - [`cde27d3`](https://github.com/pufereq/template-repo/commit/cde27d37e3319ccc6b370f0628c96437a42ace69) **web_server.py**: make status lowercase - [`feb7a71`](https://github.com/pufereq/template-repo/commit/feb7a7181626cf58586c27ea198ae0ac5f7e03f3) **web_server.py**: redirect from `/` to `/panel` if logged in - [`e15f02b`](https://github.com/pufereq/template-repo/commit/e15f02be05f4c22672ea0f61df7f57ceabd96907) **web_server.py**: render login.html instead of bare form in `/login` - [`26fac14`](https://github.com/pufereq/template-repo/commit/26fac14802df69884cc0329ffa06aa10faffebd3) **stream.html**: make logout button pretty and fix name in header - [`75694f9`](https://github.com/pufereq/template-repo/commit/75694f920073d283bed137989f6b56a4b23ff9f7) **details.html**: make logout button pretty and fix name in header - [`522c147`](https://github.com/pufereq/template-repo/commit/522c14793aa26cb6e6a8e272dfa514c247c65518) **panel.html**: make logout button pretty and fix name in header - [`04c46f1`](https://github.com/pufereq/template-repo/commit/04c46f1e982f5dd14e91972dbcb54039bc0b1286) **style.css**: add barebones stylesheet ### Styling - [`5c4441a`](https://github.com/pufereq/template-repo/commit/5c4441a35f136c0c56120a8397de209d8067d25f) **style.css**: remove empty line - [`f3f521e`](https://github.com/pufereq/template-repo/commit/f3f521efe241635c3995680cf579ba95798a13a1) **web_server.py**: fix type in `index()` - [`9a074f1`](https://github.com/pufereq/template-repo/commit/9a074f17d87986d69d8f8a0b7367a436aa59be1c) **index.html**: add newline at end of file ### Build - [`de463b8`](https://github.com/pufereq/template-repo/commit/de463b8c713c87c1d37a19976fcb7432f0021401) **pyproject.toml**: make pyproject.toml compatible with uv - [`30d9434`](https://github.com/pufereq/template-repo/commit/30d94348d7cdba23efe76303d42e39064cd2eefb) **cliff.toml**: add git-cliff config - [`8968d7e`](https://github.com/pufereq/template-repo/commit/8968d7ec081df328a02a0dc3d4cf7643b19accf2) **pdm.lock**: remove pdm lockfile - [`ad479fe`](https://github.com/pufereq/template-repo/commit/ad479fe0d7ab87edf37101d1234d5ba26f22b585) **pyproject.toml**: rename `start` script to `web` - [`04d4e97`](https://github.com/pufereq/template-repo/commit/04d4e97f626fe3ddbbed1ab6586da40a439567ab) **pyproject.toml**: add flask start script - [`9acc788`](https://github.com/pufereq/template-repo/commit/9acc788b34181c448ed08b2903bb97d14cf00e66) **pdm.lock**: add pdm lockfile - [`7de428c`](https://github.com/pufereq/template-repo/commit/7de428c4757fcecfa1a6a2582ce042324433a67f) **pyproject.toml**: add flask and flask-login