Skip to content

feat: support concurrent chunk uploads#319

Closed
TorstenDittmann wants to merge 1 commit into
masterfrom
concurrent-chunk-uploads-1-9-x
Closed

feat: support concurrent chunk uploads#319
TorstenDittmann wants to merge 1 commit into
masterfrom
concurrent-chunk-uploads-1-9-x

Conversation

@TorstenDittmann
Copy link
Copy Markdown
Contributor

This PR updates the SDK to support concurrent chunk uploads.

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 21, 2026

Greptile Summary

This PR bumps the CLI from v21.0.0 to v21.1.0 and adds three new service command groups (advisor, presences, usage) generated from the updated Appwrite API spec. It also adjusts existing project and projects commands to match the new API surface.

  • New services: advisor (list/get/delete reports and insights), presences (CRUD + usage), and usage (list-events, list-gauges) are registered in cli.ts and implemented as new files.
  • Breaking changes in projects.ts: appwrite projects get is removed and projects create loses nine optional fields (description, logo, url, and all legal-* fields); the new project get (singular, no --project-id) is not a drop-in replacement.
  • Breaking rename in project.ts: update-deny-canonical-email-policy is renamed to update-deny-aliased-email-policy with no alias or deprecation shim, which will break existing scripts on upgrade.

Confidence Score: 3/5

The new service files are safe, but two hard breaking changes in projects.ts and project.ts will break existing scripts on upgrade without any migration path.

The removal of appwrite projects get and nine projects create options, plus the rename of update-deny-canonical-email-policy, will cause hard failures in any CI or automation that relied on those commands. The new advisor, presences, and usage service files look correct and follow established patterns.

lib/commands/services/projects.ts and lib/commands/services/project.ts warrant a second look to confirm the removals and renames are intentional and whether aliasing or migration guidance is needed.

Important Files Changed

Filename Overview
lib/commands/services/projects.ts Removes projects get command and strips multiple optional fields from projects create — breaking changes for existing users
lib/commands/services/project.ts Adds new project get command; renames update-deny-canonical-email-policy to update-deny-aliased-email-policy (breaking rename); adds advisor to the supported services list
lib/commands/services/advisor.ts New file adding advisor commands; imports unused success symbol
lib/commands/services/presences.ts New file adding presences commands; follows established patterns correctly
lib/commands/services/usage.ts New file adding usage commands; imports unused success symbol
cli.ts Registers three new commands (presences, advisor, usage) in the CLI entry point
package.json Package version bumped to 21.1.0; no dependency version changes

Comments Outside Diff (2)

  1. lib/commands/services/projects.ts, line 68-80 (link)

    P1 Breaking removal of projects get and projects create optional fields

    The projectsGetCommand (appwrite projects get --project-id <id>) was removed entirely, and projectsCreateCommand lost nine optional fields (--description, --logo, --url, --legal-name, --legal-country, --legal-state, --legal-city, --legal-address, --legal-tax-id). Any script or CI pipeline that calls appwrite projects get will now fail with "unknown command". Similarly, any automation passing legal/branding metadata to projects create will silently drop those values. The new project get command (singular) does not accept a --project-id parameter so it cannot serve as a drop-in replacement for retrieving an arbitrary project by ID.

  2. lib/commands/services/project.ts, line 1300-1316 (link)

    P1 Breaking rename of update-deny-canonical-email-policy

    The command was renamed to update-deny-aliased-email-policy without keeping the old name as an alias. Any script invoking appwrite project update-deny-canonical-email-policy will receive a "unknown command" error after this release. If backwards compatibility matters, a hidden alias or a deprecation notice pointing to the new name would prevent silent breakage in existing automation.

Reviews (1): Last reviewed commit: "feat: support concurrent chunk uploads" | Re-trigger Greptile

Comment on lines +10 to +16
actionRunner,
commandDescriptions,
success,
parse,
parseBool,
parseInteger,
} from "../../parser.js";
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 The success symbol is imported but never called in this file — every action uses parse(...) instead. Since strict mode is off this won't break the build, but it is dead code. The same pattern exists in lib/commands/services/usage.ts.

Suggested change
actionRunner,
commandDescriptions,
success,
parse,
parseBool,
parseInteger,
} from "../../parser.js";
actionRunner,
commandDescriptions,
parse,
parseBool,
parseInteger,
} from "../../parser.js";

Comment on lines +10 to +17
actionRunner,
commandDescriptions,
success,
parse,
parseBool,
parseInteger,
} from "../../parser.js";
import { Usage } from "@appwrite.io/console";
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 Same unused success import as in advisor.ts — it is never invoked in any of the command actions.

Suggested change
actionRunner,
commandDescriptions,
success,
parse,
parseBool,
parseInteger,
} from "../../parser.js";
import { Usage } from "@appwrite.io/console";
actionRunner,
commandDescriptions,
parse,
parseBool,
parseInteger,
} from "../../parser.js";
import { Usage } from "@appwrite.io/console";

@TorstenDittmann
Copy link
Copy Markdown
Contributor Author

Closing in favor of focused PR #320.

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