see Commit Logs to check all.
Important Notice: Mirakurun 4.0.0 includes significant performance improvements, enhanced EPG processing, asynchronous file I/O operations, and new features. As announced in 3.9.0, the experimental Win32 support has been completely removed.
- Job:
- Jobs can now be rerun.
- Maximum number of runs can now be set.
- Config:
- Added:
jobMaxRunning
,jobMaxStandby
server configs.
- Added:
- API:
- Added:
rerunJob
operations.
- Added:
- UI:
- JobsView: Added support to rerun Job.
- ServerConfigurator: Added job settings.
Bugfix of @4.0.0-beta.14
.
- Job/Queue: Improved background job mechanism for like EPG updates.
- Users can now request EPG updates at any time.
- Job execution schedules can now be set in a cron-like format.
- Jobs are now executed in parallel according to the number of CPU cores and resource availability.
- At the moment, the number of parallel executions is
Math.max(1, Math.floor(os.cpus().length / 2))
, but it will be made configurable in thefuture. →@4.0.0-beta.16
- Config:
- Added:
programGCJobSchedule
,epgGatheringJobSchedule
server configs. - Removed:
programGCInterval
,epgGatheringInterval
server configs. (breaking change) - Settings are not migrated. If you have customized, you must re-configure them in cron-like format, which can be changed from the Web UI.
- see: Configuration (日本語)
- Added:
- API:
- Added:
runJobSchedule
,abortJob
operations.
- Added:
- UI:
- JobsView: added.
- ServerConfigurator: updated.
- Added
DISABLE_PCSCD
environment variable to disable pcscd service. - Added
DISABLE_B25_TEST
environment variable to disable B25 test decoder installation. - Updated
docker-compose.yml
- For testing purposes, all devices can be accessed without setting "devices" by default.- The previous default setting required a restart of the container when the card reader's USB was unplugged and plugged in, but the new default setting restores it automatically. please check the docker-compose.yml.
- 以前のデフォルト設定では、カードリーダーの USB を抜き差しすると、コンテナの再起動が必要でしたが、今回のデフォルト設定では、自動的に復旧するようになりました。 設定例は docker-compose.yml をご確認ください。
- Server:
- Wait the LISTEN until finishes loading the program and service db at startup.
- UI:
- TunersManager: packet counter is now hidden when stream info is empty
-
Channel Configuration: Added new
commandVars
property to replace and extend the previous tuner command options- Supports any custom command variables (not limited to predefined keys)
- Added support for arguments containing whitespace using quotes
- Previous options (
satellite
,space
,freq
,polarity
) are now soft-deprecated but still work - Automatically migrates existing configurations to the new format
# Tuner Device Item Configuration - name: Example-Tuner types: - GR ... command: cmd <channel> --arg1 --arg2 <exampleArg1> <exampleArg2> "<exampleArg3>" - # Channel Item Configuration - name: Example-Ch type: GR channel: '123' ... commandVars: # new exampleArg1: -arg0 -arg1=example exampleArg2: -arg2 "whitespace is now supported using quote" exampleArg3: white space ...
- This implementation is inspired by the extra-args already implemented in mirakc, but in a different way. This is so that appropriate arguments can be defined even in an environment where different tuner commands are mixed.
- API:
- Deprecated several channel configuration properties in favor of the new
commandVars
property
- Deprecated several channel configuration properties in favor of the new
- Channel:
- Improved handling of tuner command parameters with expanded configuration options
- Migrated from hardcoded parameters to flexible variable substitution
- TunerDevice:
- Enhanced command string handling with support for quoted arguments containing whitespace
- Improved command template variable substitution
- UI:
- ChannelsConfigurator: Significantly improved the channel configuration interface
- Added visual editor for command arguments with dynamic add/remove capability
- Removed column headers for cleaner interface
- Automatically migrates deprecated configuration properties to the new format
- ChannelsConfigurator: Significantly improved the channel configuration interface
- Server:
- Added test mode support for unit/integration testing
- Added deinit method (not used yet)
- Improved server init with proper async handling
- API:
- getTuner: Fixed 500 error on not found (bug)
- getDocs: Added to get API spec docs
- UI:
- ChannelsConfigurator: Fixed layout issue on initial view (bug)
- TunersManager: Added dropped packet counter
- API:
- getTuner: Fixed broken response (bug)
- killTunerProcess: The normal status code was changed to
204
. Response is now empty. (breaking change) - getChannelStream,
getServiceStreamByChannel,
getProgramStream,
getServiceStream:- Fixed processing of HEAD requests; removed operationId because duplicated. (bug)
- channelScan: (Note) Response spec may change. asynchronous support is under consideration.
- getChannelScanStatus: Added
- stopChannelScan: Added
Important Notice: Mirakurun 4.0.0 includes significant performance improvements, enhanced EPG processing, asynchronous file I/O operations, and new features. As announced in 3.9.0, the experimental Win32 support has been completely removed.
- Node.js: Updated supported versions:
^18 || ^20 || ^22
(dropped support for Node.js 14 and 16) - Win32: Completely removed support
- UI: Added UI for channel scanning
- Performance: Eliminated blocking file I/O operations to improve real-time processing
- Configuration: Reduced storage write frequency to minimize interruptions to real-time processing
- Docker: Updated configuration files, improved commands, and added Node.js 22 support
- Win32: Completely removed support
- Project Structure: Changed global installation to be discouraged and removed PM2 support
- config/server: Added new configuration options:
allowOrigins
: Specify CORS originsallowPNA
: Allow Private Network Access (default:true
)tsplayEndpoint
: Endpoint for TSPlay feature
- CORS: Support for multiple origins, Cross-Origin Resource Policy set to "cross-origin"
- Private Network Access: Added PNA/LNA support, enabling secure access within private networks
- Memory Usage: Increased Node.js
max-semi-space-size
to 64MB to improve memory performance (this may slight increase memory usage) - config/channels/scan: Added service type support, improved scanning capabilities
- Added
skipCh
parameter to skip specific channels - Added asynchronous channel scanning with progress tracking
- Added DELETE endpoint for canceling scans
- Added
- UI:
- Changed API documentation from Swagger UI to ReDoc
- Added new UI components and service type filtering options
- Added channel, service ID, and User-Agent columns to tuner manager
- Added UI for channel scanning with visual progress tracking
- TSPlay: Added experimental TSPlay feature
- Base Image: Updated from
node:18.15.0-buster-slim
tonode:22.14.0-bookworm-slim
- Build Process: Changed from
npm install
tonpm ci
for more reliable builds - Configuration:
- Made Dockerfile and image tag configurable via environment variables (
DOCKERFILE
,MIRAKURUN_IMAGE_TAG
) - Added
tmpfs
mount for/tmp
to improve I/O performance
- Made Dockerfile and image tag configurable via environment variables (
- docker-compose.yml:
- Simplified volume binding syntax
- Added configuration guidance for users not using card readers or DVB devices
- Added detailed comments for hostname settings
- Commands: Added new npm scripts for developers:
docker:run-setup
: Run container in setup modedocker:down
: Stop and remove containerdocker:logs
: Display container logsdocker:bash
: Run Bash shell in container
-
File I/O Processing:
- Replaced synchronous file I/O operations with asynchronous ones to improve real-time processing performance
- Replaced synchronous methods from the
fs
module with asynchronous methods fromfs/promises
- Introduced queues for config file I/O operations to prevent concurrent access issues
- Reduced storage write frequency (extended program info save interval from 10 seconds to 30 seconds)
-
Performance Optimization:
- Implemented asynchronous JSON processing to prevent interruptions to real-time stream processing
- Introduced
yieldable-json
package for asynchronous JSON parsing - Increased Node.js
max-semi-space-size
to 64MB to improve garbage collection efficiency
-
Packages and Frameworks:
- Updated major dependencies:
- express:
4.17.3
→4.21.2
- glob:
7.2.3
→11.0.1
- semver:
7.3.5
→7.7.1
- rfdc:
1.3.0
→1.4.1
- React:
17.0.2
→^18.3.1
- React DOM:
17.0.2
→^18.3.1
- TypeScript:
4.7
→5.7
- express:
- Added new dependencies:
- redoc:
2.4.0
(as an alternative to Swagger UI) - redoc-try:
1.4.10
- yieldable-json:
^2.1.0
- redoc:
- Removed dependencies:
- swagger-ui-dist (due to change in API documentation tool to ReDoc)
- Updated major dependencies:
-
Project Structure:
- Removed global installation (
preferGlobal
) flag - Removed PM2 support, added dummy CLI script for migration guidance
- Completely removed Win32-specific scripts and support
- Improved TypeScript configuration and consistency
- Updated Azure Pipelines configuration (updated to Ubuntu 22.04 base)
- Removed global installation (
-
Channels:
- Updated default sample channel configuration
- Significantly improved and extended channel scanning functionality
Performance improvements, fixes for memory leaks and bugs related to EPG processing, etc.
Note: The experimental Win32 support has been deprecated for the following complex reasons, and it may be completely removed in the next minor version:
- There are no maintainers for Win32
- The current performance is not meeting the expected standards, and there is no prospect for improvement in the foreseeable future
- Many users are using it for purposes not intended by the developers, causing a burden on development
- As part of the project roadmap cleanup, resources are being focused on Linux support
Originally, Mirakurun was developed for Linux, and it is essential to avoid compromising the quality of the Linux version for Win32 support. This has led to the current conclusion. However, developers who still require Win32 support can fork the project and maintain the necessary code themselves. Thank you for your understanding.
- config/server: Add
disableWebUI
(Env:DISABLE_WEB_UI
for Docker) to disable Web UI. - config/server: Add
allowIPv4CidrRanges
,allowIPv6CidrRanges
(Env:ALLOW_IPV4_CIDR_RANGES
,ALLOW_IPV6_CIDR_RANGES
for Docker) to allow optional IP range. - config/server: Change several default values based on typical usage.
programGCInterval
:900000
(15 mins) →3600000
(1 hour)epgGatheringInterval
:900000
(15 mins) →1800000
(30 mins)logoDataInterval
:86400000
(1 day) →604800000
(7 days)
- config/server: Remove
overflowTimeLimit
. - ts-filter: Remove own overflow handling as it no longer makes sense.
- ts-filter: Fix memory leak when comparing CRC of broken PAT packet processing. (bug)
- ts-filter: Fix a problem in which the _close() function sometimes didn't call properly when the tuner was intercepted. (bug)
- ts-filter: Change EIT[p/f] information to use in EPG.
- tuner-device: Fixed a problem which the command didn't respawn correctly when it terminated unexpectedly. (bug)
- epg: Add support for multiple EIT types.
- epg: Fix wrong event group processing. (bug)
- epg: Add support for event relay.
- epg: Add support for multi track audios.
- epg: Improve performance of parsing start_time of events.
- program: Add event group type as
type
todb.ProgramRelatedItem
ofdb.Program
. - program: Fixed a problem in the implementation of conflict detection. (bug)
- program: Reduced the frequent repeated update events.
- program: Removed the
audio
property and added theaudios
property to support multi track audios. (breaking change) - program: Fix program overlapping when re-scheduled. (bug)
- program: Removed the
redefine
event and added theremove
event. (breaking change) - api/iptv: Fixed a problem with Kodi 19's IPTV feature that caused channel selection to take a long time. #101
- api/iptv: Add category (genre) info.
- api/iptv: Add timezone offset explicitly.
- api/getLogoImage: Add
Cache-Control
header to cache logo images. - api/restart: Improved the restart speed on Docker. (approx. 2 secs)
- rpc: Added a WebSocket RPC interface. (experimental)
- ui: Now using RPC interface.
- ui/status: Fix "EPG Gathering Network IDs" hex strings to upper case.
- ui/status: Fix handle tuner updates to correctly. (bug) #109
- ui/config: Add "EPG Gathering Interval" setting in Config/Server.
- ui/config: Add "Allow IPv4 CIDR Ranges", "Allow IPv6 CIDR Ranges" setting in Config/Server.
- ui/heart: Add confirmation before accessing opencollective. #106
- Add AbortSignal option for
getChannelStream()
,getServiceStreamByChannel()
getServiceStream()
,getProgramStream()
. - Fix set priority correctly. (bug)
- Fix unexpected
postinstall
execution on npm@7 and later. (bug) #116
- Update base image to
node:18.15.0-buster-slim
. - Fixed the exit signal handling properly.
- When a
SIGHUP
is received in a container, only the node process can be restarted quickly. - Add startup script (it runs
/opt/bin/startup
) support. - default
docker-compose.yml
volumes has been changed:/usr/local/mirakurun/*
→/opt/mirakurun/*
- default
docker-compose.yml
network_mode has been changed tohost
.- it enables IPv6 options.
- package: Add engine support
node@18
. - package: Drop engine support
node@12
. - package: Update dependencies.
- remove
colors
package for urgent security reasons.
Logo support enhanced.
- config/server: Add
logoDataInterval
to suppress parsing logo data frequently. - service: Save the each logo data to separate file instead of json db.
- ts-filter: Add support for BS/CS logo. #17
- ui: Add service list in "Status".
- Add missing
type
definition inService
.
- Set env
NODE_ENV=production
by default.
- package: Update dependencies.
Bug fixes and improvements to memory usage, etc.
- node: Removed
--max_old_space_size
flag. - db: Improved performance of the save (write).
- epg: Fixed a bug where the EPG would not update if it was stopped for several days.
- epg: Improved memory usage.
- epg: Improved EPG gathering behavior.
- program: Improved performance and memory usage.
- Update base image to
node:16.6.1-buster-slim
. - Set env
MALLOC_ARENA_MAX=2
by default. - docker-compose: Set container_name to
mirakurun
. - docker-compose: Set default network name to
mirakurun
.
- package: Add engine support
node@16
. - package: Drop engine support
node@10
. - package: Update dependencies.
- tsconfig: Change target
es2017
→es2019
.
Added IPTV support and improved behavior regarding EPG refresh, improved UX, etc.
- epg: Improved to perform refresh at an interval based on the previous refresh time when restarted.
- epg: Improved to detects broadcast off. The system does not attempt to refresh the EPG when broadcast is off.
- api: [
services
] AddepgReady
,epgUpdatedAt
properties. - api: [
config/channels/scan
] Renamed options.registerOnDisabled
→setDisabledOnAdd
registerMode
→scanMode
- api: [
config/channels/scan
] Fixed a bug that would change an enabled channel to disabled onsetDisabledOnAdd
istrue
. - api: [
config/channels/scan
] AdddryRun
option. - api: [
iptv
] Implemented M3U playlist and XMLTV endpoints for IPTV. - api: [
iptv
] Implemented additional endpoints for Plex Media Server. - ui: Add "Connection Guide".
- ui: Scroll to bottom when adding a new item.
- Update base image to
node:14.17.3-buster-slim
.
- munin-plugins: Removed. please use mirakurun-munin-plugins instead.
- Update dependencies.
Performance improvements and new features.
- server: Add support for processing multiple frames (TSMF). #90
- server: Add support for Cross-Origin Resource Sharing (CORS).
- ts-filter: Minor performance improvements.
- api: [
config/channels/scan
] Add support 4 slots for transponders in BS. #93 - ui: Add "Special Thanks" (heart).
- Update base image to
node:14.17.1-buster-slim
.
- Remove deprecated Mirakurun-UI from Readme. #85
- Fix webpack error on Windows. #87
- Update dependencies.
This is Important Update for any devices.
- ✅ Improved Performance
- ✅ Improved Reliability
- ✅ Fixed Critical Bug
- program: Change timing of save to data file to 10 seconds for reduce I/O usage.
- ts-decoder: Implemented
decoder
command auto-heal, path-through fallback. (new feature) - ts-filter: Use
stream.Transform
instead ofstream.Duplex
. - ts-filter: Make drop on error packet to fix broken TS output. (bug)
- ts-filter: Fix high CPU usage on waiting.
- ts-filter: Improve performance.
- tuner-device: Add
<freq>
and<polarity>
to tuner command. #77 - tuner-device: Improve performance.
- Update base image to
node:14.15.4-buster-slim
.
- api: [
config/channels/scan
] Fix a incorrect default parameters. #82 - api: [
config/channels/scan
] Fix a timing of request timeout.
Happy Holidays.
- docker: Update base image to
node:14.15.3-buster-slim
.
- server: Add
hostname
config for allowing access with specific hostname. - server: Fix timing of request timeout.
- ui: Add
hostname
config editor. - ui: Add link to API Docs (Swagger UI).
- api: [
config/channels/scan
] Support BS/CS types. #79 - api: [
tuners
] Addurl
property to eachUser
state. - api: [
tuners
] AddstreamSetting
property to eachUser
state. - api: [
tuners
] AddstreamInfo
property to eachUser
state for checking packet drop count. - api: [
channels/*/stream
,services/*/stream
,programs/*/stream
] AddX-Mirakurun-Tuner-User-ID
response header. - misc: Rename
satelite
→satellite
.
- @fluentui/react:
^7.121.11
→^7.155.3
- eventemitter3:
^4.0.4
→^4.0.7
- express-openapi:
^6.0.0
→^7.2.0
- glob:
^7.1.6
- js-yaml:
^3.14.0
→^3.14.1
- openapi-types:
^1.3.5
→^7.0.1
- react:
^16.13.1
→^16.14.0
- react-dom:
^16.13.1
→^16.14.0
- semver:
^7.3.2
→^7.3.4
- swagger-ui-dist:
^3.27.0
→^3.28.0
- tail:
^2.0.4
→^2.1.0
- (typescript):
^3.9.6
→^4.1.3
- docker: fixed a bug the Log Level cannot be changed. #78
- docker: improve pcscd reliability.
- now it will retry starting pcscd if not running correctly.
- docker: update base image to
node:14.7.0-buster-slim
.
- docker: add arch
arm32v7
,arm64v8
.
- bug fix and add
disableEITParsing
config.
- docker: fix wrong filename -
services.yml
→services.json
,programs.yml
→programs.json
. - config: add
disableEITParsing
(server). #49
- @fluentui/react:
^7.121.4
→^7.121.11
- swagger-ui-dist:
^3.27.0
→^3.28.0
- (typescript):
^3.9.5
→^3.9.6
- bug fix and update dependencies.
- server: fix parsing wrong header (Origin).
- @fluentui/react:
^7.121.0
→^7.121.4
- js-yaml:
^3.13.1
→^3.14.0
- morgan:
^1.9.1
→1.10.0
- opencollective-postinstall:
^2.0.1
→2.0.3
- semver:
^7.1.3
→^7.3.2
- source-map-support:
^0.5.16
→^0.5.19
- swagger-ui-dist:
^3.25.0
→^3.27.0
- tail:
^2.0.3
→^2.0.4
UI added.
- config: update default
channels.yml
. - api: [Restart API] add Docker support.
- ui: added. (beta)
- express-openapi:
^3.7.0
→^6.0.0
- react:
^16.13.1
- react-dom:
^16.13.1
- @fluentui/react:
^7.121.0
- stream-http:
^3.1.1
- eventemitter3:
^4.0.4
- (typescript):
^3.7.5
→^3.9.5
Enhanced Docker, DVB support.
- docker: pcscd included.
- docker: DVBv5 Tools included.
- docker: auto install
arib-b25-stream-test
. - munin-plugins: docker (host) support.
- config: add auto tuners configuration for DVB (ISDB-T, ISDB-S) devices.
- ts-filter: change default value of
maxBufferBytesBeforeReady
from3MB
to8MB
. #67 - tuner-device: send
SIGKILL
to kill if usingdvbv5-zap
.
- package: update node version to
^10.15.0 < 11 || ^12 || ^14
.- note: dropped node@13 support.
- docker: update base image to
node:14.0.0-slim
.
- nothing changed about server and clients.
- munin-plugins: fix wrong Shebang (CRLF to LF). #66
- package: update node version to
^10.15.0 < 11 || ^12 || ^13
.- note: dropped node@8 support.
- docker: official build is now resumed.
- (very sorry for stopped few months)
- latest-version:
^3.1.0
→^5.1.0
- (gulp): (removed)
- package: updates node version to
^8.17.0 < 9 || ^10.15.0 < 11 || ^12.14.0 < 13
.
- server: catch
unhandledRejection
. - status: add
unhandledRejection
errorCount.
- improved stability and bug fixes.
- openapi-types:
^1.3.5
- aribts:
^1.3.4
→^1.3.5
- body-parser:
^1.18.3
→^1.19.0
- colors:
^1.3.3
→^1.4.0
- dotenv:
^7.0.0
→^8.2.0
- express:
^4.16.4
→^4.17.1
- semver:
^5.6.0
→^7.1.3
- swagger-ui-dist:
^3.21.0
→^3.25.0
- tail:
^2.0.2
→^2.0.3
- (typescript):
2.7.2
→^3.7.5
Improved EPG processing performance. fixed unreliable codes.
- package: add support node@12
- ts-filter: added EIT version check.
- tuner-device / remote: fixed missing default value of
remoteMirakurunPort
to40772
.
Improved startup stability. fixed stack trace for TypeScript codes.
- server: await network up. #60
- source-map-support:
^0.5.16
- docker: fixed something wrong.
- js-yaml:
^3.12.2
→^3.13.1
- ts-filter: fix unexpected PAT CRC #53
- status: add more property for diagnostics.
- package: Activating Open Collective #45
- db: improve error handling. #48
- db: added integrity check. #35
- tuner: fix EPIPE error occurred by decoder.kill #46
- tuner-device: fix duplicate function call of _kill() #47
- opencollective:
^1.0.3
- opencollective-postinstall:
^2.0.1
- dotenv:
^6.2.0
→^7.0.0
- swagger-ui-dist:
^3.20.5
→^3.21.0
- js-yaml:
^3.12.1
→^3.12.2
- sift:
5.1.0
→^7.0.1
- tail:
^1.4.0
→^2.0.2
- api: [Channel Scan API] support sort by non-integer channel string. #42
- dotenv:
^6.1.0
→^6.2.0
- express-openapi:
^3.6.0
→^3.7.0
- js-yaml:
^3.12.0
→^3.12.1
- updater: fix update failure. (please note: this fixes effective for later than this version.)
- install: fix wrong expression to detect global install.
- debug: use swagger-ui-dist instead of swagger-ui.
- swagger-ui-dist:
^3.20.5
- swagger-ui: (removed)
- use
--unsafe-perm
instead of--unsafe
.
- node: change
--max_old_space_size=256
to--max_old_space_size=512
. - log: env
LOG_STDOUT
,LOG_STDERR
are not used anymore. - install: add way to install not using
--unsafe-perm
. - cli: add
init
command to init as service manually.
- log: fix comply http logs to log level setting. #41
- install: fix missing
colors
dependency.
- colors:
^1.3.3
- body-parser:
^1.17.1
→^1.18.3
- express-openapi:
^3.0.3
→^3.6.0
- js-yaml:
^3.8.4
→^3.12.0
- morgan:
^1.7.0
→^1.9.1
- semver:
^5.3.0
→^5.6.0
- tail:
^1.2.1
→^1.4.1
- epg: fix crash on epg gathering.
- aribts:
1.3.3
→^1.3.4
- package: add support node@10
- build: use
rimraf
instead ofgulp-del
- test: add (dummy)
- ts-filter: add padding to PAT with
0xff
. #33 #34 - tuner: fix takeover strategy to lower priority first. #31
- debug: allow non-root users.
- debug: use
dotenv
.
- express:
^4.15.2
→^4.16.4
- express-openapi:
^1.4.0
→^3.0.3
- sift:
^5.0.0
→5.1.0
- remote: add multiplexing feature w/ remote Mirakurun(s).
...Commit Logs before 2.6.1...