Releases: smarthome-go/smarthome
Releases · smarthome-go/smarthome
Smarthome v0.0.51
Changelog for v0.0.51
Scheduler GUI
- Improved the scheduler GUI significantly
- Fixed several bugs (including the real-time execution count-down)
- Added important information displays to the individual schedule panels
- ⇒ Note: The GUI is now in a working and pretty state
Automations GUI
- Improved the automations GUI
- Modified the width of each individual automation item to align well on
1080p
- Made the automation's title appear bold
Homescript GUI
- Fixed broken execution result popup
- Fixed broken argument prompts
- ⇒ Note: These bugfixes also affect the automations GUI and the Homescript manager's GUI
Homescript Editor
- Added argument prompts when running or linting using the editor's "terminal"
Homescript Backend
Arguments During Linting
- Attempt to use provided arguments when using lint
- If an argument is specified, it is used during linting
- If it is omitted, a default (empty string) is used in order to prevent errors
SigTerm Handling
- If
exec
is used, the executor'ssigTerm
is forwarded to the exec target - This means that a script termination will work as expected when using
exec
in your code
Bugfixes / Code Quality
- Fixed several typos in the HMS deletion dialog
- Improved logging in the backend automation module
Smarthome v0.0.49
Changelog for v0.0.49
Scheduler
- The scheduler web-page is now accessible under
/scheduler
- Added a switch wizard to the scheduler's target selector
- Refactored entire front- and backend to use structured data instead of just an HMS code field
Performance
- Used Vite's manual chunking for better performance
Bugfixes
- Dangling automations and schedules will now be removed on their next run
- Added a check if schedule-selection is enabled to automation and scheduler API
- Fixed many typos
Smarthome v0.0.48
Changelog for v0.0.48
Configuration Export
Most of the server's configuration can now be exported using an API endpoint.
The current API endpoint is /api/config/export
and returns JSON.
Exported settings include:
- Server configuration like
latitude
andlongitude
- Hardware nodes
- Rooms
- Room metadata
- Switches
- Cameras
- Users
- User metadata
- Homescripts
- Homescript arguments
- Automations which use Homescripts
- Reminders
- Permission settings
- Switch-permission settings
- Camera-permission settings
Better setup.json file
- The concept of the
setup.json
has been improved - The file now accepts the content of a configuration export, thus allowing Smarthome server migration via the file.
- After the file has been read, it is moved to
./data/config/setup.json.old
- A setup JSON string can be evaluated via the API (later via GUI)
Homescript
Backend (server)
- Added dummy arguments in order for lint will work event when arguments are missing
- During linting, the
getArg
function returns Go's default type values as placeholders - During linting, the
checkArg
function will always returntrue
- Fixed broken
sigTerm
function (termination now works as intended) - Refactored the HMS manager code (includes comments and variable names)
Frontend (GUI)
- Improved the HMS editor page
- improved button behavior
- decreased page title size
- added more fitting save-state indicator icon
- Improved Homescript deletion confirmation dialog
- Improved automation info dialog
- Fixed bug which causes a cron-expression to be displayed instead of the cron-description
- Refactored Svelte automation component
- Add automatic linting to HMS editor component (using Codemirror's lint-gutter)
Schedules
Backend (server)
- Refactored the internal data structure of the schedule to follow Go's guidelines
Frontend (GUI)
- Added a first working version of the scheduler GUI
- Note: The scheduler GUI is not accessible yet.
New functionality
- View schedules
- Create schedules
- Edit schedules
- Modify schedules
Automation GUI
- Improved the spacing and scaling of the automations GUI
Miscellaneous
- Refactored and cleaned most of the backend database code
- Fixed some bugs in backend database code
Smarthome v0.0.47
Changelog for v0.0.47
Homescript
- Added a global manager to the Homescript module
- The manager orchestrates the way Homescripts are executed and terminated
- As of Homescript release
v0.13.0
, sigTerm can be used to terminate a script's execution at any point in time - The API routes
/api/homescript/kill/script/{id}
and/api/homescript/kill/job/{id}
can now be used to terminate Homescript jobs. - Added a visual cancel button to the Homescript editor GUI which terminates all jobs running the currently selected script
- Added minor tweaks to the HMS editor GUI which increase stability and overall consistency
Smarthome v0.0.46
Changelog for v0.0.46
Homescript
- Fixed argument container overflow in GUI
- Fixed bug which caused the argument prompts to not open
- Added the
id
label to the switch selection in argument prompt - Fixed bug which caused the run and lint button to trigger the opposite action
Miscellaneous
- Refactored and reviewed portions of the backend code
- Removed one possibility for a server panic during startup
- Upgraded the built-in CLI to a current version
- Increased Makefile compatibility
- Updated Homescript to the newest version
Smarthome v0.0.45
Changelog for v0.0.45
Homescript GUI
- Revised the management layout so that the action buttons (delete / pick icon) seem less dominant
- Improved Homescript run result dialog display for mobile devices
- Added Edit code button to the actions which opens the HMS IDE
Homescript IDE
- Added an initial version of a web-based Homescript editor / IDE
- Code can now be edited via the web interface
- Support for immature syntax highlighting (currently using an incorrect grammar definition)
- Improved
HmsEditor.svelte
component which is used by the IDE - Split layout: the layout is separated into the text editor and the terminal / output area
- The layout's proportions are
25% | 75%
(can be swapped to75% | 25%
)
- The layout's proportions are
- Includes a small script selection menu at the top: allows easy switching between scripts
- The active script is set using
URL params
, for examplehttp://smarthome.box/homescript/editor?id=test
Smarthome v0.0.44
Changelog for v0.0.44
Homescript GUI
- Improved Homescript run result dialog display
- Fixed frontend Homescript deletion bugs
- Removed scrollbar from HMS management page
- Implemented major layout redesign
- Added placeholder text to HMS selector
- Added minute & hour value checks to argument prompts
Automations GUI
- Added has-loaded check before showing
no automations
- Fixed button label spacing
- Added placeholder text to HMS selector
Other
- Added icon to create button in rooms GUI
- Refactored
404
page - Decreased size of top segment on the login page on mobile devices
Backend
- Fixed delete-all Homescript function (used in user deletion)
Smarthome v0.0.43
Changelog for v0.0.43
Homescript GUI
- Improved Homescript arguments GUI
- Fixed various errors in Homescript frontend
- Added
Jetbrains Mono
to Homescript editor and error output - Added Homescript run result popup dialog which shows the scripts status and output
Homescript Backend
- Fixed HMS bug when linting code which includes
Get
- Added additional lint check in HMS
Http
function
Backend
- Added version route to API endpoints
Smarthome v0.0.42
Changelog for v0.0.42
Homescript GUI
- Added a better argument display
- Made the
AddArgument
dialog non-fullscreen due to uneven proportions - Introduced data-type and display selectors in the
EditArgument
dialog
Homescript
- Implemented a call stack
- Using the call stack, Homescript can now detect script recursion
- When script recursion is detected, the execution is prevented and the user is informed about this event
Example code using v0.0.41
As seen below, the script calls itself indefinitely, causing endless recursion
Input: test.hms
# Current script: test
exec('test')
Output: Server would run out of resources, database would return errors, however no complete crash
Example code using v0.0.42
As seen below, the scripts calls themselves sequentially without ending, causing endless recursion
Input: start.hms
, first.hms
, second.hms
# Current script: start
exec('first')
# Current script: first
exec('second')
# Current script: second
exec('start')
Output: Homescripts detects recursion
Error: Program terminated abnormally with exit-code 1
RuntimeError at start.hms:2:1
1 | # Write your code for `start` below
2 | exec('first')
^
3 |
Homescript terminated with exit code 1: Homescript terminated with exit code 1: Exec violation: executing 'start' could cause infinite recursion.
=== Call Stack ===
0: start (INITIAL)
1: first
2: second
3: start (PREVENTED)
Homescript terminated with exit code: 1 [0.89s]
Limitations
- The recursion detector only checks if the script to-be-executed is already present in the call stack
- Due to this, recursion is completely forbidden
- However, recursion is not meant to be used in Homescript, therefore not being a limitation
Smarthome v0.0.41
Changelog for v0.0.41
Homescript GUI
- Fixed major and minor bugs in the Homescript GUI
- Added a testing version of Homescript arguments to the Homescript overview page.
- Although the feature set of HMS arguments is still limited, current additions include:
- Overview of HMS args as a list
- Creation of HMS args
- Modification of HMS args
- Deletion of HMS args
Backend
- Added the
MDIcon
attribute to Homescript args - The icon is similar to the one implemented for Homescript(s)
- Added additional safety checks before allowing the creation of a new Homescript args
- Added additional safety checks before allowing the modifycation of Homescript args