Skip to content

feat(settings): add adaptive settings and support - #412

Open
veryCrunchy wants to merge 11 commits into
mainfrom
feat/settings-navigation
Open

feat(settings): add adaptive settings and support#412
veryCrunchy wants to merge 11 commits into
mainfrom
feat/settings-navigation

Conversation

@veryCrunchy

@veryCrunchy veryCrunchy commented Aug 21, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the mobile Settings mega-list with an overview and focused section navigation
  • keep persistent desktop categories at normal widths and use list/detail navigation in compact windows
  • share account, appearance, sync, device, desktop, help, and administration section UI across form factors
  • promote Support to a dedicated Requests, New report, and Privacy workspace
  • keep private support capability URLs behind Android and desktop adapters and use safe local record IDs in common UI
  • preserve uncertain reply drafts and require refresh before another send

Safety and privacy

  • nothing uploads without explicit confirmation
  • support capability URLs are no longer exposed to common presentation state
  • private report and reply drafts are not stored with rememberSaveable
  • account and retention checks remain inside the support intake adapter
  • origin validation remains strict

Validation

Validated on the dedicated build host at exact head fef16a0e7a781175fcdc1a987d9057824c1d4325:

  • bash tools/check-repository.sh
  • focused SettingsWorkspaceTest and JvmSupportIntakeTest
  • complete :ui:desktopTest
  • Android debug Kotlin compilation and unit tests
  • Android instrumentation-test Kotlin compilation
  • :androidApp:assembleDebug

The website production build passed before the authorized CI/CD capture refresh. The final head passes the repository's generated-capture and manifest contracts.

Release-marked Debian packaging reached jpackage and compiled the source, but the dedicated build host does not have the required external fakeroot command. No .deb was produced locally. Hosted packaging remains the authoritative package check.

Documentation

The Android and desktop getting-started guides describe the new Settings navigation and Support paths. The user-facing changelog fragment references this PR.

@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 14:20 Destroyed
@obiente-cloud

obiente-cloud Bot commented Aug 21, 2026

Copy link
Copy Markdown

Obiente preview

NC Native · 780f2c5d7362 · Ready

Open preview

View in Obiente

Obiente updates this comment as the preview changes.

@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 14:20 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 14:35 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 14:35 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 14:41 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 15:04 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 15:09 Destroyed
@veryCrunchy
veryCrunchy marked this pull request as ready for review August 21, 2026 15:15

@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: 37a7a8c3fe

ℹ️ 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 ui/src/commonMain/kotlin/dev/obiente/nextcloudnative/app/AccountSettingsScreen.kt Outdated
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 15:41 Destroyed
@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 15:46 Destroyed

@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: 532f49252f

ℹ️ 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".

@obiente-cloud
obiente-cloud Bot temporarily deployed to Obiente Preview / PR #412 / NC Native August 21, 2026 16:01 Destroyed

@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: 89ea85c0e8

ℹ️ 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".

var selectedSectionName by rememberSaveable(session.serverUrl, session.loginName) {
mutableStateOf<String?>(null)
}
val supportDrafts = remember(session.serverUrl, session.loginName) { SupportSettingsDraftState() }

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 Persist reply recovery beyond the Settings composition

When Android performs a system-initiated activity recreation or process restoration, this ordinary remember creates a fresh SupportSettingsDraftState. If a reply previously returned ReplyDeliveryUnknown, the only refresh-required guard is therefore lost; after a failed automatic refresh, Support enables sending again and the user can retype and duplicate the non-idempotent reply. The final hoist fixes section navigation, but this composition-local ownership is fresh evidence that account-scoped recovery still needs a state holder that survives recreation.

AGENTS.md reference: AGENTS.md:L460-L463

Useful? React with 👍 / 👎.

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