Repository navigation
SearchANDGraph 1.2.26
SearchANDGraph — Release Notes
Date: 2025-12-18
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/Noneinstead of converting them to empty lists. This letsconfig.pydefaults remain in effect unless the user provides explicit values. - Safer overrides:
main_refactored.pyonly 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()) storesnullfor 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
ScanRequesttomainnow passesNonefor unset collections soconfig.pydefaults 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-18
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-18)
- UI settings behavior: the desktop UI now preserves intentionally unset fields as
null/Noneinstead of converting them to empty lists. This letsconfig.pydefaults remain in effect unless the user provides explicit values. - Safer overrides:
main.pyonly 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()) storesnullfor 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
ScanRequesttomainnow passesNonefor unset collections soconfig.pydefaults 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-18)
- 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.
How to validate locally
Or start the desktop app and confirm that blank Preferred/Blacklisted inputs keep the config.py defaults.