Wine Finder
Search the build
-
62b92a02026-05-19 persist search-results sort selection to localStorage -
c5daa132026-05-19 guard static-file routes against .bak/.pre-/.orig snapshot leaks -
9713e542026-05-19 add rel=noopener noreferrer to all target=_blank external links -
56cffaa2026-05-13 snapshot: 1 file(s) changed, ~1 modified -
79a7f7a2026-05-11 security: untrack .env (still present on disk, just not in git) -
0ca865d2026-05-07 tighten .gitignore: add missing standing-rule patterns (node_modules/ .env* *.log dist/ .next/) -
bda79ae2026-05-06 initial scaffold (gitify-all 2026-05-06)
Authors
- Steve7
Agents used
Skills used
- /catch1
Creative ideas + design notes
62b92a0 · 2026-05-19 · persist search-results sort selection to localStorage
Hydrate the saved value before the first render and save on every change, matching the universal sort-persistence rule used across the DW family. Wrapped in try/catch in case localStorage is disabled. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
c5daa13 · 2026-05-19 · guard static-file routes against .bak/.pre-/.orig snapshot leaks
Express middleware returns 404 for any path ending in .bak, .pre-*, .orig, .swp, .tmp (with optional suffix), regardless of whether the file exists in public/. Also broadens .gitignore to cover the same patterns and fixes a literal-\\n malformed first line that was leaving node_modules/ etc untracked unless re-listed below. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9713e54 · 2026-05-19 · add rel=noopener noreferrer to all target=_blank external links
Covers wine result links in wine-search.html and verify.html plus window.open in app.js. Prevents reverse-tabnabbing / opener leak. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
79a7f7a · 2026-05-11 · security: untrack .env (still present on disk, just not in git)
.env was committed before .gitignore exclusion was in place. File remains on disk and functional; this stops future commits and prevents the next git push (if any remote is ever added) from leaking secrets. No remote currently configured, so no public exposure occurred.
File tree
- .gitignore
- CAMERA_SEARCH_IMPLEMENTATION.md
- CLAUDE.md
- COMPLETE_SYSTEM_SUMMARY.md
- DEPLOYMENT_SUMMARY.md
- FRENCH_WINE_DATA_SOURCES.md
- PUPPETEER_AUTOMATION_SUMMARY.md
- README.md
- ROBOFLOW_SETUP.md
- SETUP.md
- TEST_RESULTS.md
- WINE_LABEL_AUTHENTICATION_GUIDE.md
- crawler/wine-crawler.js
- data/NEW-wines-2025-11-14T06-01-51-319Z.json
- data/NEW-wines-2025-11-15T06-01-29-020Z.json
- data/NEW-wines-2025-11-16T06-01-31-227Z.json
- data/crawl-2025-11-14T06-01-51-246Z.json
- data/crawl-2025-11-15T06-01-29-007Z.json
- data/crawl-2025-11-16T06-01-31-221Z.json
- data/crawl-2025-11-17T06-01-13-868Z.json
- data/crawl-2025-11-18T06-01-25-919Z.json
- data/crawl-2025-11-19T06-01-12-643Z.json
- data/expand_wine_dataset.js
- data/import_massive_wine_data.js
- data/metadata.zip
- data/seen_wines.json
- data/test-dynamic-cards.js
- data/wine_enthusiast_sample.csv
- data/wine_metadata.csv
- data/wine_sample_data.json
- data/winemag-data-130k-v2.csv
- package-lock.json
- package.json
- public/css/login.css
- public/css/styles.css
- public/favicon.svg
- public/index.html
- public/js/app.js
- public/js/dynamic-search.js
- public/js/login.js
- public/js/verify.js
- public/login.html
- public/test.html
- public/verify.html
- public/wine-search.html
- roboflow-public.json
- routes/auth.js
- routes/history.js
- routes/scraper.js
- routes/verification.js
- scripts/get-roboflow-key-playwright.js
- scripts/get-roboflow-key.js
- scripts/setup-wine-cron.js
- server.js
- services/googleSheets.js
- services/handbagLibraryScraper.js
- services/handbagRedditScraper.js
- services/handbagUniversityData.js
- services/historicalWineData.js
- services/klWineScraper.js
- services/newItemsTracker.js
- services/slackNotifier.js
- services/totalWineScraper.js
- services/ucDavisAVAScraper.js
- services/vivinoScraper.js
- services/wineAggregator.js
- services/wineEnthusiastScraper.js
- services/wineLabelVerifier.js
- services/wineSensedScraper.js
- services/xWinesScraper.js
- setup-google-sheets.js
- tasks/prd-new-feature-for-wine-finder.md
- test-crawler.js
- test-dynamic-cards.js
- test-parallel-both.js
- test-responsive.js
- test-search.js
- test-setup.js
- test-verify-ui.js
- test.html