- Fix: Handling of empty and NULL values in SQLite (regression from previous release).
- Fix: error on backend for MariaDB SQL server.
- Update: Golang and npm packages/security patches.
- Update: If filters are applied to the table, the CSV export will only export the filtered rows.
- New: Added "Save Map as PNG" button for the flight maps.
- Fix: proper json parse/stringify for custom fields.
- Update: preformance optimizations for the
Flight RecordandMappages.
- New: Added custom import profiles. User can save custom import profiles and load them later. The custom profile is stored in the browser's local storage and is not shared between different browsers or devices.
- New: Attachments entity, allows to go through the list of all attachments, preview and download them (filtered or all) as a zip file.
- New: Added record number column to the Logbook table (hidden by default). Can be used in the filter panel in case you need to calculate totals for specific range of the records.
- New: Added night landings recalculation on import. If night time recalculated option is selected and it is more than 0 minutes, then night landings are set to the same value as day landings (if day landings > 0).
- New: Added a new setting
Logbook totals viewto allow user to change the way totals are displayed in the Logbook table. There are 2 options.Standardwill show you the current page totals and grand totals through the whole logbook.Paper Logbookwill show you the totals for each page, previous page and the totals will be a summary of these 2 values.
- Fix: Bug with custom pagination settings for Logbook table.
- Fix: Fixed a bug triggered by clicking the Add Person button in Flight Records.
- New: Added a new setting
Self PIC Labelto allow user to change the label used when PIC. By default it isSelf, but can be changed to any other value (e.g.SELFaccording to AMC1 FCL.050, section i, subsection 5). - New: Added aircraft registration filter on the Flight Record page if the aircrat model/type is selected.
- New: Custom DataGrid component based on standard MUI X DataGrid to replace unsupported Material React Table. This introduces new views for tables, filters, and column selection, which work faster and require less code and resources. The only disadvantage: it lacks row grouping, so the Stats by Year page had to be refactored with a new view.
- Update: Latest versions of MUI libs and components.
- Update: The previous two bullet points enabled slight style updates across the app; dark mode is updated and mobile view is now slightly more user-friendly.
- New: Added phone, email, and remarks fields for Persons.
- Update: Golang updated to 1.26.x.
- Update: Refactored Filter panel layout. Map Settings and Dashboard Settings are now separate components.
- Update: Added option to hide airport codes on the map and added new pin icon.
- New: For advanced users, added SQL view
logbook_stats_viewfor flight statistics. Dates are converted to ISO format, departure/arrival times include dates, and time fields are cast to minutes. Also added API endpoint/api/logbook/stats-data.
- Note: Likely the last release of v3 before version 4.
- Update: Golang and npm packages updated; applied security patches.
- New: Automatically set PIC time to total time for new records when PIC name is Self.
- New: Aircraft categories can now define time fields that are automatically filled when creating a new record.
- Fix: Error when selecting license category and the list of categories is empty.
- Fix: (MySQL) removed default value for
TEXTfields which caused error during schema update.
- Fix: Corrected expiry date calculation for landing-based rules.
- New: Added a
Signmenu item to the Flight Record page, allowing flight records to be signed by an instructor or examiner. The signature now appears in the PDF logbook. - Update: Some code optimization, added error page.
- Update:
Person Roleselector now uses the dynamic roles listed from the database instead of static defaults or manual settings. - New: Added Tags field to flight records. Tags are visible in the logbook table and available as filters on the
MapandDashboardpages.
- Update: Golang and npm packages/security patches.
- Update: Added another option (dd/mm/yy) for date autorecognition during the import.
- Update: Added a circular progress indicator during database download.
- Update: Hide columns in the PDF export if the field size is set to 0.
- New: Added option to update aircraft type in Aircrafts table, which also will update all logbook entries.
- Fix: Intermittent error on the Stats/Category page.
- Update: Landing-based expiry calculation to use the most recent qualifying landing that completes the target threshold. Previously, expiry was set to 90 days after the 3rd most recent qualifying landing.
- Update: Golang and npm packages/security patches
- Fix: License notification error if there are no licenses stored.
- Fix: aircraft list update when the flight is removed from the logbook.
- Fix: Error loading currency page.
- Update: Golang and npm packages/security patches
- New: Custom aircraft category linked to the registration number. All stats, filters and currency also supports new custom categories.
- Update: Golang and npm packages/security patches
- Fix: Optimized the currency page to refresh the state after a flight record is updated.
- New: Add support for imports from Leon application.
- Fix: Flights for the selected person were shown in random order.
- Fix: Error when building aircraft list if multiple aircraft types were logged under the same registration number.
- Update: Golang and npm packages/security patches
- Fix/Update: Simplified and corrected night time calculation. Previously, it could be inaccurate for routes on the opposite side of the globe from Europe.
- Fix: Night time field wasn't updated (for copied flights) if the actual night time was 0.
- New: Add option to upload and download the database file (SQLite only).
- Fix: Update column number for the ICAO code for Our Airports database source.
- Fix: Recalculate night time even the field is not empty.
- New: Added an option to hide time fields on the Flight Record page.
- Update: Reorganized action buttons on the Flight Record page.
- Update: Set start of the week to Monday for the date fields.
- New: Added badges on the navigation panel for very soon expiring and expired licenses, configurable from the Settings page.
- New: Expiration date tracking for Currency -
Valid UntilandExpire@xtncl
- Fix: Dashboard stats calculation when using custom manual dates
- Update: Dashboard and stats improved - simulator flights are now counted under the correct aircraft type or category when simulator type matches, otherwise grouped as "Simulator".
- Update: Improved import with automatic recognition of date, time, and route in CSV fields, and added a help button with field format descriptions.
- Update: General code optimization and UI improvements for the aircraft and airports tables (column resizing)
- New: Custom person roles (new field on the Settings page)
- New: Added
SinceandAll Timetime frame units for the Currency - Update: grey out 0:00/0 values in the stats tables
- New: Enroute field as a new custom type. Allows to add enroute/touch-n-goes airfields and show them on the map. Distance is recalculated as well.
- Fix: track plotting from SkyDaemon KML files
- Fix: Corrected caching for Persons entity
- Update: Increase timeout for initial DB check
- Update: Golang and npm packages/security patches
- Fix: Don't show the brackets if the person doesn't have a role
- Update: Change Map selectors
No Route Lines/No TrackstoRoute Lines/Tracks - New: Added Track and Attachments columns for the logbook table. Shows if a flight record has a track attached and amount of the attachments. Hidden by default
- New: Added a support to change the naming for the standard fields on the flight record page and all the tables (logbook and stats)
- New: Added new section
Personsto track the crew members for the flights @danielkappelle
- Fix: track is not displayed on the Flight record map
- Update: Add
numericproperty for Time and Landing fields to show a numeric keyboard on mobile devices for better UX @danielkappelle
- New: Custom fields support in the main logbook table and stats tables
- New: Add option to show/hide tracks and routes on the
Mappage - Fix: Dashboard filters error
- Fix: Tooltip/description overlap for the input fields
- Fix: Night time calculation error when copying flight records
- Fix: Instructor time wasn't imported
- Update: Golang and npm packages/security patches
- New: Support for GPX track files
- Fix: Critical bug with excessive escaping for custom fields
- New: Custom logbook table pagination. You can set your custom rows numbers instead of standard
5, 10, 15, 20, 25, 30, 50, 100for the logbook table - Update: Updated material-react-table npm package and fixed the issue with filters for the text columns.
- Update: Update golang and npm packages
- New: Added custom fields functionality. Create custom fields (text, number, time, duration) on the Settings page that appear on Flight records. Includes configurable statistics functions with Dashboard integration for data visualization. Note: Import data for custom fields is not yet supported.
- Doc: Update Readme with some API examples
- Fix: Quick CSV export for logbook table didn't include CoPilot time
- Fix: Handled missing registration numbers when building the aircrafts list/table from flight records.
- Fix: Copilot time was not added to the logbook during import.
- Update: Fix a logic for checking duplicate records during import.
- Fix: Potential user lockout when the username was not provided in email format.
- Note: Version 3 is now stable and released to production. The Docker image is also available under the
latesttag. - New: Added preview support for flight record attachments.
- Update: Added navigation buttons to move to the previous and next flights on the flight record page.
- Fix: Resolved an issue when changing or adding a new license category.
- Fix: Fixed a bug with the aircraft type autocomplete when no records are present. @danielkappelle
- Fix: Columns layout for currency table.
- Fix: Error when updating day or night landings in a flight record.
- Update: Added recalculation of night time during flight record import.
- Fix: Corrected night time calculation for flights with identical departure and arrival locations (e.g., training circuits).
- Note: I expect this to be the last beta release; the next versions will be production releases.
- Update: Updated npm and Go packages with security fixes and version bumps.
- Fix: Avoid redundant request triggered during new license record creation
- New: Tracking currency and flight experience
- Fix: Avoid redundant request triggered during new flight record creation
- Fix: Fix issue adding new aircraft types and regs
- Update: Optimize UI elements
- Note: The Docker image for this release is still tagged with its version only and doesn't use the standard
latesttag until it exits beta status
- New: Column sizing preferences for the Logbook and Licensing tables are now saved (in a browser local storage). A Reset Column Sizing button has also been added to the right toolbar.
- New: Track log support added. You can now upload KML files as attachments or convert existing ones to display flight tracks on the map page. The flight distance is automatically calculated from the track log. Tracks are also visible on the overall Map page.
- Update: Updated npm and Go packages with security fixes and version bumps.
- Caution: This is an early release and still in test, please create a backup of your db file (
weblogbook.sql) before switching to this version - Update: Completely new user interface
- Update (breaking change): The category list has a new format and should be recreated
- Note: The Docker image for this release is tagged with its version only and doesn't use the standard
latesttag until it exits alpha status
- Update: This is the final release of the v2.x series, including Golang library and security updates, before the rollout of v3.x.
- 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-slimtoalpine, which reduced the container image size 3x - from 104MB to 37MB - The image supports
linux/amd64andlinux/arm64now - The entrypoint and cmd are changed. If you don't see data with the new image try to remove
./web-logbookfrom 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.sqlfile. 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 Monthpage 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
Settingspage. They are printed (if not empty) on the title page for PDF exported logbook. - Fix: Try to fix a
Mappage 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 A5pages.
- New: Add autoformat for the date field for import data, so it can convert
D/MM/YYYY,DD/MM/YYYYandD/M/YYYYto the fullDD/MM/YYYYformat. - 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 pagedue toroundfunction. 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
-urlparameter was ignored. Now the default value is empty, which means the app will listen on all available network interfaces. You can set-url localhostand app will listen onlocalhostor127.0.0.1only. - New: Few changes for the future new mobile client. No UI changes.
- New: Added rows
Total this pageandTotal all pagesfor the main logbook table. The values are updated if you filter the search.
- Update: ignore case for filters on the
Mappage - Fix: The filter on the
Mappage 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
Mappage. - 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
Settingsto define the amount of the rows in theLogbookandLicensingtables - 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
Logbookpage.
- New: Slightly updated the
Licensingtable 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 theSettingspage 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
Totalson theStatswas hardcoded and didn't take into account the hidden fields. Now it's fixed.
- Fix: The date filter on the
Mappage 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 defaultsoption is now by section (common, headers, columns widths) - New: Added option to switch to the next or the previous flight record on the
Flight Recordpage
- New: Added HTTPS support. Check readme for configuration
- New: New subpage
Airportsfor 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 Classwhen 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
devmode 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
Logbooktable. Also added theLogbook table font sizeparameter to theSettingspage.
- New: Add option for A5 pdf export format to add
Datecolumn to theFSTDsection, 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
Settingspage allows you to write/draw your signature in any color or upload it from a file (*.pngformat 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 "✓" symbolfor 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->Miscpage are set to use a regular font
- Fix: Correct column name from
Arrival/Departure DatetoArrival/Departure Timeon the main logbook page - New: Added
Last 12 Monthscolumn to the main stats page - Updated: Rewrote slightly javascript file for the
Statspage/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 pagetoDisable...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 sizeon theSettingspage - 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
Removebutton 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 Namewill set theSelfvalue 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