Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,41 @@ This project follows [Semantic Versioning](https://semver.org/).

---

## v4.5.0 - 2026-02-15

### Added
- **Client-side search and pagination to logs view**
- Added search bar to filter log entries by keyword
- Added filter buttons to show all logs, activity logs, or security logs
- Added pagination controls with customizable page size (10, 25, 50, 100 entries per page)
- Log entries are now categorized as 'activity' or 'security' types for easy filtering
- **System theme auto-detection**
- Added "Auto (System)" option to theme menu
- Automatically detects dark/light mode preference via CSS `prefers-color-scheme`
- Dynamically switches theme when system preference changes
- Auto-detects system theme on first visit when no saved preference exists
- **Last login tracking**
- Added `last_login` column to user database
- Display last login timestamp in admin user management panel
- Automatically updates timestamp on successful login
- Shows "Never" for users who haven't logged in yet

### Changed
- Enhanced logs.html template with interactive filtering and pagination controls
- Improved user experience when viewing large log files
- Updated theme.js with system theme detection and dynamic switching
- Updated manage_users.html to display last login information

### Fixed
- Fixed scrolling issue on About, Logs, Tuner Management, and Manage Users pages
- Scoped overflow-y rule to guide page only to prevent breaking other pages
- Added database temp files (*.db-shm, *.db-wal) to .gitignore
- Fixed LOG_PATH permission issues in test environments
- Added accessibility improvements (aria-labels) to search inputs
- Added guard against division by zero in pagination logic

---

## v4.4.0 - 2026-02-05

### Added
Expand Down
2 changes: 1 addition & 1 deletion INSTALL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Installation Guide

**Version:** v4.4.0
**Version:** v4.5.0
**Last Updated:** 2026-02-05

---
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# 📺 RetroIPTVGuide v4.4.0
# 📺 RetroIPTVGuide v4.5.0

<p align="center">
<a href="https://github.com/thehack904/RetroIPTVGuide">
<img src="https://img.shields.io/badge/version-vv4.4.0-blue?style=for-the-badge" alt="Version">
<img src="https://img.shields.io/badge/version-v4.5.0-blue?style=for-the-badge" alt="Version">
</a>
<a href="https://github.com/thehack904/RetroIPTVGuide/pkgs/container/retroiptvguide">
<img src="https://img.shields.io/badge/GHCR-ghcr.io/thehack904/retroiptvguide-green?style=for-the-badge&logo=docker" alt="GHCR">
Expand Down
11 changes: 6 additions & 5 deletions ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This document tracks **planned upgrades** and ideas for improving the IPTV Flask
These are **not yet implemented**, partially implemented, or completed in previous releases.

---
# Current Version: **v4.4.0 (2026-02-05)**
# Current Version: **v4.5.0 (2026-02-15)**

## 🔮 Feature Upgrades

Expand All @@ -21,7 +21,7 @@ These are **not yet implemented**, partially implemented, or completed in previo

### 2. Logging & Monitoring
- [ ] Move logs from flat file (`activity.log`) into **SQLite DB** for better querying.
- [ ] Add filtering and pagination in logs view.
- [x] Add filtering and pagination in logs view. *(v4.5.0)*
- [ ] Add system health checks (tuner reachability, XMLTV freshness).
- [x] Admin log management: clear logs + size indicator (v2.3.1).
- [x] Post-install HTTP service verification in Pi installer (v3.1.0).
Expand All @@ -45,7 +45,7 @@ These are **not yet implemented**, partially implemented, or completed in previo
- [x] Add manage_users.html (v4.0.0)
- [-] Role-based access control (basic admin-only gates exist, no RBAC roles).
- [ ] Add email or 2FA support for login.
- [ ] Show last login time in admin panel.
- [x] Show last login time in admin panel. *(v4.5.0)*
- [ ] User role/channel restrictions.

---
Expand All @@ -58,11 +58,12 @@ These are **not yet implemented**, partially implemented, or completed in previo
- [x] Modular CSS and JS added (v4.1.0).
- [x] Introduced new JS modules: `auto-scroll.js`, `tuner-settings.js`.
- [x] Mobile responsive layout and navigation (v4.2.0).
- [ ] Add dark/light theme auto-detect.
- [x] Add dark/light theme auto-detect. *(v4.5.0)*
- [x] Frozen header timeline to prevent scrolling with channel listing (v4.3.0).
- [x] About page under Settings menu (v2.3.1).
- [x] Added new mobile-specific CSS and JS (v4.3.0).
- [x] Added new templates: change_tuner.html, manage_users.html, logs.html. (v4.3.0)
- [x] Added new templates: change_tuner.html, manage_users.html, logs.html. (v4.3.0)
- [x] Fixed scrolling on About, Logs, Tuner Management, and Manage Users pages. *(v4.5.0)*

---

Expand Down
4 changes: 2 additions & 2 deletions app.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# app.py — merged version (features from both sources)
APP_VERSION = "v4.4.0"
APP_RELEASE_DATE = "2026-02-05"
APP_VERSION = "v4.5.0"
APP_RELEASE_DATE = "2026-02-15"

from flask import Flask, render_template, request, redirect, url_for, flash, session, jsonify, abort
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
Expand Down
2 changes: 1 addition & 1 deletion retroiptv_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# License: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)

set -euo pipefail
VERSION="4.4.0"
VERSION="4.5.0"
TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
LOGFILE="retroiptv_${TIMESTAMP}.log"
exec > >(tee -a "$LOGFILE") 2>&1
Expand Down
2 changes: 1 addition & 1 deletion retroiptv_rpi.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
VERSION="4.4.0"
VERSION="4.5.0"
# RetroIPTVGuide Raspberry Pi Installer (Headless, Pi3/4/5)
# Installs to /home/iptv/iptv-server for consistency with Debian/Windows
# Logs to /var/log/retroiptvguide/install-YYYYMMDD-HHMMSS.log
Expand Down
4 changes: 2 additions & 2 deletions retroiptv_windows.bat
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ mode con: cols=160 lines=50

REM ============================================================
REM RetroIPTVGuide Windows Unified Installer / Uninstaller
REM Version: v4.4.0
REM Version: v4.5.0
REM License: Creative Commons BY-NC-SA 4.0
REM ============================================================

Expand Down Expand Up @@ -31,7 +31,7 @@ if /i "%choice%"=="Y" (

:continue
setlocal
set "VERSION=4.4.0"
set "VERSION=4.5.0"
set "REPO_URL=https://github.com/thehack904/RetroIPTVGuide.git"
set "ZIP_URL=https://github.com/thehack904/RetroIPTVGuide/archive/refs/heads/main.zip"
set "INSTALL_DIR=%~dp0RetroIPTVGuide"
Expand Down
4 changes: 2 additions & 2 deletions retroiptv_windows.ps1
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<#
RetroIPTVGuide Windows Installer/Uninstaller
Filename: retroiptv_windows.ps1
Version: 4.4.0
Version: 4.5.0

License: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
https://creativecommons.org/licenses/by-nc-sa/4.0/
Expand Down Expand Up @@ -55,7 +55,7 @@ if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdent
$ErrorActionPreference = 'Stop'
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'

$VERSION = "4.4.0"
$VERSION = "4.5.0"
$ScriptDir = Split-Path -Parent -Path $MyInvocation.MyCommand.Path
Set-Location $ScriptDir

Expand Down