Commit 2fd8202f authored by Your Name's avatar Your Name

Bump runtime version to 1.0.32

parent f3f20822
This diff is collapsed.
...@@ -14,7 +14,7 @@ from typing import List, Dict, Any ...@@ -14,7 +14,7 @@ from typing import List, Dict, Any
# Build configuration # Build configuration
BUILD_CONFIG = { BUILD_CONFIG = {
'app_name': 'MbetterClient', 'app_name': 'MbetterClient',
'app_version': '1.0.30', 'app_version': '1.0.32',
'description': 'Cross-platform multimedia client application', 'description': 'Cross-platform multimedia client application',
'author': 'MBetter Team', 'author': 'MBetter Team',
'entry_point': 'main.py', 'entry_point': 'main.py',
...@@ -797,4 +797,4 @@ def main(): ...@@ -797,4 +797,4 @@ def main():
if __name__ == '__main__': if __name__ == '__main__':
main() main()
\ No newline at end of file
This diff is collapsed.
...@@ -217,7 +217,7 @@ Examples: ...@@ -217,7 +217,7 @@ Examples:
parser.add_argument( parser.add_argument(
'--version', '--version',
action='version', action='version',
version='MbetterClient 1.0.30' version='MbetterClient 1.0.32'
) )
# Timer options # Timer options
......
...@@ -4,7 +4,7 @@ MbetterClient - Cross-platform multimedia client application ...@@ -4,7 +4,7 @@ MbetterClient - Cross-platform multimedia client application
A multi-threaded application with video playback, web dashboard, and REST API integration. A multi-threaded application with video playback, web dashboard, and REST API integration.
""" """
__version__ = "1.0.30" __version__ = "1.0.32"
__author__ = "MBetter Project" __author__ = "MBetter Project"
__email__ = "dev@mbetter.net" __email__ = "dev@mbetter.net"
__description__ = "Cross-platform multimedia client with video overlay and web dashboard" __description__ = "Cross-platform multimedia client with video overlay and web dashboard"
...@@ -19,4 +19,4 @@ __all__ = [ ...@@ -19,4 +19,4 @@ __all__ = [
'__author__', '__author__',
'__email__', '__email__',
'__description__' '__description__'
] ]
\ No newline at end of file
...@@ -262,7 +262,7 @@ class ApiConfig: ...@@ -262,7 +262,7 @@ class ApiConfig:
# Request settings # Request settings
verify_ssl: bool = True verify_ssl: bool = True
user_agent: str = "MbetterClient/1.0r30" user_agent: str = "MbetterClient/1.0r32"
max_response_size_mb: int = 100 max_response_size_mb: int = 100
# Additional API client settings # Additional API client settings
...@@ -403,7 +403,7 @@ class AppSettings: ...@@ -403,7 +403,7 @@ class AppSettings:
timer: TimerConfig = field(default_factory=TimerConfig) timer: TimerConfig = field(default_factory=TimerConfig)
# Application settings # Application settings
version: str = "1.0.30" version: str = "1.0.32"
debug_mode: bool = False debug_mode: bool = False
dev_message: bool = False # Enable debug mode showing only message bus messages dev_message: bool = False # Enable debug mode showing only message bus messages
debug_messages: bool = False # Show all messages passing through the message bus on screen debug_messages: bool = False # Show all messages passing through the message bus on screen
...@@ -605,4 +605,4 @@ class AppSettings: ...@@ -605,4 +605,4 @@ class AppSettings:
(project_root / "assets").mkdir(exist_ok=True) (project_root / "assets").mkdir(exist_ok=True)
(project_root / "templates").mkdir(exist_ok=True) (project_root / "templates").mkdir(exist_ok=True)
(project_root / "data").mkdir(exist_ok=True) (project_root / "data").mkdir(exist_ok=True)
(project_root / "logs").mkdir(exist_ok=True) (project_root / "logs").mkdir(exist_ok=True)
\ No newline at end of file
...@@ -230,7 +230,7 @@ class WebDashboard(ThreadedComponent): ...@@ -230,7 +230,7 @@ class WebDashboard(ThreadedComponent):
def inject_globals(): def inject_globals():
return { return {
'app_name': 'MbetterClient', 'app_name': 'MbetterClient',
'app_version': '1.0.30', 'app_version': '1.0.32',
'current_time': time.time(), 'current_time': time.time(),
} }
...@@ -880,4 +880,4 @@ def create_app(db_manager: DatabaseManager, config_manager: ConfigManager, ...@@ -880,4 +880,4 @@ def create_app(db_manager: DatabaseManager, config_manager: ConfigManager,
"""Factory function to create Flask app (for testing)""" """Factory function to create Flask app (for testing)"""
dashboard = WebDashboard(None, db_manager, config_manager, settings) dashboard = WebDashboard(None, db_manager, config_manager, settings)
dashboard.initialize() dashboard.initialize()
return dashboard.app return dashboard.app
\ No newline at end of file
# MbetterClient v1.0.32
Cross-platform multimedia client application
## Installation
1. Extract this package to your desired location
2. Run the executable file
3. The application will create necessary configuration files on first run
## System Requirements
- **Operating System**: Linux 6.12.15-amd64
- **Architecture**: x86_64
- **Memory**: 512 MB RAM minimum, 1 GB recommended
- **Disk Space**: 100 MB free space
## Configuration
The application stores its configuration and database in:
- **Windows**: `%APPDATA%\MbetterClient`
- **macOS**: `~/Library/Application Support/MbetterClient`
- **Linux**: `~/.config/MbetterClient`
## Web Interface
By default, the web interface is available at: http://localhost:5001
Default login credentials:
- Username: admin
- Password: admin
**Please change the default password after first login.**
## Support
For support and documentation, please visit: https://git.nexlab.net/mbetter/mbetterc
## Version Information
- Version: 1.0.32
- Build Date: sissy
- Platform: Linux-6.12.15-amd64-x86_64-with-glibc2.42
import os
import re
import sys
from pathlib import Path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
VERSION_FILES = [
Path('build.py'),
Path('main.py'),
Path('mbetterclient/__init__.py'),
Path('mbetterclient/config/settings.py'),
Path('mbetterclient/web_dashboard/app.py'),
]
def test_all_runtime_version_strings_are_bumped_to_1_0_32():
missing = []
stale = []
for path in VERSION_FILES:
content = path.read_text()
if '1.0.32' not in content and '1.0r32' not in content:
missing.append(str(path))
if '1.0.31' in content or '1.0r31' in content:
stale.append(str(path))
assert not missing, f"missing 1.0.32/r32 in: {missing}"
assert not stale, f"stale 1.0.31/r31 in: {stale}"
def test_repo_has_no_active_1_0_31_or_1_0r31_runtime_strings():
allowed_paths = {
'README.md',
'CHANGELOG.md',
'HEADLESS_STREAMING_IMPLEMENTATION.md',
'DOCUMENTATION.md',
'test_version_bump_1031.py',
}
hits = []
for path in Path('.').rglob('*'):
if not path.is_file():
continue
if path.suffix not in {'.py', '.md', '.txt', '.js', '.html'}:
continue
if str(path) in allowed_paths or path.name in allowed_paths:
continue
try:
content = path.read_text()
except Exception:
continue
if re.search(r'1\.0\.31|1\.0r31', content):
hits.append(str(path))
assert not hits, f"unexpected active 1.0.31/r31 references: {hits}"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment