This release was focused on several changes to improve the application's overall UX. The major changes applied are: - JSON API Added to Replace Mepolang DSL - Cancellable & Non-blocking shellpipe_sync (thanks to: Nguyễn Gia Phong) - GeoJSON Import & Mobroute GTFS Routing Support - Codebase Updated to Build Against Zig 0.13.0 (thanks to: lauren n. liberda) - Misc QA & Usability Updates ---- 1. JSON API Added to Replace Mepolang DSL The former 'Mepolang' DSL has been replaced by a standard JSON API. This was motivated largely by long-term maintainability concerns and user feedback. One of the major pieces of feedback I've received about Mepo over time is that the DSL aspect was both difficult to understand and work with. The new JSON API has the same functionality as the old Mepolang DSL in that it is just a simple way for you to configure the application (via ~/.config/mepo/config.json) & pass arbitrary commands to mepo at runtime in scripts. However the new JSON API both in configuration and scripting should be much easier to work with (being standard JSON and no special DSL syntax to learn). All commands and arguments for the JSON API (formerly Mepolang) have stayed the same for the most part and this is largely just a syntax / usability update. In the former Mepolang DSL syntax you would write: prefset_n lat 33.33; And now rather, in the new JSON API syntax you write: [{ "cmd": "prefset_n", "args": {"pref": "lat", "value": 33.33} }] More details are available at the new JSON API doc at: - https://mepo.lrdu.org/jsonapi.html 2. Cancellable & Non-blocking shellpipe_sync (thanks to: Nguyễn Gia Phong) Nguyễn Gia Phong (~cnx) has graciously taken care of the longstanding ticket for #65 concerning the fact formerly the entire UI would freeze up upon launching a command or script via shellpipe_sync. The former model has been updated in that shellpipe_sync scripts now don't interrupt / freeze the SDL loop itself and are asynchronously launched. Further and importantly external shellpipe_sync scripts are now cancellable via a UI button. Upon launching a script the UI is greyed out and a cancel button appears. Pressing cancel send a SIGTERM signal to the external process. Much thanks to ~cnx for taking care of this feature. With this update, the UX of externally launched scripts is vastly improved. 3. GeoJSON Import & Mobroute GTFS Routing Support A rudimentary GeoJSON import script has been added (mepo_geojson_import.sh) which converts each standard GeoJSON Point to a pin_add mepo JSON API command. This GeoJSON import script may be used standalone and in addition the geojson script is used by a new interactive script enabling routing via Mobroute (which outputs GeoJSON). For the interactive script allowing routing via Mobroute (mepo_ui_menu_route_mobroute.sh) you can select this item from the central menu. If you have 2 pins in the currently active pingroup, this script given a GTFS Feed ID will route between these points. You will need to be patient as if GTFS data is not loaded for the specified GTFS Feed ID, the GTFS data will be fetched and prepared upon first usage. See more details on the new GeoJSON import script & Mobroute GTFS Routing support at the updated userguide: - https://mepo.lrdu.org/userguide.html#routing - https://mepo.lrdu.org/userguide.html#geojson-import 4. Codebase Updated to Build Against Zig 0.13.0 (thanks to: lauren n. liberda) The codebase has been updated build against zig 0.13.0 via lauren n. liberda. Packagers should be aware to update the build dependency as such. Thank you to lauren for taking care of the zig version update. 5. Misc QA & Usability Updates A number of smaller but important QA and usability updates have been made which are mentioned in short below: - User configuration has been moved to ~/.config/mepo/config.json - Autosave/load functionality in the default configuration has been removed and new scripts have been added to save/load state. Buttons for Save/Load have been added in the defaults. - The complex async pin editing script has been removed and replaced by a simple 'drop pin' script bound to the 'f' key keybinding. More complex pin configuration and bookmarks can be accomplished through the user configuration if desired. - The -ndc commandline flag to disable default configuration has been removed. Users who wish to enable custom functionality are encouraged to override keybindings & other defaults via their ~/.config/mepo/config.json file. - The -docman commandline flag to generate manpage documentation for the Mepolang DSL has been removed. The documentation website at http://mepo.lrdu.org is the defacto documentation source for mepo & its JSON API. - The -i commandline flag has been updated to parse JSON API commands. The delimiter for each set (array) of JSON commands in the newline. See docs for further details. - The shellpipe_sync command now saves the state of the application (equivalent to filedump command) to ~/.cache/mepo/shellpipe_savestate.json This state can be parsed through for advanced shellpipe scripts. - The functionality of the GraphHopper script was changed to match the Mobroute script in that it will route between the first 2 pins the current pin group. - The center button has been removed from the default configuration. Mozilla Location Services (MLS) public instance has been deprecated upstream and thus this script may no longer function properly. A long term fix is needed. - A number of small memory leaks have been identified and corrected thanks to Nguyễn Gia Phong. - Findutils has been removed as a dependency thanks to Hugo Osvaldo Barrera. (Findutils was only needed in one edgecase in scripts which has been removed) - A few keybindings have changed in the default config: `f` drops a pin, `i` saves state, `u` reloads states, `r` routes via Mobroute, `R` routes via GraphHopper. See the documentation site / JSON API doc for details on default config keybindings. - As a good amount of default functionality has been changed and with the introduction of the JSON API, the documentation has been reworked in large part. I've also moved the official documentation site to be located at: http://mepo.lrdu.org