taskair-cli 1.0.0
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.
- package/README.md +186 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1635 -0
- package/package.json +65 -0
package/README.md
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# TaskAir CLI ✦
|
|
2
|
+
|
|
3
|
+
> Space-themed, privacy-first task management CLI with zero-knowledge, client-side end-to-end encryption.
|
|
4
|
+
|
|
5
|
+
TaskAir CLI is the developer's command-line interface for the TaskAir ecosystem. It features a stunning space-themed terminal UI built with [Ink](https://github.com/vadimdemedes/ink) and React, zero-knowledge client-side E2E encryption using AES-256-GCM, and seamless cloud synchronization with Supabase.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 🚀 Installation
|
|
10
|
+
|
|
11
|
+
Install the package globally via npm:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g taskair-cli
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 🪐 Setup & Configuration
|
|
20
|
+
|
|
21
|
+
Before managing your tasks, you need to point the CLI to your TaskAir Web server and set up your encryption master password.
|
|
22
|
+
|
|
23
|
+
### 1. Configure the CLI
|
|
24
|
+
|
|
25
|
+
Run the configuration command and follow the prompts:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
taskair configure
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
You will be prompted to enter:
|
|
32
|
+
* **API URL**: The URL of your running TaskAir server (e.g., `http://localhost:4321` or your production domain).
|
|
33
|
+
* **Email**: Your TaskAir account email address.
|
|
34
|
+
* **Master Password**: Your local master password. This password is used client-side to derive the encryption keys for E2E encryption. *It is never sent to the server.*
|
|
35
|
+
|
|
36
|
+
### 2. Log In
|
|
37
|
+
|
|
38
|
+
Log in to establish a session with the remote backend:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
taskair login
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 3. Verify Session
|
|
45
|
+
|
|
46
|
+
You can check your configuration and login status at any time:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
taskair whoami
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## ⌨️ Command Reference
|
|
55
|
+
|
|
56
|
+
TaskAir CLI provides a complete set of commands to manage, filter, analyze, and sync your tasks.
|
|
57
|
+
|
|
58
|
+
### 1. Add a Task
|
|
59
|
+
|
|
60
|
+
Create a new task with options for priority, due date, and tags.
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
taskair add "Launch satellite orbit phase 1" --priority high --tags "space,work" --due "2026-07-01"
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
* **Alias**: `-a`
|
|
67
|
+
* **Options**:
|
|
68
|
+
* `-p, --priority <level>`: Priority level (`high` | `medium` | `low`, default: `medium`).
|
|
69
|
+
* `-d, --due <datetime>`: Due date in ISO 8601 or `YYYY-MM-DD` format.
|
|
70
|
+
* `-t, --tags <tags>`: Comma-separated list of tags.
|
|
71
|
+
|
|
72
|
+
### 2. List Tasks
|
|
73
|
+
|
|
74
|
+
View your tasks in a table or list format with optional status and priority filtering.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# List all pending high priority tasks
|
|
78
|
+
taskair list --status pending --priority high
|
|
79
|
+
|
|
80
|
+
# List tasks in JSON format for scripting/exporting
|
|
81
|
+
taskair list --format json
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
* **Alias**: `-l`
|
|
85
|
+
* **Options**:
|
|
86
|
+
* `-s, --status <status>`: Filter by status (`pending` | `in_progress` | `completed` | `all`, default: `all`).
|
|
87
|
+
* `-p, --priority <priority>`: Filter by priority (`high` | `medium` | `low` | `all`, default: `all`).
|
|
88
|
+
* `-t, --tags <tags>`: Filter by comma-separated tags.
|
|
89
|
+
* `-f, --format <format>`: Output format (`table` | `compact` | `json`, default: `table`).
|
|
90
|
+
|
|
91
|
+
### 3. Mark a Task as Completed
|
|
92
|
+
|
|
93
|
+
Complete a task and optionally add a completion note.
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
taskair done <task-id-prefix> --note "Orbit established successfully."
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
* **Alias**: `-d`
|
|
100
|
+
* **Options**:
|
|
101
|
+
* `-n, --note <note>`: Optional completion note.
|
|
102
|
+
|
|
103
|
+
### 4. Edit a Task
|
|
104
|
+
|
|
105
|
+
Modify any field of an existing task using its ID.
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
taskair edit <task-id-prefix> --priority high --tags "milestone,space"
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
* **Alias**: `-e`
|
|
112
|
+
* **Options**:
|
|
113
|
+
* `--description <text>`: Set a new description.
|
|
114
|
+
* `--priority <level>`: Change priority (`high` | `medium` | `low`).
|
|
115
|
+
* `--status <status>`: Update status (`pending` | `in_progress` | `completed`).
|
|
116
|
+
* `--due <datetime>`: Set or update due date.
|
|
117
|
+
* `--tags <tags>`: Overwrite tags with a comma-separated list.
|
|
118
|
+
* `--note <note>`: Add/update completion note.
|
|
119
|
+
|
|
120
|
+
### 5. Delete a Task
|
|
121
|
+
|
|
122
|
+
Remove a task from your database. By default, this will ask for confirmation unless the `--force` flag is passed.
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
taskair remove <task-id-prefix> --force
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
* **Alias**: `-r`
|
|
129
|
+
* **Options**:
|
|
130
|
+
* `--force`: Skip confirmation prompt.
|
|
131
|
+
|
|
132
|
+
### 6. Synchronize with Cloud
|
|
133
|
+
|
|
134
|
+
Push local offline changes and pull updates from your Supabase cloud database.
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
taskair sync --password <your-master-password>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
* **Options**:
|
|
141
|
+
* `--password <password>`: The master password to encrypt/decrypt task bundles.
|
|
142
|
+
* `--dry-run`: View what would be synced without modifying local or remote data.
|
|
143
|
+
|
|
144
|
+
### 7. View Analytics & Stats
|
|
145
|
+
|
|
146
|
+
See task counts, priority breakdowns, and completion rate progress bars directly in your terminal:
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
taskair stats
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### 8. Export Tasks
|
|
153
|
+
|
|
154
|
+
Export your entire task database to JSON, CSV, or Markdown format.
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
taskair export --format csv --output ./tasks_backup.csv
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
* **Options**:
|
|
161
|
+
* `-f, --format <format>`: Export format (`json` | `csv` | `markdown`, default: `json`).
|
|
162
|
+
* `-o, --output <file>`: Target file path. If omitted, outputs to stdout.
|
|
163
|
+
|
|
164
|
+
### 9. Log Out
|
|
165
|
+
|
|
166
|
+
End your session and clear local access tokens:
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
taskair logout
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 🔒 Security Architecture
|
|
175
|
+
|
|
176
|
+
TaskAir is built on **zero-knowledge architecture**:
|
|
177
|
+
1. **Local Storage**: Tasks are stored locally on your machine.
|
|
178
|
+
2. **Client-side Encryption**: During sync, your tasks are serialized into a JSON bundle, encrypted using **AES-256-GCM** with a key derived from your **Master Password** via PBKDF2.
|
|
179
|
+
3. **Encrypted Sync**: The encrypted ciphertext along with a SHA-256 checksum is uploaded to the Supabase Cloud.
|
|
180
|
+
4. **Zero Server Knowledge**: Neither Supabase nor the web application server ever holds your master password or the encryption key. Your data remains completely private and secure.
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 📄 License
|
|
185
|
+
|
|
186
|
+
This project is licensed under the MIT License.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
#!/usr/bin/env node
|