All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- [runtime] iptables-restore service detection
- [captive-portal] Using 1.5.1 with fixed post-reg page in FR/ES android
- [dashboard] Using 1.6.1 with fixed menu
- [dashboard] Using 1.6.0 with updated UI (About page)
- [reverse-proxy] Using 1.11 with custom kiwix external link block page
- [kiwix] Fixed dashboard links still broken in 2.4.1
- [branding] Eventually settled on no-padding branding
- [kiwix] Fixed links and NO_HOME broken in 2.4.0
- [dashboard] Added offspot-config version as hotspot version for dashboard 1.5
- [branding] Updated logos to use new (case) version and removed dark-mode versions (now same as light)
- [captive-portal] Using 1.5.0 with updated branding
- [dashboard] Using 1.5.0 with updated branding and removed size filter
- [kiwix-serve] Using 3.7.0-2
- [kiwix-serve] Kiwix-serve subdomain changed from
kiwix
tobrowse
- [reverse-proxy] Using 1.10 with updated Caddy
- [catalog] Added Af&Rica files packages in FR, EN, AR.
- [catalog] Update name and description for file-manager.offspot.kiwix.org (now File Manager)
- [catalog] Domain names now uses dashes instead of underscores:
com.kylecorry.trail_sense.offspot.kiwix.org
org.hlwd.bible_multi_the_life.offspot.kiwix.org
- [builder] Updated dashboard version to 1.4.8 (from 1.3)
- [branding] Added dark versions of square and horizontal logos
- [branding] Added light+dark enabled square and horizontal SVG logos
- [branding] Updated light PNG logos in accordance to Branding guidelines
- [catalog]
eleda.offspot.kiwix.org
package as it is available as a ZIM
- [utils.dashboard] New
Reader.to_dashboard_dict()
returning dashboard-transformed download URL
- [builder] Reader download link using local URL
- [builder] Using captive-portal 1.4.3 fixing 2.2.1 regression
- branding folders were mounted inside another volumes in kiwix service
- original branding incorrectly set as url
- YAML repr of Checksum (#42)
- Using captive-portal 1.4.2 with branding support
- [inputs.file]
File.is_base64_encoded
ifvia
isbase64
- [utils.misc]
b64_encode()
andb64_decode()
for reproducible base64 transport - [branding]
branding
folder inoffspot_config
containing official/original offspot branding files - [constants]
INTERNAL_BRANDING_PATH
pointing to code-reachable folder of branding files - [builder]
ORIGINAL_BRANDING_PATH
constant for '/data/branding` - [builder]
BRANDING_PATH
constant for/data/contents/branding
- [builder] Using kiwix-serve 3.7.0-1
- [builder] Using reverse-proxy 1.8
- [builder] Original branding files copied to
ORIGINAL_BRANDING_PATH
- [builder] Creating empty
BRANDING_PATH
for hotspot-specific branding - [builder] Added mounts for
BRANDING_PATH
(andORIGINAL_BRANDING_PATH
) on all internal apps - [builder] Catalog apps can mount
${BRANDING_PATH}
or${ORIGINAL_BRANDING_PATH}
- [inputs.checksum]
Checksum
gets ato_dict()
method - [dashboard]
Reader
gets an optionalchecksum
- [builder] Removed useless download.kiwix.org special behavior for reader checksum. Checksum now on Reader
- [builder] Using captive-portal 1.4.1
- [inputs.base] Version-only base image def now targets uncompressed URL
- [inputs.base] BaseConfig gets an optional
checksum
and populates base_file accordingly - [inputs.base] Version-only base image def now also retrieves Checksum via expected .md5 endpoint
- [inputs.file] File now includes a
checksum
property (optional) - [inputs.checksum] Checksum now includes an
as_aria
property (algo=digest
formatted string)
- [inputs] API refactored into an empty
inputs
module with many sub-modules (breaking change)
- [utils.download]
get_payload_from
to retrieve small bit of data from a URL - [utils.download]
read_checksum_from
to retrieve digest-looking string from a URL - [inputs]
Checksum
type that describe a checksum with its algo (several supported) and includes mechanism for later-resolution via URL URL retrieval - [inputs] Packages (Files, App, Zim) gets an optional
download_checksum
param that is passed to FileConfig - [builder] Readers get an automatically fetched checksum if URL is on download.kiwix.org
- [builder]
add_file()
takes an optionalchecksum
param
- [catalog] All Catalog entries now have download_checksum if applicable
- [zim]
get_zim_package
now includes a live-fetched MD5 checksum
- [utils.dashboard] Reader struct to ease passing
readers
to dashboard YAML - [utils.dashboard] Link struct to ease passing
links
to dashboard YAML - [builder]
add_dashboard()
param:readers
to automatically add and offer Kiwix readers in dashboard (1.4+) - [builder]
add_dashboard()
param:links
to add arbitrary links to dashboard (1.4+)
- [builder]
resolved_variable()
can now be used without a Package
- [catalog] magoe update wasn't included
- [catalog] Updated magoe package
- [zim]
get_libkiwix_humanid()
to get kiwix-serve BookName from a filename
- [packages]
ZimPackage.get_url()
now uses libkiwix's human ID
- [zim]
to_ident()
andfrom_ident()
functions to consistently work on idents - [zim]
ZimIdentTuple
type, returned byfrom_ident()
- [packages]
ZimPackage.filename
now returns an ident-based one preventing conflicts on files with different flavours
- [builder] Using dashboard:1.3.1
- [firmware] New
firmware
top level config for runtime to change WiFi firmware
- [builder] Welcome FQDN properly set (goto.kiwix)
- [catalog] file-manager URL (no trailing slash)
- [builder] Using captive-portal:1.4 with offline fix
- [builder] Using reverse-proxy:1.7 with welcome_fqdn
- [catalog] Using file-manager:1.3 with metrics headers
- [builder] AP welcome_domain now settable (defaulting to
goto.kiwix
) - [ap]
captured-address
allows setting the DNS fallback target for when offline
- [ap] Auto
spoof
dnsmasq switcher now toggles by uncommenting what's commented and commenting what's not. - [ap]
no-resolv
anddhcp-athoritative
added to DNSmasq config - [ap] Upstream
server
for DNSmasq only set when Online
- [builder] Using reverse-proxy 1.6
- [builder] Using metrics 0.3.0
Package.size
informing overall package size (image and download_size)
- [builder] Using metrics 0.3.0
- [builder] Fix metrics environment to find logs
- [builder] Use same image version for file-manager and zim-manager (workaround image-creator#28)
- [builder] Fix typo in metrics image URL
- [builder] Using metrics 0.2.1
- [catalog] Using file-manager 1.1
- [catalog] App
file-manager.offspot.kiwix.org
to replace Edupi - [catalog] FilesApp TrailSense
- [catalog] FilesApp Survival Manual
- [catalog] FilesApp The Life
- [builder]
add_file()
'sto
can now use${APP_DIR:<ident>}
to target any app's home - [builder] Use reverse-proxy 1.5 with single-service fix
- [catalog] Removed
edupi.offspot.kiwix.org
package. Seefile-manager.offspot.kiwix.org
- [builder] Setting default
hostname
on runtime-config usingdomain
- [builder] Fixed missing dashboard entries for catalog apps
- [builder] Updated Captive Portal to 1.3, hwclock to 1.2, dashboard to 1.3
- [builder] Shared handling of touched files
- [builder] Fixed ZIM auto-discovery: folder not mounted
- [builder] Adding zim-manager (automatically with kiwix)
- [catalog] Fixed WikiFundis missing a link to self via proxy for visualeditor
- [catalog] Added Magoe App
- [catalog] Added an icon for Edupi App
- [catalog] Updated Nomad Files app
- [catalog] Removed Edupi favicon branding mount (not supported yet)
- [catalog] Updated Edupi to 1.2
- [tests] Added basic JSON parsing test for catalog
- Fixed typo in catalog JSON
- [builder] Ability to specify mirror URL for ZIM downloads
- [catalog] Fixed WikiFundi entries: file extract, removed dev protect and applied FR conf to all
- [config]
write_config
now handled, adding config to /data/image.yaml
- [runtime] Fixed installed dnsmasq-spoof service (was not using venv-aware path)
- [catalog] Fixed typo in JSON rendering catalog unreadable
- [catalog] Renamed
icon
toicon_url
to make it clearer about expected content - [builder] Dashboard yaml config size properly reported
- [builder] now disables kiwix-serve homepage (redirect to fqdn)
- [builder] enabling captive portal now sets dhcp-range automatically and enabled as-gateway
- [builder] writting base64-encoded icon to dashboard yaml
- [builder] fixed zim-download subservice to
zim-download.{FQDN}
- [builder] Files Packages now copied to /data/content (was /data/content/files)
- [builder] Files service now bound to /data/content (was /data/content/files)
- [builder] Using dashboard 1.2 (with ZIM discovery and healthcheck)
- [builder] Using reverse-proxy 1.4
- [builder] Using captive-portal 1.2
- [builder] Using hwclock 1.1
- [builder] Using filebrowser 1.1
- [builder] Added metrics support
- [zim] removed hack to circumvent libkiwix#1004 which has been fixed
utils.sizes.get_sd_hardware_margin_for()
for std SDcard margin useutils.sizes.ONE_GB
andutils.sizes.ONE_GiB
- Eleda packages (files and android) to catalog
- Default read-from location for offspot.yaml in
/boot/firmware
(base-image 1.2) - Changed get_bin() in offspot_runtime to accomodate in-venv offspot-runtime
- Country Code
00
forap
not accepted anymore (hostapd). Defaults toUS
- Dashboard entry now contains
ident
of package as well - Now developping on py3.11 as its default on base-image (bookworm)
- Using updated images (captive-portal:1.1 and kiwix-serve:3.6.0)
- Fixed placeholder not empty (not allowed)
- Adding placeholder files to prevent binding to non-existent files/folder in compose
- Support for LVM Device Mapper in xattr_support check
- Hack around libkiwix#1004 when checking ZIM existence
- Fixed builder when not using reverse-proxy
- Fixed based image URL when using version only
- Fixed package access in AppCatalog
- Added Builder
- Added Sizes computation
- Using dashboard:1.1
- Including JSON catalog in lib
- Now bundling
offspot_config
module as well
checks
module to test YAML configuration file values- most checks more resilient as checking input types
- timezones actualy checked for existence instead of vague timezone-looking regex
- compose checking now includes (optional) image presence checking and exposure of ports
- ipv4 addresses are now checked for being actual IPv4 addresses with a flag to check if usable
- network checks now checks for valid network strings and compatibility with related IP address
- WiFi country code now checked for being an actual country code.
- Added support (and as default) for 00 country code meaning less-permissive radio options
- dhcp-range checks now checking for actual IP ranges with netwmask and host IP. ttl is also checked
- unit tests for checks module (100% covered)
- test workflow
- fixed setup.py using a static
1.0
version instead of version reported to scripts - renamed module from
offspot_runtime_config
tooffspot_runtime
- renamed
offspot_config_lib
sub-module toconfiglib
- Fixed disabling auto-spoof apparently failing due to lack of return code
ap.dhcp_range_for()
now calculates an actual range instead of replacing strings- updated QA worflow
- fixed program name in usage of scripts
auto
option forspoof
param inap
to adjust based on internet connectivity
- initial version CHANGELOG.md