crowdtime-cli 0.17.0__tar.gz → 0.17.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/PKG-INFO +1 -1
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/pyproject.toml +1 -1
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/__init__.py +1 -1
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/skills/crowdtime/SKILL.md +8 -5
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/skills/crowdtime/references/commands.md +6 -4
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/skills/crowdtime/references/workflows.md +4 -2
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/.gitignore +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/LICENSE +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/README.md +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/auth.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/client.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/__init__.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/ai_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/auth_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/billing_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/calendar_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/clients_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/config_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/expense_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/favorites_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/insights_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/invoice_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/log_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/org_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/payroll_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/projects_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/pto_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/report_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/skill_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/tasks_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/team_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/timer_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/timesheet_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/commands/version_cmd.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/config.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/formatters.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/main.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/models.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/oauth.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/resolvers.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/skills/crowdtime/references/pto.md +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/utils.py +0 -0
- {crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/version_check.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: crowdtime-cli
|
|
3
|
-
Version: 0.17.
|
|
3
|
+
Version: 0.17.1
|
|
4
4
|
Summary: AI-powered time tracking CLI — a modern, developer-friendly alternative to Harvest
|
|
5
5
|
Project-URL: Homepage, https://crowdtime.lat
|
|
6
6
|
Project-URL: Documentation, https://crowdtime.lat/docs
|
|
@@ -99,7 +99,7 @@ Other log commands:
|
|
|
99
99
|
ct log list --week # This week's entries
|
|
100
100
|
ct log list --task "Design" --billable # Filter by task + billable
|
|
101
101
|
ct log list --user <user-id> # See team member's entries (manager+)
|
|
102
|
-
ct log list --format csv # CSV
|
|
102
|
+
ct log list --format csv # CSV (rate/amount columns are empty below manager)
|
|
103
103
|
ct log edit <entry-id> --duration 3h # Edit an entry
|
|
104
104
|
ct log edit <entry-id> --task "Research" # Change task
|
|
105
105
|
ct log delete <entry-id> # Delete an entry
|
|
@@ -165,8 +165,8 @@ ct p -a # include archived
|
|
|
165
165
|
#### Project Members
|
|
166
166
|
```bash
|
|
167
167
|
ct projects assignable-users <project-id> # Who can still be added (gives you the user IDs)
|
|
168
|
-
ct projects update-member <project-id> <user-id> --role project_manager --rate 150 # Set per-project role & rate
|
|
169
|
-
ct projects add-members <project-id> --user <uid1> --user <uid2> --role member --rate 120 # Bulk add
|
|
168
|
+
ct projects update-member <project-id> <user-id> --role project_manager --rate 150 # Set per-project role & rate (--rate: manager+)
|
|
169
|
+
ct projects add-members <project-id> --user <uid1> --user <uid2> --role member --rate 120 # Bulk add (--rate: manager+)
|
|
170
170
|
```
|
|
171
171
|
|
|
172
172
|
**Adding someone to a project:** run `assignable-users` first to get the user
|
|
@@ -186,6 +186,8 @@ ct projects add-tasks <project-id> --task <tid1> --task <tid2> # Bulk assign ta
|
|
|
186
186
|
|
|
187
187
|
**Note:** `--client` on `projects create` accepts a client name. If the client doesn't exist yet, it will be auto-created.
|
|
188
188
|
|
|
189
|
+
**Rates and money are manager+ only.** Hourly rates, budgets, fixed fees, billing types/modes, billable amounts, invoices and retainers are visible and editable only by account managers, admins and owners. For viewers, members and project managers the API returns these fields as `null`, silently ignores them on writes, and returns 403 on invoice/retainer endpoints. Don't offer rate or money operations to those roles, and never try to infer rates from other data.
|
|
190
|
+
|
|
189
191
|
**Billing types** (*what* is charged): `time_and_materials` (default) or `fixed_fee` (an agreed price via `--fixed-fee`, billed instead of logged hours).
|
|
190
192
|
|
|
191
193
|
**Billing modes** (*how* an hourly rate resolves, T&M only): `custom` (default), `per_task` (rate per task), `per_person` (rate per person).
|
|
@@ -567,5 +569,6 @@ Read `references/commands.md` for the full reference of every command, subcomman
|
|
|
567
569
|
14. **Expenses** — when the user mentions expenses, receipts, or purchases, use the `ct expense` commands. Always suggest a category and ask if the expense is billable. If recording a billable expense for a client project, always set `--project` and `--billable` so it gets included automatically when the client is invoiced
|
|
568
570
|
15. **Invoices include expenses** — when creating invoices with `ct invoice create --period`, billable expenses from the same period are automatically included as line items. Mention this to users so they know their expenses will appear on the invoice. Invoices can be grouped by `project`, `task`, `user`, `date`, or `none` via `--group-by`. Line items support discounts (`--discount-type fixed|percent|hours --discount-value N`)
|
|
569
571
|
16. **Client contacts** — use `ct clients contacts` and `ct clients add-contact` to manage multiple contacts per client. Set `--primary` for the main point of contact. Use `--receives-invoices` to flag contacts who should receive invoice emails
|
|
570
|
-
17. **
|
|
571
|
-
18. **
|
|
572
|
+
17. **Rate confidentiality** — rates, budgets, amounts, invoices and retainers are manager+ only (see Projects). If a member, viewer or project manager asks about rates or billed amounts, tell them it's restricted to account managers instead of trying workarounds
|
|
573
|
+
18. **Payroll** — payroll data is strictly confidential. Only HR managers, admins, and owners can access it. When the user asks about payroll, always use the `ct payroll` commands. Compensation types are `hourly` (rate × hours) or `salary` (fixed monthly). Rate changes are always effective from the 1st of a month. The payroll workflow is: configure compensation → run liquidation → approve → mark paid
|
|
574
|
+
19. **PTO / Time Off** — always construct explicit `ct pto ...` commands. Never use magic routing or `ct ai parse` for PTO. Before requesting PTO, always confirm the exact date range with the user — date ambiguity is the most common source of mistakes. Use `YYYY-MM-DD` for a single day or `YYYY-MM-DD:YYYY-MM-DD` for a range. `ct pto request` creates a pending entry (the requester's approvers are notified by email); `ct pto add <user>` requires project manager+ with the subject in their scope, and creates an auto-approved entry. When reconciling missing hours for a user, always check `ct pto summary --user <email> --from X --to Y` before assuming the hours are missing. See `references/pto.md` for the full status lifecycle, kind definitions, and LLM guidance.
|
|
@@ -383,7 +383,7 @@ ct log list [options]
|
|
|
383
383
|
| `--format` | string | Output: `table`, `json`, `csv` |
|
|
384
384
|
| `--json` | flag | JSON output |
|
|
385
385
|
|
|
386
|
-
CSV output includes financial columns: `hourly_rate`, `billable_amount`.
|
|
386
|
+
CSV output includes financial columns: `hourly_rate`, `billable_amount`. They are empty for viewers, members and project managers (rates and amounts are manager+ only).
|
|
387
387
|
|
|
388
388
|
Endpoint: `GET /time/`
|
|
389
389
|
|
|
@@ -969,6 +969,8 @@ ct projects create NAME [options]
|
|
|
969
969
|
>
|
|
970
970
|
> When the fee is billed, that project's hours in the period are linked to the fee line and marked invoiced, so they stop showing as outstanding work without ever being charged twice. Until then they stay uninvoiced and available.
|
|
971
971
|
|
|
972
|
+
> **Confidentiality:** rates, budgets, fixed fees, billing settings, billable amounts, invoices and retainers are manager+ only. For viewers, members and project managers these fields come back `null`, are ignored on writes, and invoice/retainer endpoints return 403.
|
|
973
|
+
|
|
972
974
|
**Billing modes** — *how* an hourly rate is resolved (T&M only):
|
|
973
975
|
| Mode | Description |
|
|
974
976
|
|------|-------------|
|
|
@@ -1064,7 +1066,7 @@ ct projects members PROJECT_ID [--json]
|
|
|
1064
1066
|
| `PROJECT_ID` | string (required) | Project slug or UUID |
|
|
1065
1067
|
| `--json` | flag | Output as JSON |
|
|
1066
1068
|
|
|
1067
|
-
Lists all members assigned to a project with their project role, org role, hourly rate, and user ID.
|
|
1069
|
+
Lists all members assigned to a project with their project role, org role, hourly rate, and user ID. Rates are `null` below manager.
|
|
1068
1070
|
|
|
1069
1071
|
**Usage examples:**
|
|
1070
1072
|
```bash
|
|
@@ -1106,7 +1108,7 @@ ct projects update-member PROJECT_ID USER_ID [options]
|
|
|
1106
1108
|
| `PROJECT_ID` | string (required) | Project slug or UUID |
|
|
1107
1109
|
| `USER_ID` | string (required) | User UUID or email |
|
|
1108
1110
|
| `--role` | string | Project-level role override (e.g. `project_manager`, `member`, `viewer`) |
|
|
1109
|
-
| `--rate` | float | Hourly rate override for this project member |
|
|
1111
|
+
| `--rate` | float | Hourly rate override for this project member (manager+; ignored for other roles) |
|
|
1110
1112
|
| `--json` | flag | JSON output |
|
|
1111
1113
|
|
|
1112
1114
|
Updates a member's project-specific role and/or rate. The `--role` sets a `project_role` that overrides the member's org-level role for this project only. Response includes `effective_role`, `org_role`, and `org_hourly_rate` for context.
|
|
@@ -1144,7 +1146,7 @@ ct projects add-members PROJECT_ID --user USER_ID [--user USER_ID ...] [--role R
|
|
|
1144
1146
|
| `PROJECT_ID` | string (required) | Project slug or UUID |
|
|
1145
1147
|
| `--user` | string (repeatable, required) | User UUID or email (specify multiple times) |
|
|
1146
1148
|
| `--role` | string | Project role for all added members |
|
|
1147
|
-
| `--rate` | float | Hourly rate for all added members |
|
|
1149
|
+
| `--rate` | float | Hourly rate for all added members (manager+; ignored for other roles) |
|
|
1148
1150
|
| `--json` | flag | JSON output |
|
|
1149
1151
|
|
|
1150
1152
|
Bulk-adds multiple members to a project in a single operation.
|
|
@@ -241,6 +241,8 @@ ct favorites start <id> -n "Sprint 42 planning"
|
|
|
241
241
|
|
|
242
242
|
Set up a complete project with billing configuration, task presets, and team members in one go.
|
|
243
243
|
|
|
244
|
+
> Rates, budgets and billing settings are manager+ only. For project managers and below, `--rate`, `--budget`, `--fixed-fee` and `--billing-mode` are ignored by the API — omit them.
|
|
245
|
+
|
|
244
246
|
```bash
|
|
245
247
|
# 1. Create the project with a billing mode
|
|
246
248
|
ct projects create "Website Redesign" --client "Acme Corp" --budget 200 --code WR -b --billing-mode per_person
|
|
@@ -264,7 +266,7 @@ ct projects switch website-redesign
|
|
|
264
266
|
|
|
265
267
|
### Configure Per-Person Billing
|
|
266
268
|
|
|
267
|
-
When using `per_person` billing mode, each team member can have their own rate on the project.
|
|
269
|
+
When using `per_person` billing mode, each team member can have their own rate on the project. Requires manager+.
|
|
268
270
|
|
|
269
271
|
```bash
|
|
270
272
|
# Create project with per-person billing
|
|
@@ -406,7 +408,7 @@ ct org revoke-invite <invitation-id>
|
|
|
406
408
|
# Change a member's role
|
|
407
409
|
ct org update-member <user-id> --role project_manager
|
|
408
410
|
|
|
409
|
-
# Update hourly rate
|
|
411
|
+
# Update hourly rate (admin+; rates are never shown to members, viewers or project managers)
|
|
410
412
|
ct org update-member <user-id> --rate 150
|
|
411
413
|
|
|
412
414
|
# Update weekly capacity
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{crowdtime_cli-0.17.0 → crowdtime_cli-0.17.1}/src/crowdtime_cli/skills/crowdtime/references/pto.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|