mirror of
https://github.com/euzu/tuliprox.git
synced 2026-10-04 06:52:26 +02:00
Merge remote-tracking branch 'dark-breakpoint/cache-scan-blocking' into feature/cache_warmup
This commit is contained in:
+12
-9
@@ -1,4 +1,7 @@
|
||||
# Changelog
|
||||
# 3.3.0 (2025-11-xx)
|
||||
- Avoid blocking the runtime when warming cache
|
||||
|
||||
# 3.2.0 (2025-11-14)
|
||||
- Added `name` attribute to Staged Input.
|
||||
- Real-time active provider connection monitoring (dashboard + websocket)
|
||||
@@ -7,7 +10,7 @@
|
||||
- More robust connection-state and provider-handle management
|
||||
- Streamlined event notifications and provider-count reporting
|
||||
- Added configurable `reverse_proxy.resource_retry` (UI + server) to tune max attempts, base delay, and exponential backoff multiplier for proxied resources.
|
||||
- Multi Strm outputs with same type is now allowed.
|
||||
- Multi Strm outputs with same type is now allowed.
|
||||
- Added new mapper function `pad(text | number, number, char, optional position: "<" | ">" | "^")`
|
||||
- Added new mapper function `format` for simple in-text replacement like `format("Hello {}! Hello {}!", "Bob", "World")`
|
||||
- Added `reverse_proxy.stream.shared_burst_buffer_mb` to control shared-stream burst buffer size (default 12 MB).
|
||||
@@ -19,13 +22,13 @@
|
||||
- Catchup stream fix cycling through multiple providers on play.
|
||||
- Custom streams fix and update webui stream info
|
||||
- Added TimeZone to `epg_timeshift: [-+]hh:mm or TimeZone`, example `Europe/Paris`, `America/New_York`, `-2:30`(-2h30m), `+0:15` (15m), `2` (2h), `:30` (30m), `:3` (3m)
|
||||
If you use TimeZone the timeshift will change on Summer/Winter time if its applied in the TZ.
|
||||
If you use TimeZone the timeshift will change on Summer/Winter time if its applied in the TZ.
|
||||
- Fixed: Mappings now automatically reload and reapply after configuration changes, preventing stale settings.
|
||||
- Search in Playlist Explorer now returns groups instead of matching flat channel list.
|
||||
- Added `use_memory_cache` attribute to target definition to hold playlist in memory to reduce disc access.
|
||||
Placing playlist into memory causes more RAM usage but reduces disk access.
|
||||
- Added optional `filter` attribute to Output (except HDHomerun-Output).
|
||||
Output filters are applied after all transformations have been performed, therefore, all filter contents must refer to the final state of the playlist.
|
||||
Placing playlist into memory causes more RAM usage but reduces disk access.
|
||||
- Added optional `filter` attribute to Output (except HDHomerun-Output).
|
||||
Output filters are applied after all transformations have been performed, therefore, all filter contents must refer to the final state of the playlist.
|
||||
- Added burst buffer to shared stream
|
||||
- Telegram message thread support. thread id can now be appended to chat-id like `chat-id:thread-id`.
|
||||
- Telegram supports markdown generation for structured json messages. simply set `markdown: true` in telegram config.
|
||||
@@ -43,7 +46,7 @@ Output filters are applied after all transformations have been performed, theref
|
||||
# 3.1.7 (2025-10-10)
|
||||
- Added Dark/Bright theme switch
|
||||
- Resource proxy retries failed requests up to three times and respects the `Retry-After` header (falls back to 100 ms wait)
|
||||
to reduce transient HTTP errors (400, 408, 425, 429, 5xx)
|
||||
to reduce transient HTTP errors (400, 408, 425, 429, 5xx)
|
||||
- Added `accept_insecure_ssl_certificates` option in `config.yml` (for serving images over HTTPS without a valid SSL certificate)
|
||||
- VOD streams now use tmdbid from `get_vod_streams` if available, removing the need for `resolve_vod` in STRM generation
|
||||
- Fixed file length issue in STRM generation
|
||||
@@ -63,14 +66,14 @@ to reduce transient HTTP errors (400, 408, 425, 429, 5xx)
|
||||
- Fixed auto EPG for batch inputs
|
||||
- Fixed EPG URL prepare
|
||||
- Content Security Policies configurable via config, default OFF
|
||||
- WebUI Config View editor for config.yml added
|
||||
- WebUI Config View editor for config.yml added
|
||||
|
||||
# 3.1.5 (2025-08-14)
|
||||
- Hot reload for config
|
||||
- New WebUI (currently only readonly)
|
||||
- Fixed shared stream provider connection count
|
||||
- Added hanging client connection release
|
||||
- Added `replace` built-in function for mapper scripts
|
||||
- Added `replace` built-in function for mapper scripts
|
||||
- Added `token_ttl_mins` to web_auth config to define auth token expiration duration.
|
||||
- Staged sources. Side-loading playlist. Load from staged, serve from provider.
|
||||
- Fixed proxy config
|
||||
@@ -87,7 +90,7 @@ to reduce transient HTTP errors (400, 408, 425, 429, 5xx)
|
||||
```
|
||||
station_prefix = template(concat("US_", station, "_PREFIX")),
|
||||
```
|
||||
If we assume the variable `station` contains the value `WINK`,
|
||||
If we assume the variable `station` contains the value `WINK`,
|
||||
this script receives the template with the concatenated name `US_WINK_PREFIX` which should be defined in `templates` section,
|
||||
and assigns it to the variable `station_prefix`.
|
||||
- Extended STRM export functionality with:
|
||||
|
||||
Generated
+3
-3
@@ -1102,7 +1102,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "frontend"
|
||||
version = "3.2.0"
|
||||
version = "3.2.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
@@ -3782,7 +3782,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "shared"
|
||||
version = "3.2.0"
|
||||
version = "3.2.1"
|
||||
dependencies = [
|
||||
"base64",
|
||||
"bitflags 2.10.0",
|
||||
@@ -4331,7 +4331,7 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||
|
||||
[[package]]
|
||||
name = "tuliprox"
|
||||
version = "3.2.0"
|
||||
version = "3.2.1"
|
||||
dependencies = [
|
||||
"arc-swap",
|
||||
"async-compression",
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "tuliprox"
|
||||
version = "3.2.0"
|
||||
version = "3.2.1"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
@@ -20,6 +20,7 @@ use std::sync::atomic::AtomicI8;
|
||||
use std::sync::Arc;
|
||||
use std::time::Duration;
|
||||
use tokio::sync::Mutex;
|
||||
use tokio::task;
|
||||
use tokio_util::sync::CancellationToken;
|
||||
use crate::repository::storage::get_geoip_path;
|
||||
use crate::utils::GeoIp;
|
||||
@@ -210,8 +211,11 @@ pub fn create_cache(config: &Config) -> Option<Arc<Mutex<LRUResourceCache>>> {
|
||||
let cache = Arc::new(Mutex::new(res_cache));
|
||||
let cache_scanner = Arc::clone(&cache);
|
||||
tokio::spawn(async move {
|
||||
let mut c = cache_scanner.lock().await;
|
||||
if let Err(err) = (*c).scan() {
|
||||
let scan_result = {
|
||||
let mut cache = cache_scanner.lock().await;
|
||||
task::block_in_place(|| cache.scan())
|
||||
};
|
||||
if let Err(err) = scan_result {
|
||||
error!("Failed to scan cache {err}");
|
||||
}
|
||||
});
|
||||
@@ -485,4 +489,4 @@ pub struct HdHomerunAppState {
|
||||
pub app_state: Arc<AppState>,
|
||||
pub device: Arc<HdHomeRunDeviceConfig>,
|
||||
pub hd_scan_state: Arc<AtomicI8>,
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -1,10 +1,10 @@
|
||||
[package]
|
||||
name = "frontend"
|
||||
version = "3.2.0"
|
||||
version = "3.2.1"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
shared = { version = "3.2.0", path = "../shared" }
|
||||
shared = { version = "3.2.1", path = "../shared" }
|
||||
chrono = "0"
|
||||
yew = "0.21"
|
||||
yew-router = "0.18"
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "shared"
|
||||
version = "3.2.0"
|
||||
version = "3.2.1"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
|
||||
Reference in New Issue
Block a user