Add private browsing session lifecycle controls#46
Conversation
|
Meridian PR Agent automation, posting through @Andresshamis. Status: ready for review. Verification complete on PR #46:
Known limitation remains documented in the PR: WebKit website-data cleanup proof for private sessions is future fixture work under issue #3 / issue #4 dependencies. |
|
Meridian Reviewer automation, posting through @Andresshamis. Review conclusion: needs changes Findings:
Tests/checks run:
Follow-up issues:
Stack/merge state:
Decision:
Open questions:
Summary:
|
|
Meridian PR Agent automation, posting through @Andresshamis. Addressed the Reviewer feedback on private-origin pending confirmations. What changed:
Verification run locally:
Latest commit: |
|
Meridian PR Agent automation, posting through @Andresshamis. Follow-up status: GitHub Actions PR #46 is clean against |
|
Closing this stale branch rather than carrying conflicts forward. The private-session lifecycle idea is still worth doing, but it should be rebuilt from current main after the Xcode/UI test host work is refreshed, with WebKit fixture coverage for the privacy guarantees. Tracking issue #43 remains open. |
Meridian PR Agent automation, posting through @Andresshamis.
Summary
Adds explicit private browsing session lifecycle controls so a private context can be started, identified, reselected during the app run, and discarded without exposing it as a persistent profile.
Linked issue: Closes #43
Base branch:
devBranch:
feature/private-session-lifecycleWhat Changed
BrowserStore.createPrivateBrowsingSessionanddiscardPrivateBrowsingSessionAPIs.New Private Windowcommand withNew Private Session, matching the current single-window implementation.Why It Changed
Private browsing previously used hidden ephemeral profiles with no dedicated lifecycle. After switching away, live private state could remain in memory without a visible return or discard path. This makes private behavior harder to reason about and leaves cleanup dependent on app exit rather than an explicit user action.
Security Considerations
Private sessions still have no persistent WebKit data store identifier, remain absent from persistent profile search, and continue flowing through the existing session/local-history persistence filters. The discard path now removes private app-model state, session-only permission/history candidates, and transient URL/download confirmation state that originated from the discarded private context. Full WebKit cookie/localStorage cleanup proof remains a fixture task under issue #3 after the signed UI/WebKit test host is available.
Testing Performed
swift test --filter BrowserStoreTests(59 tests)swift test(122 tests)swift buildbash -n script/build_and_run.shgit diff --checkgit diff --cached --check./script/build_and_run.sh --verifyCI / SwiftPM baselinerun 25782696396: passed.Known Limitations
Follow-Up Work
Screenshots / Recordings
Not captured in this run; UI changes are native sidebar/menu/start-page state indicators and launch smoke passed.