Skip to content

feat(accounts): 支持指定固定 Bucket,避免依赖 ListBuckets - #4

Merged
qianmoQ merged 1 commit into
devlive-community:devfrom
wansanai:codex/pinned-bucket
Sep 28, 2026
Merged

qianmoQ merged 1 commit into
devlive-community:devfrom
wansanai:codex/pinned-bucket

Conversation

@wansanai

Copy link
Copy Markdown
Contributor

变更说明

本 PR 为账号新增可选的固定 Bucket 配置,用于支持仅有单个 Bucket 权限、无法调用 ListBuckets 的访问凭证。

实现方式

  • 账号记录持久化 pinned_bucket 字段,并兼容已有 SQLite 数据。
  • 通过通用 PinnedBucketProvider 包装现有 Provider:根目录直接返回已知的 Bucket,不触发 ListBuckets;其他对象、前缀与 Bucket 级操作保持原有行为。
  • 应用启动、切换账号、保存账号、删除账号后,固定 Bucket 账号会直接落到对应 Bucket 根目录。
  • 账号表单支持编辑固定 Bucket;修改该字段无需重新输入凭证。清空字段则恢复普通多桶账号的发现流程。
  • 将固定 Bucket 根视为账号的有效根目录,因此向上导航、面包屑返回根目录时不会回到无法访问的全局 Bucket 列表。

兼容性

  • 未配置固定 Bucket 时,现有账号行为不变。
  • 固定 Bucket 只影响根目录发现,不重写 Bucket 内路径。
  • Provider 自身的权限错误保持原样透出,便于用户识别真实的访问范围问题。

验证

  • cargo fmt --all -- --check
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo test --workspace --all-features
  • pnpm install --frozen-lockfile(app 目录)
  • pnpm build(app 目录,含 TypeScript 检查和 Vite 构建)

Rust 全部检查和测试通过;前端构建成功。Vite 输出的超过 500 kB chunk 警告是现有构建体积提示,不是本次改动引入的错误。

Add an optional account-level pinned bucket backed by SQLite. A generic provider wrapper exposes the known bucket without bucket-list discovery, and the app opens directly at the pinned bucket root on startup, account switch, save, or account removal. The pinned root is treated as the account's effective root for upward navigation. Other calls remain unchanged and continue to surface vendor permission errors directly. The bucket is editable without re-entering credentials and an empty value preserves normal account discovery.
@qianmoQ
qianmoQ merged commit e949b76 into devlive-community:dev Sep 28, 2026
6 checks 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.

2 participants