- Fix: Resolved an issue with the query for retrieving created indexes in MySQL.
- Update: Update golang packages.
- Update: Update golang packages.
- Fix: Add database schema version and check, so the app will not recreate DB views on every start up.
- Update: There are few major updates for the docker files and image containers
- The base image changed from
debian:bookworm-slim
toalpine
, which reduced the container image size 3x - from 104MB to 37MB - The image supports
linux/amd64
andlinux/arm64
now - The entrypoint and cmd are changed. If you don't see data with the new image try to remove
./web-logbook
from the command
# old image ENTRYPOINT ["./web-logbook", "-dsn", "/data/web-logbook.sql"] # new image ENTRYPOINT ["./web-logbook" ] CMD ["-dsn", "/data/web-logbook.sql"]
- BREAKING: If you encounter errors like the one shown below, verify the access rights and ownership of your
web-logbook.sql
file. Ensure it is owned by the current user rather than root, and update the ownership if necessary.
SQL logic error: no such table: metadata (1) ERROR 2024/12/14 20:33:01 main.go:162: SQL logic error: view logbook_view already exists (1)
- The base image changed from
- Fix: Resolved SQL syntax error that occurred when creating a new license record.
- Fix: Error on
Total by Month
page when changing a year in Chrome and MS Edge browsers.
- Fix: Attachments not uploaded if the new record saved and page wasn't reloaded
- Update: Updated golang version to the latest 1.23.2 and required packages.
- Update: Removed update_time field from tables and some small code optimization. No UI change.
- Update: No longer shorten the remarks field for small screens if the option "Do not adjust logbook columns for small screens" is selected
- Fix: Recreate the database view during startup in case changes didn't propagate after a version change.
- Update: Update go minor version (1.21.13) and related packages (bug and security fixes).
- Fix: Corrected a title for the login page.
- Fix: Fix the random order of the elements on Stats by Type/Class pages
- Update: The page will no longer reload when saving a new flight record.
- Update: During validation, fields with correct values will no longer be highlighted in green. Only fields with incorrect values will be highlighted in red.
- New: Added a "Copy" button to the Flight Record page.
- Update: When the arrival or departure time is changed and the total time is recalculated, the other time fields will also be checked against the old total.
- Fix: Incorrect night time calculation when flying inside the polar circle
- Fix: Bug with columns for the extended PDF format, both A4 and A5.
- Update: Update golang to 1.21.11 and golang packages
- Fix: The daterange picker on the main Logbook page didn't recognize the settings for the first day of the week (Monday or Sunday)
- Update: Session manager now stores tokens in the database instead of memory. In this case it's possible to run the application in the Cloud platforms (AWS ECS, Google Cloud Run, Kubernetes) without always keeping it live and active.
- Update: Slightly updated the build script to support v6 and v7 platforms for ARM32 binaries.
- New: Added new option to the Settings page -
Do not adjust logbook columns for small screens
. In this case the full logbook table will be shown without hiding any columns for mobile devices. - New: New stats page - Totals by Month
- Fix: Proper password field validation on Save
- Update: Support for submit button (on Enter key) on login page
- Fix: Add horizontal scrolling for the logbook page to properly support mobile devices
- Fix: Add dynamic resizing for the charts on Stats pages
- Fix: Instructor's hours for the Total Stats table were mixed up for the last 90 days and the last 12 months
- Fix: Correct using styles and classes for the sidebar when switching between the pages
- Update: Code cleanup, removing code for synchronization with mobile client (will not continue working on it)
- Update: Update golang version (1.21.10) and go packages.
- New: Implemented a new responsive user interface that is friendly for desktop, mobile, and tablet devices. The design is based on the adminkit.io template, and all pages are refactored to ensure a seamless user experience across different platforms. Probably some new bugs are introduced ¯\(ツ)/¯*
- Update: rename cmd/web directory to app, just internal change.
- Update: Code optimization. No UI change. Includes:
- Migrated all javascript code to a js files instead of keeping them in gohtml templates, plus some html code optimization. This significantly reduces amouunt of typo and errors.
- Removed map data for css and js files for standard libraries. As a result, the final size of the application binary file is reduced by ~10 MB to ~18MB.
- Added simple brutforce protection for login page.
- Optimize internal helper function, so need for additional error check.
- New: Add support for MySQL database. Check readme for more details.
- Update: Refactored PDF export package. No UI changes.
- New: Add support for a custom title page for PDF A4/A5 exports.
- Update: Update openlayers lib from 7.3.0 to 9.0.0. No UI changes.
- Update: Update golang from 1.20.3 to 1.21.8. No UI changes.
- Fix: Finally fixed the unit tests. No UI changes.
- New: License Number and Address fields on the
Settings
page. They are printed (if not empty) on the title page for PDF exported logbook. - Fix: Try to fix a
Map
page layout for Mac OS
- Fix: Add additional checks for time field autoformat, so app will not crash
- New: Add autoformat for time fields. You can choose from three options:
None
,HH:MM
(will add leading 0) andH:MM
(will remove leading 0). Please note that this feature only affects how the time is displayed in the UI and does not modify the data in the database table. You can find this option in theSettings
,Export PDF A4
, andExport PDF A5
pages.
- New: Add autoformat for the date field for import data, so it can convert
D/MM/YYYY
,DD/MM/YYYY
andD/M/YYYY
to the fullDD/MM/YYYY
format. - Fix: Allow full HH:MM format for flight time, so even 02:15 is valid (previosly it allowed 2:15 only without leading 0)
- Fix: If the name field in the AirportDB listing is too long, the listing was displayed outside the popup. Fixed.
- Fix: Map now show a great circle arcs instead of "direct" lines.
- Fix: Duplicate models in the field of the flight record form. Fixed. Plus added sorting for models and regs.
- Fix: The ICAO code was not properly set for the airports from ourairports.com source. Changed the algorithm to assign the codes.
- Fix: time error for totals on the main
Logbook page
due toround
function. Calculation didn't affect Stats or Logbook exports
- New: Additional sources for the airport databases. The new option added is from https://ourairports.com
- Fix: Cross Country hours in the Stats tables when there are no flights for the time period
- New: Add licensing synchronization with mobile app. No UI changes.
- Fix: The
-url
parameter was ignored. Now the default value is empty, which means the app will listen on all available network interfaces. You can set-url localhost
and app will listen onlocalhost
or127.0.0.1
only. - New: Few changes for the future new mobile client. No UI changes.
- New: Added rows
Total this page
andTotal all pages
for the main logbook table. The values are updated if you filter the search.
- Update: ignore case for filters on the
Map
page - Fix: The filter on the
Map
page wasn't working correctly if there was a space in the fields - Update: Show the total number of rows for most of the tables (Logbook, Licensing, Airports)
- New: Date Range Picker first day of the week settings - Sunday or Monday.
- New: Attachments synchronization support for the mobile application.
- Fix: the license warning badge wasn't hidden on some pages even it was set so in the Settings
- New: option for A4 PDF extended format, where Date field is added to the FSTD section
- Update: the synchronization protocol between the main app and the mobile app slightly changed to implement new features in the feature easily.
- Fix: set smaller font size or even truncate the remarks for PDF exports in case they are too long
- New: Dark mode.
- New: A popup with airport infromation once you click on the marker on the
Map
page. - Update: The Openlayers library upgraded to the version 7.3.0
- Fix: added escape function for special html chars when checking for a long remarks field
- Update: Golang version update to 1.20.3
- Update: A new algorithm for a night-time calculation. The previous one had a few limitations, such as it couldn't correctly calculate the time if the flight started before sunset and ended after sunrise. Or there was quite a high error if the flight was close to the North or South poles. The new algorithm divides the flight for the segments <1 minute and checks the sunrise/sunset time for each of them, and then summarises the total night time.
- Fix: The main logbook table pagination was broken due to wrong variable type (string instead of int)
- Fix: last release introduced an error, when validator for the flight record didn't accept time in 0:mm format. Fixed.
- New: Add options to the
Settings
to define the amount of the rows in theLogbook
andLicensing
tables - Update: Updated validators for the flight record, so it's possible to add the first "empty" flight record with hours from the previous logbook.
- Fix: table layout on the main
Logbook
page.
- New: Slightly updated the
Licensing
table and added a check for the expired or expiring soon licenses. The warning will appear in the left navigation bar, however, there is still an option to disable the badge in theSettings
page if it's too annoying. - New: Added airport database synchronization with a mobile app.
- Update: Moved code that calculates a night time from the package to the internal module - easier troubleshooting and it was used as an example for adding the same functionality to the mobile app
- Fix: Remarks in the main logbook table are truncated depends on the screen width.
- Update: New version for the go-nighttime package, which uses a different library for calculating sunrise and sunset. It might not as precise as the previous one (the difference is up to 2 minutes depending on the flight time), but the calculation is much faster (1000 times) and it doesn't need a time zone database, which makes the binary file up to 15MB less.
- Fix: Show values on the charts (tooltip) in the proper format - HH:MM for time fields, and XXX XXX nm for distance
- New: Synchronization with mobile apps. Check Web Logbook Mobile for more info
- Fix: The chart layout for
Totals
on theStats
was hardcoded and didn't take into account the hidden fields. Now it's fixed.
- Fix: The date filter on the
Map
page didn't work in case of manual change. Now it's ok. - New: Added option to customize the headers for PDF export formats.
- New:
Restore defaults
option is now by section (common, headers, columns widths) - New: Added option to switch to the next or the previous flight record on the
Flight Record
page
- New: Added HTTPS support. Check readme for configuration
- New: New subpage
Airports
for theSettings
- New: Added option to add your custom airport which is not in the standard default airports DB
- New: Added option to list and go through the standard airports database
- Fix: Fixed error for the
Total By Class
when the table is empty
- New: Automatic departure and arrival time format recognition for the
Import
- New: Added option to recalculate night time during the import
- New: Added a check if the flight or simulator record already exists during the import
- New: When the app is running in
dev
mode the logs for the web server now are printed by a standard middleware logger instead of custom messages for each handler. Also added a cache header for static files. Mostly no effect on the user interface, might slight speed improvement. - Updated: All JavaScript is rewritten to have it in a more readable format with some best practices. No effect on the user interface
- New: The full new main section
Import
. For now it's limited to CSV files only. This function is in beta mode. Please use it carefully and don't forget to create backups. - New: Adjusted text and column width for the main
Logbook
table. Also added theLogbook table font size
parameter to theSettings
page.
- New: Add option for A5 pdf export format to add
Date
column to theFSTD
section, which fully matches Part FCL.050 format (https://www.easa.europa.eu/sites/default/files/dfu/Part-FCL.pdf) - New: Now you can add a signature to the logbook in PDF format. The new signature pad on the
Settings
page allows you to write/draw your signature in any color or upload it from a file (*.png
format only, and should be with transparent background). And then you can "turn it on" for each PDF export format with a checkboxInclude signature
- New: Added new setting
Replace SE and ME values for single pilot time with "✓" symbol
for PDF export formats. It's according to EASA Part FCL.050 logbook example https://www.easa.europa.eu/sites/default/files/dfu/Part-FCL.pdf - Updated: PDF export code adjustment to be more readable and flexible for future formats.
- Updated: Labels for the
Settings
->Misc
page are set to use a regular font
- Fix: Correct column name from
Arrival/Departure Date
toArrival/Departure Time
on the main logbook page - New: Added
Last 12 Months
column to the main stats page - Updated: Rewrote slightly javascript file for the
Stats
page/template to follow some best practices from "javascript world" (whatever it means...). Will be doing the same for other included JS template partials in the future. - Updated: Rename
Enable help messages on the flight record page
toDisable...
and change the logic, otherwise for the new users this field is always unchecked and they don't see some tricks to quickly fill the flight record form - New: Added options to hide some columns for the Stats tables (you can find them in the
Settings
) - New: Added Cross Country for the Stats tables
- New: Added new field
Stats tables font size
on theSettings
page - due to a lot of columns the table layout can be broken on the smaller screens, so you can set your font size from 50% to 100%
- New: Added progress check for the flight time limitations on the Stats page. It's based on the EASA rules (mostly for commercially flying pilots): 100 hours in a period of 28 consecutive calendar days, 280 in a period of 90 consecutive calendar days, 900 hours in a calendar year, and 1000 in a period of 12 consecutive calendar months.
- Updated: golang version 1.19 and dependencies
- Fix: Typo fix on the Stats page, the label was "Single Engine" instead of "Distance"
- Fix: When clicking on the
Remove
button for the attachment the modal window just closed without letting you confirm the deletion. This was fixed by updating the bootstrap css and js files. - Fix: Updated alert info fields to show the proper color as well (green/red)
- Updated: unit tests were redesigned and updated, making them more reliable and not random sometimes. This doesn't affect UI or functionality, just an internal thing
- New: Added
-ldflags="-s -w"
when compiling binaries. It removes the debug information and should reduce the final size. - New: Added a few filters to the map page: aircraft registration, model and class, and route arrival/departure.
- New: Double click on the
PIC Name
will set theSelf
value for the field
- New: a date range field (https://www.daterangepicker.com/) for the logbook, stats, and maps pages with some predefined values (last 30 days, this month etc) and the possibility to select a custom range. This one probably will cause some hidden bugs in UI, but ¯\(ツ)/¯*
- New: Started to write a changelog to track the changes, fixes and so on in one file
- New: Added binaries for arm32 to support older Raspberry Pi devices
- Updated: The custom date picker from jquery was replaced by the date range picker. No effect on the end user, just simplifying the code