Skip to content

feat/config export v1 payload - #1125

Merged
nicotsx merged 3 commits into
mainfrom
feat/config-transfer-v1-payload
Aug 25, 2026
Merged

feat/config export v1 payload#1125
nicotsx merged 3 commits into
mainfrom
feat/config-transfer-v1-payload

Conversation

@nicotsx

@nicotsx nicotsx commented Aug 25, 2026

Copy link
Copy Markdown
Owner

Stack created with GitHub Stacks CLIGive Feedback 💬

@coderabbitai

coderabbitai Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ad1f2332-935d-4c8a-97c2-314ecb306be3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@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: 42df072f90

ℹ️ 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 app/server/modules/system/config-transfer/graph.ts
Comment thread app/server/modules/system/config-transfer/v1/payload.ts Outdated
Comment thread app/server/modules/system/config-transfer/v1/payload.ts

@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: 8350d11081

ℹ️ 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 app/server/modules/system/config-transfer/graph.ts
Comment thread app/server/modules/system/config-transfer/v1/payload.ts
Comment thread app/server/modules/system/config-transfer/v1/payload.ts Outdated
Comment thread app/server/modules/system/config-transfer/v1/payload.ts
Comment thread app/server/modules/system/config-transfer/graph.ts
@nicotsx
nicotsx force-pushed the feat/config-transfer-v1-payload branch from 8350d11 to 276fa30 Compare August 25, 2026 19:58
@nicotsx
nicotsx merged commit f5f054b into main Aug 25, 2026
13 checks passed
@nicotsx
nicotsx deleted the feat/config-transfer-v1-payload branch August 25, 2026 19:59

@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: 276fa30686

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

skipHostKeyCheck: z.boolean(),
knownHosts: z.string().optional(),
allowLegacySshRsa: z.boolean(),
allowUnsafeSymlinkTargets: z.boolean(),

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 Normalize legacy SFTP configs before encoding

When exporting an SFTP volume created before allowUnsafeSymlinkTargets was added, its persisted JSON has no such property because the field was introduced with a schema default but no lifecycle backfill; these volumes remain usable when parsed through the regular volume schema, which supplies false, but this required boolean makes encodeCurrentConfigTransferPayload reject the raw stored config. Normalize volume configs through the current schema before applying the frozen transfer schema, or make the encoder supply the legacy default.

Useful? React with 👍 / 👎.

repositoryRef: transferRefSchema,
enabled: z.boolean(),
cronExpression: z.string(),
retentionPolicy: retentionPolicySchema.nullable(),

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 Normalize empty retention policies to null

When a transferred schedule contains retentionPolicy: {}, this schema preserves it as a non-null policy even though createSchedule and updateSchedule explicitly normalize an empty policy to null. If the decoded model is materialized as represented, post-backup maintenance treats the empty object as truthy and invokes restic forget without any keep rule, causing the retention task to fail after every backup instead of behaving as a schedule with no retention policy; reject the empty object or normalize it during decoding.

Useful? React with 👍 / 👎.

ref: transferRefSchema,
name: z.string().min(1),
enabled: z.boolean(),
config: notificationConfigSchema,

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 Validate notification targets during import

When a payload contains a generic, Gotify, ntfy, or custom notification target that is malformed or not permitted by WEBHOOK_ALLOWED_ORIGINS, this schema accepts it even though normal destination creation calls assertNotificationTargetAllowed. Materializing the decoded destination leaves an apparently enabled notification that fails the same policy check on every test or delivery, so apply the target policy when importing the destination rather than accepting an unusable configuration.

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