Repository navigation
SearchANDGraph 1.2.27
SearchANDGraph — Release Notes
Date: 2025-12-20
Overview
SearchANDGraph crawls the web (optionally using web search), extracts entities and relations using NLP, builds a knowledge graph, and produces interactive visualizations. The desktop application (desktop_app.py) provides a GUI to run scans, stream logs, and view the generated graph exports.
What's New
UI settings behavior: the desktop UI now preserves intentionally unset fields as null/None instead of converting them to empty lists. This lets config.py defaults remain in effect unless the user provides explicit values.
Safer overrides: main_refactored.py only applies preferred/blacklist overrides when the UI supplies at least one meaningful (non-empty) source. Empty inputs are treated as "no override."
Persistence clarity: settings serialization (UserSettings.to_dict()) stores null for intentionally unset source lists (rather than []), making it clear when a user left a setting unspecified versus explicitly clearing it.
GUI → core call path: the handoff from ScanRequest to main now passes None for unset collections so config.py defaults are respected.
Behavioral notes for users
If you want to override default sources, provide at least one non-empty source in the UI. Leaving the Preferred/Blacklisted fields blank will keep the defaults from config.py.
If you intentionally want to clear sources, provide an explicit value (e.g., a single empty-clearing token) — the UI now distinguishes unset vs. explicit values.
SearchANDGraph — Release Notes
Date: 2025-12-20
Overview
SearchANDGraph crawls the web (optionally using web search), extracts entities and relations using NLP, builds a knowledge graph, and produces interactive visualizations. The desktop application (desktop_app.py) provides a GUI to run scans, stream logs, and view the generated graph exports.
What's New (2025-12-20)
UI settings behavior: the desktop UI now preserves intentionally unset fields as null/None instead of converting them to empty lists. This lets config.py defaults remain in effect unless the user provides explicit values.
Safer overrides: main.py only applies preferred/blacklist overrides when the UI supplies at least one meaningful (non-empty) source. Empty inputs are treated as "no override."
Persistence clarity: settings serialization (UserSettings.to_dict()) stores null for intentionally unset source lists (rather than []), making it clear when a user left a setting unspecified versus explicitly clearing it.
GUI → core call path: the handoff from ScanRequest to main now passes None for unset collections so config.py defaults are respected.
Behavioral notes for users
If you want to override default sources, provide at least one non-empty source in the UI. Leaving the Preferred/Blacklisted fields blank will keep the defaults from config.py.
If you intentionally want to clear sources, provide an explicit value (e.g., a single empty-clearing token) — the UI now distinguishes unset vs. explicit values.
Developer notes (2025-12-20)
Key files changed:
desktop_app.py — ScanRequest, UserSettings, options parsing and persistence.
main.py — apply overrides only when meaningful UI values are provided.
One-line changelog
Preserve UI unset fields as null and apply source overrides only when UI provides meaningful values.
Added link to SmartProxy
How to validate locally
Or start the desktop app and confirm that blank Preferred/Blacklisted inputs keep the config.py defaults.