Commit graph

19 commits

Author SHA1 Message Date
c1f462d209 fix(os): parse /etc/os-release line-by-line instead of regex
All checks were successful
Build and Release .deb / build-deb (push) Successful in 22s
- pct exec returns stdout differently than local cat
- Line-by-line parsing is more robust across LXC boundaries
- Handles quotes correctly
2026-05-13 04:10:01 +02:00
f0f59f0468 fix(os): read DEBIAN_VERSION_FULL from /etc/os-release first
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Check DEBIAN_VERSION_FULL (ex: 13.4) as primary source
- Fallback to VERSION, then VERSION_ID, then /etc/debian_version
2026-05-13 04:05:45 +02:00
d90f74dd8f fix(os): use VERSION_ID from /etc/os-release for full version number in LXC
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
2026-05-13 03:59:47 +02:00
2d339cc397 feat(os): show full version number from /etc/debian_version
All checks were successful
Build and Release .deb / build-deb (push) Successful in 22s
- Use lsb_release -is/-cs for name and codename
- Use /etc/debian_version for full version (e.g. 12.9)
- Display format: 'Debian GNU/Linux 12.9 (bookworm)'
2026-05-13 03:52:10 +02:00
6e707da98d feat(ui): display OS name and version in SummaryPanel
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Add scan_os() to detect OS via lsb_release or /etc/os-release
- Store os_info in cache and ScanResult
- Display OS info in SummaryPanel below the target name
2026-05-13 03:07:28 +02:00
3bb213a00d fix(cve): parse HTML instead of non-existent JSON API
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Debian Security Tracker has no public JSON API for individual CVEs
- Now fetches and parses the HTML page directly
- Searches for 'bookworm ... fixed' pattern in the vulnerability table
- Cache files changed from .json to .html
2026-05-13 02:56:16 +02:00
9c4e40505b fix(summary): enable CVE button when non-fixable CVEs exist
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Use cve_total instead of cve_count to determine button disabled state
- Allows viewing all CVEs even when none are fixable
2026-05-13 02:38:58 +02:00
86eda73eb9 feat(cve): show all CVEs with fixable indicator in list screen
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- filter_actionable_cves now marks all CVEs with 'fixable' boolean
- cve_list in cache contains ALL CVEs (not just actionable ones)
- CVEListScreen adds 'Corrigeable' column with 🟢/🔴 indicator
- Sidebar counter still shows only actionable CVEs (cve_count)
2026-05-13 02:35:15 +02:00
e22f416500 feat(cve): filter actionable CVEs via Debian Security Tracker API
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Add filter_actionable_cves() that queries security-tracker.debian.org
- Cache API responses in /tmp/full-updater-cache/cve-api/
- Use ThreadPoolExecutor(max_workers=10) for parallel API calls
- cve_count now shows only actionable CVEs (with fixed_version)
- cve_total stored for info, shown as 'CVE: X (Y non corrigeables)'
2026-05-13 02:27:22 +02:00
af9e061ab5 fix(upgrade): remove call_from_thread in async worker, call log_panel.write directly
All checks were successful
Build and Release .deb / build-deb (push) Successful in 22s
2026-05-13 02:11:08 +02:00
eed84f36e8 fix(log_panel): rename self.log to self._log_widget to avoid Textual property conflict
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
2026-05-13 02:07:25 +02:00
f4db16327f fix(cache): purge cache only once at startup, not on every write
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Add clear_cache() called once in on_mount
- ensure_cache_dir() no longer deletes existing files
- This fixes the issue where only the last target's cache survived
- Add widget.refresh() calls to force UI updates
2026-05-13 02:00:48 +02:00
8f623e1df6 fix(ui): remove reactive vars in SummaryPanel, use direct widget update
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Replace reactive attributes with direct widget updates in set_target
- Delay _select_target by 0.1s after pop_screen to ensure DOM is stable
- Remove summary.refresh() calls that interfere with direct updates
2026-05-13 01:54:57 +02:00
07e84ae69f fix(ui): use DEFAULT_CSS with selectors in detail screens
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Replace inline CSS string with DEFAULT_CSS class attribute
- Add proper Textual CSS selectors (ScreenName, #toolbar, DataTable)
- Remove invalid align at root level
2026-05-13 01:48:00 +02:00
1715a6cf01 fix(ui): add proper CSS layout for detail screens
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Add dock: top and fixed height for toolbar buttons
- DataTable now fills remaining space with height: 1fr
- Add borders and padding for better visual separation
2026-05-13 01:44:28 +02:00
76eb75d4a6 refactor: sequential scan, screens for details, new sidebar layout
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Scan sequential with asyncio.to_thread for proper Textual integration
- Use push_screen/pop_screen for package/CVE lists (no more mount/remove)
- Sidebar now shows 'APT X CVE X' with right-aligned indicators
- Loader uses black circles () for pending tasks
- Removed unused package_table.py and cve_table.py
2026-05-13 01:36:45 +02:00
2237d83ddd fix(ui,backend): async scan with asyncio.gather, fix CVE back button focus
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Replace ThreadPoolExecutor with asyncio.gather + asyncio.to_thread
- Use @work async worker for proper Textual integration
- Add table.focus() after mount to ensure button events are received
- Remove all call_from_thread calls (now in main thread)
2026-05-13 01:26:18 +02:00
8f7cb33a9c fix(ui,backend): parallel scan, fix DataTable init, force refresh
All checks were successful
Build and Release .deb / build-deb (push) Successful in 21s
- Use ThreadPoolExecutor for parallel scanning of all targets
- Fix PackageTable and CVETable crash by initializing columns in compose()
- Force widget refresh after scan completion to update counters
2026-05-13 01:18:08 +02:00
184b0e6033 Initial commit 2026-05-12 22:36:36 +02:00