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 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.
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node