Skip to content

feat(ios): include statistics in Cloud terms and respect local use - #87

Merged
frahlg merged 4 commits into
mainfrom
feat/project-statistics-consent
Oct 17, 2026
Merged

frahlg merged 4 commits into
mainfrom
feat/project-statistics-consent

Conversation

@frahlg

@frahlg frahlg commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

The new FTW Cloud terms include statistics for every Cloud user. Remove the separate statistics switch and send one owner grant with the exact Cloud policy. Show fields, retention, group rules, Sourceful's access and deletion in Swedish and English. Earlier answers do not accept this version; each home requires an explicit answer, and opening the screen cannot auto-grant another home.

Choosing local use pauses Cloud on this phone, closes its connections and keeps its keys and cache. Reading the terms keeps that pause; only the explicit accept action may reconnect and finish the exact policy at the box. Another paired home remains selectable while this home is paused. The pause survives restart, foreground and network recovery. Owners can end the whole Cloud service for a home; that stops app and assistant remote access and requests deletion. Local-only statistics remain a separate Yes/No on the box, without remote access. The app waits for a compatible box and never claims that saving terms starts hourly collection. Collection still needs the reviewed C8 decision and service policy activation.

Paired with srcfl/ftw#1700, srcfl/ftw-cloud#32 and srcfl/ftw-web#23. Version 0.4.10. No App Store release, real-home consent or collection activation has occurred.

Validation: all 802 Swift package tests pass (536 FTWKit, 266 shared). iPhone 17 Pro simulator build passes. Checked the actual Swedish and English views, dark mode and maximum text. At large text sizes the actions scroll with the terms so both choices remain readable. New regressions cover one bundled grant, older-policy rejection, per-home choices, guest limits, failure persistence and no new socket after declining and restarting. The simulator uses only the local demo and sends no household reports. Existing chart actor-isolation warnings remain outside this change. Final simulator review also confirms that reading terms keeps Cloud paused, declining returns to the paused screen, and the home menu remains available. The empty local demo offers pairing there; tests cover opening another stored home without clearing the first home's pause.

@frahlg
frahlg marked this pull request as ready for review October 17, 2026 15:05
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-17T15:07:59.866830Z d658ee0 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d658ee0ebf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread appleApp/FTW/Cloud/CloudGate.swift Outdated
} description: {
Text(CloudWords.text("This phone has stopped using FTW Cloud. Your box keeps working locally."))
} actions: {
Button(CloudWords.text("Review Cloud terms")) { consent.review(); app.resumeCloud() }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep Cloud paused while reviewing terms

When a paused user taps “Review Cloud terms,” resumeCloud() immediately clears the persisted pause and opens a Cloud connection before the user accepts anything. If they only intended to read the terms—or the app is terminated before they choose “Use the box locally” again—the next launch reconnects automatically despite their prior local-only choice. Present the review while remaining paused and resume Cloud only after explicit acceptance.

Useful? React with 👍 / 👎.

Comment thread appleApp/FTW/Cloud/CloudGate.swift Outdated
content
.sheet(isPresented: Binding(get: { !app.needsPairing && consent.shouldAsk(app.site) }, set: { _ in })) {
Group {
if app.cloudPaused {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve access to other homes while one home is paused

For a phone paired with multiple homes, pausing the current home replaces the entire HomeView, including the title menu that contains the home switcher. The only remaining action resumes Cloud for the paused home, so users cannot open another unpaused home without first undoing their local-only choice. Keep the app shell or another home-selection control available while rendering the paused state.

Useful? React with 👍 / 👎.

@frahlg
frahlg merged commit 574bcdb into main Oct 17, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant