Bumps minimatch from 3.1.3 → 3.1.5 and 9.0.6 → 9.0.9 to address
GHSA-7r86-cg39-jmmj (high severity ReDoS via combinatorial backtracking
in matchOne() with multiple non-adjacent GLOBSTAR segments).
Both instances are transitive dev dependencies of eslint and
typescript-eslint — no runtime exposure.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Bumps minimatch from 3.1.3 → 3.1.5 and 9.0.6 → 9.0.9 to address
GHSA-7r86-cg39-jmmj (high severity ReDoS via combinatorial backtracking
in matchOne() with multiple non-adjacent GLOBSTAR segments).
Both instances are transitive dev dependencies of eslint and
typescript-eslint — no runtime exposure.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add LICENSE (GNU Affero General Public License v3.0)
- Add NOTICE file with SearXNG attribution for borrowed scraping patterns
in google.py (arc_id, GSA user-agent, HTML selectors) and bing.py
(PERE pagination, base64 redirect decoding, CAPTCHA detection)
- Add CONTRIBUTING.md with contribution guidelines and license info
- Add SPDX-License-Identifier headers to all Python source files
- Add AGPL-3.0 license badge and License section to README.md
SearXNG is licensed under AGPL-3.0-or-later; this project follows suit
as it incorporates techniques derived from SearXNG's search engines.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add LICENSE (GNU Affero General Public License v3.0)
- Add NOTICE file with SearXNG attribution for borrowed scraping patterns
in google.py (arc_id, GSA user-agent, HTML selectors) and bing.py
(PERE pagination, base64 redirect decoding, CAPTCHA detection)
- Add CONTRIBUTING.md with contribution guidelines and license info
- Add SPDX-License-Identifier headers to all Python source files
- Add AGPL-3.0 license badge and License section to README.md
SearXNG is licensed under AGPL-3.0-or-later; this project follows suit
as it incorporates techniques derived from SearXNG's search engines.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Vite dev server: proxy /search to backend with path rewrite to /api/search
- FastAPI: add GET+POST /search route that 307-redirects to /api/search
(307 preserves the original HTTP method, so POST stays POST)
- Fixes 404 for clients calling /search instead of /api/search
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reverted the isHomeWithBg useEffect and min-h-dvh changes that broke
the background image. Back to the working state from commit 6ca4763.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Reverted fixed/bg-black approach (fixed + z-index:-10 made bg invisible)
- Background image stays absolute inset-0 as before (works correctly)
- Only the <html> element background-color is set to #000 via useEffect
when the home page has an active background image; this fills the iOS
rubber-band overscroll zones without affecting the visible content
- Reverted global overscroll-behavior-y:none (too aggressive)
- min-h-dvh kept for correct iOS dynamic viewport sizing
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- background image changed from absolute to fixed so it covers the
full viewport including iOS rubber-band overscroll zones
- useEffect sets html/body background-color to #000 while the home
page with a background image is active, then clears it on teardown
- container uses min-h-dvh (dynamic viewport height) for correct iOS
full-screen sizing
- overscroll-behavior-y: none added globally to suppress pull-to-
refresh bounce that could reveal white behind the page
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Hoist SettingsModal above all conditional page branches
- Previously missing from Gallery and Bookmarks early-returns
- Single settingsModal element shared across all four page views
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- New AppHeader component: logo on left, optional center slot, menu icon on right
- Clicking menu icon opens dropdown: Settings, Bookmarks, Backgrounds, API Docs
- Dropdown closes on outside click and Escape key
- Transparent mode for home page when background image is active
- All pages (home, results, gallery, bookmarks) now use AppHeader consistently
- Results page: search bar in header center slot, category tabs in separate bar below
- Home page: flex-col layout, content vertically centered in remaining space
- Footer simplified to just the app name
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Settings + nav icons (Bookmarks, Backgrounds, API Docs) moved to top-right corner
- Category toggle (Web / Images) added below search bar, Web selected by default
- New image refresh button moved to bottom-right corner (icon only on mobile)
- Image source link anchored to bottom-left corner
- Footer links removed in favour of icon buttons in top-right
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Bookmark icon on every web and image search result card
- Bookmark toggle in image lightbox viewer
- Dedicated /bookmarks page with All/Web/Images filter tabs
- Web bookmarks as cards, image bookmarks in masonry grid
- Full CRUD API: GET/POST /api/bookmarks, DELETE by id/url
- SQLite persistence in shared database
- Links in homepage footer and results page footer
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Save original Unsplash/Picsum URL as .url sidecar file alongside each image
- Track source_url in API responses (BackgroundResponse, BackgroundListItem)
- Homepage footer shows 'Image source' link when background is active
- Gallery shows 'Source' link on hover overlay for each image
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fetch random nature/landscape image from Unsplash (picsum fallback)
- Auto-refresh with configurable interval (1 min to 1 day, default 30 min)
- Save every downloaded image to DATA_DIR/backgrounds/ for history
- New 'Background' tab in Settings: enable/disable toggle + refresh presets
- 'New image' button on homepage to manually fetch fresh background
- /backgrounds gallery page with masonry layout and lazy loading
- Background settings (bg_enabled, bg_refresh_minutes) persisted in SQLite
- Homepage adapts text colors when background is active
- Added backend/data/ to .gitignore, removed tracked DB file
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add width/height fields to ImageResult model
- Extract dimensions from DuckDuckGo and Bing engine responses
- Show size (e.g. 1920×1080) on card hover overlay and in lightbox details
- Prevent horizontal scrolling/panning on mobile (overflow-x: hidden + overscroll-behavior)
- Allow pinch-to-zoom via viewport meta (user-scalable=yes, maximum-scale=5)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Builds Docker image on every push and PR to master
- Pushes to ghcr.io/wahyd4/hey-search on master commits
- Tags: latest + commit SHA
- Uses GitHub Actions cache for faster builds
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- DB path now uses DATA_DIR env var (defaults to backend/data/ for local dev)
- Dockerfile sets DATA_DIR=/app/data with VOLUME declaration
- Docker run examples show -v mount for persistence across restarts
- /app/data stores SQLite DB (engines, excluded domains, cache settings)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>