Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: Doist/todoist-cli
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v1.69.3
Choose a base ref
...
head repository: Doist/todoist-cli
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v1.70.0
Choose a head ref
  • 2 commits
  • 14 files changed
  • 2 contributors

Commits on May 29, 2026

  1. feat(project): add project share to invite a collaborator (#373)

    ## What
    
    Adds `td project share <project-ref> <email>` to invite a collaborator
    to a project — closes the gap alongside the existing `project join` and
    `project collaborators` commands.
    
    Closes #372.
    
    ```
    td project share <project-ref> <email> [--role guest|member|admin] [--message <msg>] [--auto-invite] [--json] [--dry-run]
    ```
    
    ## Behaviour
    
    - **Personal / shared projects** — shares via the `share_project` sync
    command. `--role` / `--auto-invite` don't apply and are ignored with a
    warning.
    - **Workspace projects** — `--role guest|member|admin` (default
    `member`) maps to the workspace role. If the email isn't already a
    workspace member, the command errors with a hint, unless `--auto-invite`
    is passed — which invites them to the workspace first (via
    `inviteWorkspaceUsers`) and then shares.
    - `--message` attaches an optional invitation message.
    - `--dry-run` previews (including whether an auto-invite would fire)
    without mutating; `--json` outputs the result.
    
    ## Notes
    
    - Inviting is only available through the Sync API `share_project`
    command (there's no REST endpoint), so this adds a `shareProject` sync
    wrapper in `lib/api/projects-sync.ts`.
    - Role vocabulary is the real workspace roles
    (`guest`/`member`/`admin`), not the `viewer`/`editor` in the original
    issue text.
    - Skill content + `SKILL.md` updated and in sync.
    - Share tests live in a new `project.share.test.ts`, and the shared
    `createProjectProgram` test helper was extracted for reuse.
    
    ## Verification
    
    - `npm run type-check` ✅
    - `npm run check` (lint + format) ✅
    - `npm run check:skill-sync` ✅
    - `npm test` — full suite passes (1672)
    scottlovegrove authored May 29, 2026
    Configuration menu
    Copy the full SHA
    514d0fd View commit details
    Browse the repository at this point in the history
  2. chore(release): 1.70.0 [skip ci]

    ## [1.70.0](v1.69.3...v1.70.0) (2026-05-29)
    
    ### Features
    
    * **project:** add `project share` to invite a collaborator ([#373](#373)) ([514d0fd](514d0fd))
    doist-release-bot[bot] committed May 29, 2026
    Configuration menu
    Copy the full SHA
    01abd38 View commit details
    Browse the repository at this point in the history
Loading