Commit graph

3 commits

Author SHA1 Message Date
le king fu
9e0adaf5c9 feat(feedback): integrate Feedback Hub widget in Settings (#68)
Add an in-app feedback form that POSTs to the centralized Feedback Hub
(feedback.lacompagniemaximus.com/api/feedback) with app_id "simpl-liste".

- src/services/feedback.ts: dependency-free client (pure helpers + fetch),
  strict context whitelist, 2000-char cap, stable error codes
- src/hooks/useFeedback.ts: idle/sending/success/error state machine
- src/components/FeedbackModal.tsx: RN bottom-sheet with char counter,
  opt-in navigation context and opt-in identity (Loi 25: both unchecked)
- Settings > About: new "Send feedback" button above the kept mailto entry
- i18n fr/en feedback block
- tests/feedback.test.mjs: node:test execution coverage of the client;
  smoke.test.cjs static guards (app_id, endpoint, cap, import-free)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 19:43:12 -04:00
le king fu
fccd7faf95 perf(widget): cut expand/collapse tap latency (native patches + light headless path)
- Upgrade react-native-android-widget 0.20.1 -> 0.21.0 (expedited
  WorkManager upstream, clickable-area ripple corner fix)
- patch-package on the lib:
  1. WIDGET_CLICK bypasses WorkManager and runs the headless JS task
     directly on the ReactHost (goAsync + WorkManager fallback), removing
     two Room writes + worker dispatch from every tap and WorkManager
     init from the cold path
  2. WEBP_LOSSLESS (effort 0) encoding instead of PNG q100 on API 30+,
     several times faster for widget-sized bitmaps
  3. Copy identical light/dark collection item files instead of
     compressing every row bitmap twice when the config is single-mode
- Extract dependency-light src/services/widgetState.ts so the headless
  click handler no longer pulls DB/drizzle/date-fns at cold start
- Smoke tests: lock the light import graph + patch/postinstall wiring
- Bump v1.6.5 (versionCode 17) for the preview build

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 16:41:47 -04:00
le king fu
cfedde0fa6 test(smoke): add non-regression smoke for uuid + package overrides
Plain-node script invoked via `npm test`. Catches the buffer-bounds
regression area from GHSA-w5hq-g745-h8pq (uuid v3/v5 with buffer arg)
and validates package.json structure. No jest/Expo runtime needed —
runs in seconds, suitable for the defenseur-auto chain to gate auto-PRs.
2026-05-02 11:49:13 -04:00