Context
The Story Share portal (/story_shares) serves an audience that includes domestic-violence survivors. The live WordPress site (stories.awbw.org) has a prominent "Safety Exit" button that lets a visitor leave the site instantly.
An initial JS implementation (a safety_exit Stimulus controller doing window.open + location.replace) was built and then removed from the portal-parity PR (#2148) to keep it lean — and because a plain no-JS link gives false security (it navigates away but doesn't scrub browser history, so the back button still returns to the story).
What's needed
- A Safety Exit control that meaningfully protects the visitor:
- Navigates away to a neutral site (e.g. weather.com) immediately.
- Scrubs/replaces history so the back button doesn't return to the portal (
location.replace, and ideally overwrite prior entries).
- Optionally opens a decoy tab and/or clears the current tab's content first.
- Keyboard shortcut (the WP site / common patterns use a quick key) and a fixed, always-visible button on every portal page, including mobile.
- Accessibility: clearly labeled, high-contrast, reachable without scrolling.
- Document the inherent limitation (client-side JS cannot fully erase browser history) and decide whether that's acceptable or whether to add guidance.
Notes
Prior implementation for reference is in the git history of PR #2148 (app/frontend/javascript/controllers/safety_exit_controller.js, since removed).
Context
The Story Share portal (
/story_shares) serves an audience that includes domestic-violence survivors. The live WordPress site (stories.awbw.org) has a prominent "Safety Exit" button that lets a visitor leave the site instantly.An initial JS implementation (a
safety_exitStimulus controller doingwindow.open+location.replace) was built and then removed from the portal-parity PR (#2148) to keep it lean — and because a plain no-JS link gives false security (it navigates away but doesn't scrub browser history, so the back button still returns to the story).What's needed
location.replace, and ideally overwrite prior entries).Notes
Prior implementation for reference is in the git history of PR #2148 (
app/frontend/javascript/controllers/safety_exit_controller.js, since removed).