Skip to content

Commit 17e133b

Browse files
authored
docs: plan privacy policy link for #436 (#481)
1 parent 464202e commit 17e133b

2 files changed

Lines changed: 109 additions & 0 deletions

File tree

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Handoff: Issue #436 Privacy Policy Link
2+
3+
## Current Status
4+
5+
Issue #436 remains externally blocked. No app code was changed because the final
6+
hosted privacy policy URL does not exist in the issue context yet.
7+
8+
## Blockers
9+
10+
- #439 must confirm backend deletion and retention behavior.
11+
- #434 must produce approved privacy policy text using that backend truth.
12+
- #435 must host the approved policy at a public HTTPS URL and record that URL.
13+
14+
## Prepared Repo Artifact
15+
16+
`plans/436-privacy-policy-link-plan.md` documents the exact implementation path,
17+
affected files, verification, and acceptance evidence needed once #435 is done.
18+
19+
## Human Tasks Remaining
20+
21+
1. Complete #439 with backend owner confirmation of account/data deletion and
22+
retention behavior.
23+
2. Complete #434 with product/legal approval of the final privacy policy text.
24+
3. Complete #435 by hosting that approved policy at a public HTTPS URL that does
25+
not require login and is not a PDF.
26+
4. Re-run #436 implementation using the final URL from #435.
27+
5. Verify the link in an Android release-equivalent build.
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Issue #436: In-App Privacy Policy Link Plan
2+
3+
## Status
4+
5+
Externally blocked as of 2026-05-10.
6+
7+
Issue #436 requires the final hosted privacy policy HTTPS URL. That URL is owned
8+
by prerequisite issue #435, which is still open and depends on approved privacy
9+
policy text from #434. #434 depends on backend deletion and retention truth from
10+
#439. Do not implement a placeholder URL or close #436 until those prerequisites
11+
are complete.
12+
13+
## Parent Track Context
14+
15+
Parent issue #464 orders the privacy/account-deletion work as:
16+
17+
1. #438 - in-app account deletion flow: closed.
18+
2. #439 - backend account and data deletion behavior: open, manual.
19+
3. #434 - draft and approve the privacy policy: open, manual.
20+
4. #435 - host the privacy policy on a public HTTPS URL: open, manual.
21+
5. #436 - add an in-app privacy policy link: open, blocked.
22+
23+
The next action for the track is to complete #439, then #434, then #435. Once
24+
#435 records the final URL, #436 can be implemented and verified.
25+
26+
## Existing Repo Context
27+
28+
- My Page/settings UI lives in `lib/presentation/my_page/my_page_screen.dart`.
29+
- The screen already has an app settings section with `_SettingTile` rows.
30+
- `url_launcher` is already declared in `pubspec.yaml`.
31+
- Localization source files are `lib/l10n/app_en.arb` and
32+
`lib/l10n/app_ko.arb`; generated files are committed under `lib/l10n/`.
33+
- Existing My Page coverage is currently focused on account deletion modal tests
34+
in `test/presentation/my_page/delete_user_modal_test.dart`; there is no full
35+
`MyPageScreen` widget test yet.
36+
37+
## Decision-Complete Implementation Plan
38+
39+
Use this plan after #435 provides the final public HTTPS URL:
40+
41+
1. Add a single source of truth for the URL.
42+
- Preferred location: a small constant near other app constants, for example
43+
`lib/core/constants/legal_urls.dart`.
44+
- Store only the final `https://...` URL from #435.
45+
- Do not use staging, draft, document-edit, PDF, login-gated, or placeholder
46+
URLs.
47+
48+
2. Add localized labels.
49+
- Add `privacyPolicy` to `lib/l10n/app_en.arb` with value
50+
`Privacy Policy`.
51+
- Add `privacyPolicy` to `lib/l10n/app_ko.arb` with value
52+
`개인정보 처리방침`.
53+
- Run `flutter gen-l10n` so `app_localizations.dart`,
54+
`app_localizations_en.dart`, and `app_localizations_ko.dart` stay in sync.
55+
56+
3. Add the visible My Page entry.
57+
- In `lib/presentation/my_page/my_page_screen.dart`, add a `_SettingTile`
58+
for `AppLocalizations.of(context)!.privacyPolicy`.
59+
- Place it in the App Settings section unless product/design says it belongs
60+
under Account Settings.
61+
- Use `url_launcher` with `LaunchMode.externalApplication` so the link opens
62+
in a browser or system handler.
63+
- Fail gracefully if launch returns false or throws; do not crash the screen.
64+
65+
4. Add or update widget coverage.
66+
- Add a My Page widget test if practical, or a focused testable helper if the
67+
current screen dependencies make full pumping brittle.
68+
- Verify the localized entry is visible in Korean and English.
69+
- Verify tapping the entry attempts to launch exactly the final HTTPS URL.
70+
71+
5. Verify Android release behavior.
72+
- Run `flutter analyze`.
73+
- Run the new or updated widget test.
74+
- On an Android release-equivalent build, tap the My Page privacy policy
75+
entry and confirm it opens the final public HTTPS URL.
76+
77+
## Acceptance Evidence To Attach To #436 Or PR
78+
79+
- Final URL from #435.
80+
- Screenshot or recording of the My Page entry.
81+
- Android release-build result showing the URL opens.
82+
- Test command output for analyzer and relevant widget tests.

0 commit comments

Comments
 (0)