@nightowne/tas-cli 2.1.0 β 2.3.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 +307 -92
- package/package.json +4 -2
- package/src/cli.js +179 -23
- package/src/crypto/encryption.js +25 -3
- package/src/db/index.js +19 -13
- package/src/fuse/mount.js +158 -124
- package/src/index.js +44 -17
- package/src/share/server.js +55 -16
- package/src/sync/sync.js +159 -23
- package/src/telegram/client.js +64 -16
- package/src/utils/branding.js +10 -3
- package/src/utils/chunker.js +4 -2
- package/src/utils/cli-helpers.js +44 -6
- package/src/utils/progress.js +3 -3
package/README.md
CHANGED
|
@@ -1,162 +1,377 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/demo.gif" alt="TAS
|
|
2
|
+
<img src="assets/demo.gif" alt="TAS β Telegram as Storage" width="640">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<h1 align="center">
|
|
5
|
+
<h1 align="center">
|
|
6
|
+
π¦ TAS β Telegram as Storage
|
|
7
|
+
</h1>
|
|
8
|
+
|
|
9
|
+
<h3 align="center">
|
|
10
|
+
Turn Telegram into your personal encrypted cloud drive.<br>
|
|
11
|
+
Free forever. Zero-knowledge. No credit card. No limits.
|
|
12
|
+
</h3>
|
|
6
13
|
|
|
7
14
|
<p align="center">
|
|
8
|
-
<
|
|
15
|
+
<a href="https://github.com/ixchio/tas/actions/workflows/ci.yml"><img src="https://github.com/ixchio/tas/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
16
|
+
<a href="https://www.npmjs.com/package/@nightowne/tas-cli"><img src="https://img.shields.io/npm/v/@nightowne/tas-cli?color=cb3837&label=npm" alt="npm version"></a>
|
|
17
|
+
<a href="https://www.npmjs.com/package/@nightowne/tas-cli"><img src="https://img.shields.io/npm/dm/@nightowne/tas-cli?color=blue" alt="Downloads"></a>
|
|
18
|
+
<a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License: MIT"></a>
|
|
19
|
+
<a href="https://github.com/ixchio/tas/stargazers"><img src="https://img.shields.io/github/stars/ixchio/tas?style=social" alt="GitHub Stars"></a>
|
|
9
20
|
</p>
|
|
10
21
|
|
|
11
22
|
<p align="center">
|
|
12
|
-
<a href="
|
|
13
|
-
<a href="
|
|
14
|
-
<a href="
|
|
15
|
-
<a href="
|
|
23
|
+
<a href="#-quick-start">Quick Start</a> β’
|
|
24
|
+
<a href="#-why-tas">Why TAS</a> β’
|
|
25
|
+
<a href="#-features">Features</a> β’
|
|
26
|
+
<a href="#%EF%B8%8F-security">Security</a> β’
|
|
27
|
+
<a href="#-cli-reference">Docs</a> β’
|
|
28
|
+
<a href="#-contributing">Contributing</a>
|
|
16
29
|
</p>
|
|
17
30
|
|
|
18
31
|
---
|
|
19
32
|
|
|
20
|
-
|
|
33
|
+
<br>
|
|
34
|
+
|
|
35
|
+
## The Problem
|
|
36
|
+
|
|
37
|
+
Google Drive scans your files. Dropbox costs $12/mo. iCloud locks you into Apple. Every "free" cloud storage either **reads your data**, **charges you money**, or **caps your storage**.
|
|
38
|
+
|
|
39
|
+
Meanwhile, Telegram gives every user **unlimited storage** with a bot API β and nobody's using it.
|
|
21
40
|
|
|
22
|
-
|
|
41
|
+
## The Solution
|
|
42
|
+
|
|
43
|
+
**TAS** compresses, encrypts, and uploads your files to your own private Telegram bot chat. Your password never leaves your machine. Telegram only sees encrypted noise. You get a real CLI-powered cloud drive β with mount, sync, share, and search β for **$0/month, forever.**
|
|
23
44
|
|
|
24
45
|
```
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
β
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
β
|
|
33
|
-
|
|
46
|
+
Your Machine Telegram Cloud
|
|
47
|
+
ββββββββββββββββββββ ββββββββββββββββββββββββ
|
|
48
|
+
β β Compress β β
|
|
49
|
+
β tas push ββββ Encrypt ββββ π Encrypted Blobs β
|
|
50
|
+
β tas mount ββββ Chunk ββββ π Private Bot Chat β
|
|
51
|
+
β tas sync β β π Your Data, Safe β
|
|
52
|
+
β β Decrypt β β
|
|
53
|
+
β tas pull ββββ Decomp ββββ β Download on demandβ
|
|
54
|
+
β β β β
|
|
55
|
+
ββββββββββββββββββββ ββββββββββββββββββββββββ
|
|
56
|
+
SQLite Index Unlimited & Free
|
|
34
57
|
```
|
|
35
58
|
|
|
59
|
+
<br>
|
|
60
|
+
|
|
36
61
|
## β‘ Quick Start
|
|
37
62
|
|
|
63
|
+
Three commands. Two minutes. Zero cost.
|
|
64
|
+
|
|
38
65
|
```bash
|
|
39
66
|
npm install -g @nightowne/tas-cli
|
|
40
|
-
|
|
41
|
-
tas
|
|
42
|
-
tas
|
|
67
|
+
|
|
68
|
+
tas init # Connect your Telegram bot (guided wizard)
|
|
69
|
+
tas push secret.pdf # Upload β encrypted, compressed, done
|
|
70
|
+
tas pull secret.pdf # Download β decrypted, verified, instant
|
|
43
71
|
```
|
|
44
72
|
|
|
73
|
+
That's it. You now have encrypted cloud storage.
|
|
74
|
+
|
|
75
|
+
<br>
|
|
76
|
+
|
|
77
|
+
## π‘ Why TAS
|
|
78
|
+
|
|
79
|
+
<table>
|
|
80
|
+
<tr>
|
|
81
|
+
<td width="50%">
|
|
82
|
+
|
|
83
|
+
### vs. Google Drive
|
|
84
|
+
- β Google scans & indexes your files
|
|
85
|
+
- β 15 GB free tier
|
|
86
|
+
- β No encryption at rest (by you)
|
|
87
|
+
|
|
88
|
+
### vs. Dropbox
|
|
89
|
+
- β $12/mo for 2 TB
|
|
90
|
+
- β Can access your data
|
|
91
|
+
- β No CLI-first experience
|
|
92
|
+
|
|
93
|
+
### vs. Mega / pCloud
|
|
94
|
+
- β Freemium with tight caps
|
|
95
|
+
- β Closed source encryption
|
|
96
|
+
- β Can't self-host or script
|
|
97
|
+
|
|
98
|
+
</td>
|
|
99
|
+
<td width="50%">
|
|
100
|
+
|
|
101
|
+
### TAS gives you
|
|
102
|
+
- β
**$0/month** β forever, no caps
|
|
103
|
+
- β
**Zero-knowledge** β only you can decrypt
|
|
104
|
+
- β
**AES-256-GCM** β military-grade encryption
|
|
105
|
+
- β
**Mount as folder** β FUSE filesystem
|
|
106
|
+
- β
**Auto-sync** β Dropbox-style folder sync
|
|
107
|
+
- β
**Share links** β expiring, download-limited
|
|
108
|
+
- β
**CLI-first** β cron, Docker, CI/CD ready
|
|
109
|
+
- β
**Open source** β audit every line
|
|
110
|
+
|
|
111
|
+
</td>
|
|
112
|
+
</tr>
|
|
113
|
+
</table>
|
|
114
|
+
|
|
115
|
+
<br>
|
|
116
|
+
|
|
45
117
|
## π₯ Features
|
|
46
118
|
|
|
47
|
-
### Mount as a
|
|
119
|
+
### ποΈ Mount as a Local Folder
|
|
120
|
+
Drag and drop files into Telegram storage like it's a regular drive.
|
|
121
|
+
|
|
48
122
|
```bash
|
|
49
|
-
tas mount ~/cloud
|
|
123
|
+
tas mount ~/cloud # Mount your Telegram storage
|
|
124
|
+
# Now use Finder, Explorer, or any app β files sync to Telegram
|
|
50
125
|
tas unmount ~/cloud
|
|
51
126
|
```
|
|
52
|
-
Requires `libfuse` (`apt install fuse libfuse-dev` on Debian/Ubuntu, `brew install macfuse` on macOS).
|
|
53
127
|
|
|
54
|
-
|
|
128
|
+
> Requires `libfuse` β `apt install fuse libfuse-dev` on Linux, `brew install macfuse` on macOS.
|
|
129
|
+
|
|
130
|
+
### π Auto-Sync Folders
|
|
131
|
+
Dropbox-style: register a folder, and TAS watches for changes and uploads automatically.
|
|
132
|
+
|
|
55
133
|
```bash
|
|
56
|
-
tas sync add ~/Documents # Register
|
|
57
|
-
tas sync start # Watch
|
|
134
|
+
tas sync add ~/Documents # Register a folder
|
|
135
|
+
tas sync start # Watch & auto-upload changes
|
|
58
136
|
tas sync pull # Download everything back
|
|
137
|
+
tas sync status # See what's synced
|
|
59
138
|
```
|
|
60
139
|
|
|
61
|
-
### Share
|
|
140
|
+
### π Share with Expiring Links
|
|
141
|
+
Generate one-time download links with a sleek dark-themed download page. Files are decrypted on-the-fly β the link holder never sees your password.
|
|
142
|
+
|
|
62
143
|
```bash
|
|
63
|
-
tas share create
|
|
144
|
+
tas share create report.pdf --expire 1h --max-downloads 3
|
|
64
145
|
# β http://localhost:3000/d/a1b2c3d4...
|
|
65
146
|
|
|
66
|
-
tas share list #
|
|
67
|
-
tas share revoke a1b2c3d4 # Revoke
|
|
147
|
+
tas share list # See active shares
|
|
148
|
+
tas share revoke a1b2c3d4 # Revoke anytime
|
|
68
149
|
```
|
|
69
|
-
|
|
150
|
+
|
|
151
|
+
### π·οΈ Tags & Search
|
|
152
|
+
Organize and find files instantly.
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
tas tag add report.pdf work Q4
|
|
156
|
+
tas search "report" # Search by filename
|
|
157
|
+
tas search -t work # Search by tag
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### π©Ί Self-Diagnostics
|
|
161
|
+
One command to check if everything is healthy.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
tas doctor
|
|
165
|
+
# β Node.js 20.11.0
|
|
166
|
+
# β Config v2 (encrypted token)
|
|
167
|
+
# β Database: 42 files, 1.3 GB total
|
|
168
|
+
# β Disk space: 50 GB free (32% used)
|
|
169
|
+
# β Encryption: AES-256-GCM, PBKDF2-SHA512 600,000 iterations
|
|
170
|
+
# β¨ All systems go!
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### π€ Built for Automation
|
|
174
|
+
First-class JSON output, environment variable support, and zero interactivity mode.
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
export TAS_PASSWORD="your-password" # Skip prompts
|
|
178
|
+
export TAS_DATA_DIR="/custom/path" # Custom data location
|
|
179
|
+
|
|
180
|
+
tas push backup.tar.gz # Non-interactive upload
|
|
181
|
+
tas list --json | jq '.[].filename' # Pipe to jq
|
|
182
|
+
tas status --json # Machine-readable status
|
|
183
|
+
|
|
184
|
+
# Works with: cron β’ GitHub Actions β’ Docker β’ systemd β’ any CI/CD
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
<br>
|
|
70
188
|
|
|
71
189
|
## π‘οΈ Security
|
|
72
190
|
|
|
73
|
-
|
|
74
|
-
|-----------|----------------|
|
|
75
|
-
| Cipher | AES-256-GCM |
|
|
76
|
-
| Key derivation | PBKDF2-SHA512, 100k iterations |
|
|
77
|
-
| Salt | 32 bytes, random per file |
|
|
78
|
-
| IV | 12 bytes, random per file |
|
|
79
|
-
| Auth tag | 16 bytes (integrity verification) |
|
|
191
|
+
TAS implements **zero-knowledge encryption** β we can't read your data, Telegram can't read your data, nobody can read your data without your password.
|
|
80
192
|
|
|
81
|
-
|
|
193
|
+
| Layer | Implementation | Why It Matters |
|
|
194
|
+
|-------|----------------|----------------|
|
|
195
|
+
| **Cipher** | AES-256-GCM | Same cipher used by governments & banks |
|
|
196
|
+
| **Key Derivation** | PBKDF2-SHA512, **600k iterations** | OWASP 2025 compliant β brute-force resistant |
|
|
197
|
+
| **Salt** | 32 bytes, cryptographically random | Unique per file β no rainbow tables |
|
|
198
|
+
| **IV** | 12 bytes, cryptographically random | Unique per file β no pattern analysis |
|
|
199
|
+
| **Auth Tag** | 16 bytes GCM authentication | Tamper detection β any bit flip = rejected |
|
|
200
|
+
| **Bot Token** | Encrypted at rest (AES-256-GCM) | Even your config file is protected |
|
|
201
|
+
| **Password Hash** | PBKDF2-based verification | Your password hash is computationally expensive to crack |
|
|
202
|
+
| **Integrity** | SHA-256 verified on every download | Bit-perfect downloads, guaranteed |
|
|
203
|
+
| **Share Server** | XSS-safe, RFC 6266 headers | Hardened against injection attacks |
|
|
82
204
|
|
|
83
|
-
|
|
205
|
+
For the full threat model, cipher rationale, and file format spec, see **[docs/security.md](docs/security.md)**.
|
|
206
|
+
|
|
207
|
+
### What Telegram Sees
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
π¦ a7f3b2c1e9d4.tas β 12.4 MB β application/octet-stream
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
That's it. An opaque encrypted blob. No filename, no content, no metadata. Just noise.
|
|
214
|
+
|
|
215
|
+
<br>
|
|
216
|
+
|
|
217
|
+
## π Reliability
|
|
218
|
+
|
|
219
|
+
Built like professional backup tools (inspired by restic, rclone, borg):
|
|
220
|
+
|
|
221
|
+
| Feature | Details |
|
|
222
|
+
|---------|---------|
|
|
223
|
+
| **Exponential Backoff** | Auto-retry with jitter on Telegram 429 errors and network timeouts |
|
|
224
|
+
| **Rate Limiting** | Built-in 1 msg/sec limiter β never hits Telegram's rate limits |
|
|
225
|
+
| **Integrity Verification** | SHA-256 hash check after every single download |
|
|
226
|
+
| **Resume Uploads** | Interrupted? Run `tas resume` to pick up where you left off |
|
|
227
|
+
| **Atomic Transactions** | Upload pipeline uses SQLite transactions β pipeline failure = clean rollback, zero orphaned DB rows |
|
|
228
|
+
| **Graceful Shutdown** | SIGINT/SIGTERM handled cleanly β zero data corruption risk |
|
|
229
|
+
| **Self-Diagnostics** | `tas doctor` validates your entire setup in seconds |
|
|
230
|
+
|
|
231
|
+
<br>
|
|
232
|
+
|
|
233
|
+
## π CLI Reference
|
|
234
|
+
|
|
235
|
+
<details>
|
|
236
|
+
<summary><strong>Core Commands</strong></summary>
|
|
84
237
|
|
|
85
238
|
```bash
|
|
86
|
-
#
|
|
87
|
-
tas
|
|
88
|
-
tas
|
|
89
|
-
tas
|
|
90
|
-
tas
|
|
91
|
-
tas
|
|
92
|
-
tas
|
|
93
|
-
tas
|
|
94
|
-
tas
|
|
95
|
-
tas
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
239
|
+
tas init # π Interactive setup wizard
|
|
240
|
+
tas push <file> # β¬οΈ Upload (encrypt + compress + upload)
|
|
241
|
+
tas pull <file|hash> # β¬οΈ Download (download + decrypt + verify)
|
|
242
|
+
tas list [-l] [--json] # π List all files
|
|
243
|
+
tas delete <file|hash> # ποΈ Remove from index (--hard to delete from Telegram)
|
|
244
|
+
tas status [--json] # π Storage stats
|
|
245
|
+
tas search <query> # π Find files by name or tag
|
|
246
|
+
tas resume # π Resume interrupted uploads
|
|
247
|
+
tas verify # β
Verify all files exist & are intact
|
|
248
|
+
tas doctor # π©Ί System health check
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
</details>
|
|
252
|
+
|
|
253
|
+
<details>
|
|
254
|
+
<summary><strong>Mount & Sync</strong></summary>
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
# FUSE Mount (use Telegram like a local folder)
|
|
258
|
+
tas mount <path> # Mount
|
|
99
259
|
tas unmount <path> # Unmount
|
|
100
260
|
|
|
101
|
-
# Sync
|
|
102
|
-
tas sync add <folder> # Register folder
|
|
103
|
-
tas sync start # Start watching
|
|
104
|
-
tas sync pull # Download all
|
|
105
|
-
tas sync status # Show status
|
|
261
|
+
# Folder Sync (Dropbox-style auto-upload)
|
|
262
|
+
tas sync add <folder> # Register a folder to sync
|
|
263
|
+
tas sync start # Start watching for changes
|
|
264
|
+
tas sync pull # Download all synced files
|
|
265
|
+
tas sync status # Show sync status
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
</details>
|
|
269
|
+
|
|
270
|
+
<details>
|
|
271
|
+
<summary><strong>Share & Tags</strong></summary>
|
|
106
272
|
|
|
107
|
-
|
|
108
|
-
|
|
273
|
+
```bash
|
|
274
|
+
# Temporary Share Links
|
|
275
|
+
tas share create <file> [--expire 24h] [--max-downloads 3]
|
|
109
276
|
tas share list # Active shares
|
|
110
|
-
tas share revoke <token> # Revoke
|
|
277
|
+
tas share revoke <token> # Revoke a share link
|
|
111
278
|
|
|
112
|
-
# Tags
|
|
279
|
+
# File Tags
|
|
113
280
|
tas tag add <file> <tags...>
|
|
114
281
|
tas tag remove <file> <tags...>
|
|
115
|
-
tas tag list [tag]
|
|
282
|
+
tas tag list [tag] # List tags or files with a specific tag
|
|
116
283
|
```
|
|
117
284
|
|
|
118
|
-
|
|
285
|
+
</details>
|
|
119
286
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
tas push file.pdf
|
|
287
|
+
<br>
|
|
288
|
+
|
|
289
|
+
## ποΈ Architecture
|
|
124
290
|
|
|
125
|
-
# Or inline
|
|
126
|
-
tas push -p "password" file.pdf
|
|
127
291
|
```
|
|
292
|
+
src/
|
|
293
|
+
βββ cli.js # Commander-based CLI β all commands
|
|
294
|
+
βββ index.js # Streaming upload/download pipeline
|
|
295
|
+
βββ crypto/
|
|
296
|
+
β βββ encryption.js # AES-256-GCM + PBKDF2-SHA512 key derivation
|
|
297
|
+
βββ db/
|
|
298
|
+
β βββ index.js # SQLite index (files, chunks, tags, shares, sync)
|
|
299
|
+
βββ telegram/
|
|
300
|
+
β βββ client.js # Bot API wrapper β retry, rate-limit, streaming
|
|
301
|
+
βββ fuse/
|
|
302
|
+
β βββ mount.js # FUSE filesystem β mount Telegram as a folder
|
|
303
|
+
βββ share/
|
|
304
|
+
β βββ server.js # HTTP server β expiring download links
|
|
305
|
+
βββ sync/
|
|
306
|
+
β βββ sync.js # Folder watcher β Dropbox-style auto-sync
|
|
307
|
+
βββ utils/
|
|
308
|
+
βββ compression.js # Smart gzip (skips already-compressed formats)
|
|
309
|
+
βββ chunker.js # 49MB chunking with custom WAS1 file headers
|
|
310
|
+
βββ progress.js # Terminal progress bar with speed + ETA
|
|
311
|
+
βββ throttle.js # Bandwidth limiter (stream transform)
|
|
312
|
+
βββ branding.js # ASCII art + version (auto-synced from package.json)
|
|
313
|
+
βββ cli-helpers.js # Password management + config resolution
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
**Tech stack:** Node.js Β· better-sqlite3 Β· node-telegram-bot-api Β· fuse-native Β· Commander Β· Chalk Β· Ora Β· Inquirer
|
|
128
317
|
|
|
129
|
-
|
|
318
|
+
<br>
|
|
130
319
|
|
|
131
|
-
## β οΈ
|
|
320
|
+
## β οΈ Good to Know
|
|
132
321
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
322
|
+
| | |
|
|
323
|
+
|---|---|
|
|
324
|
+
| π **Not a backup solution** | Telegram can delete content. Use TAS alongside proper backups, not instead of them. |
|
|
325
|
+
| π **49 MB chunks** | Files are automatically split due to Telegram Bot API limits. Fully transparent. |
|
|
326
|
+
| π **Single-user** | Designed for personal use. Not multi-tenant. |
|
|
327
|
+
| π **FUSE = Linux/macOS** | Mount feature requires `libfuse`. CLI works everywhere Node.js runs. |
|
|
328
|
+
| π **No versioning (yet)** | Overwriting a file replaces the previous version. |
|
|
329
|
+
|
|
330
|
+
<br>
|
|
138
331
|
|
|
139
332
|
## π οΈ Development
|
|
140
333
|
|
|
141
334
|
```bash
|
|
142
335
|
git clone https://github.com/ixchio/tas
|
|
143
336
|
cd tas && npm install
|
|
144
|
-
npm test #
|
|
337
|
+
npm test # 83 tests across 16 suites, all passing
|
|
145
338
|
```
|
|
146
339
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
340
|
+
For the full developer guide (architecture, testing, conventions, gotchas), see **[docs/development.md](docs/development.md)**.
|
|
341
|
+
|
|
342
|
+
PRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
343
|
+
|
|
344
|
+
<br>
|
|
345
|
+
|
|
346
|
+
## π Documentation
|
|
347
|
+
|
|
348
|
+
| Doc | What's in it |
|
|
349
|
+
|-----|-------------|
|
|
350
|
+
| [docs/development.md](docs/development.md) | Developer onboarding β project structure, how to add commands, testing, conventions |
|
|
351
|
+
| [docs/security.md](docs/security.md) | Threat model β what TAS protects against, cipher details, file format specs |
|
|
352
|
+
| [CHANGELOG.md](CHANGELOG.md) | Version history with all changes documented |
|
|
353
|
+
| [CONTRIBUTING.md](CONTRIBUTING.md) | How to contribute β fork, branch, PR |
|
|
354
|
+
| [SECURITY.md](SECURITY.md) | Security vulnerability reporting |
|
|
355
|
+
|
|
356
|
+
<br>
|
|
357
|
+
|
|
358
|
+
## π Contributing
|
|
359
|
+
|
|
360
|
+
TAS is open source and we love contributions:
|
|
361
|
+
|
|
362
|
+
- π **Found a bug?** [Open an issue](https://github.com/ixchio/tas/issues)
|
|
363
|
+
- π‘ **Have an idea?** [Start a discussion](https://github.com/ixchio/tas/issues)
|
|
364
|
+
- π§ **Want to contribute?** Fork β Branch β PR β π
|
|
365
|
+
|
|
366
|
+
<br>
|
|
159
367
|
|
|
160
368
|
## π License
|
|
161
369
|
|
|
162
|
-
MIT β
|
|
370
|
+
MIT β use it, fork it, ship it, sell it. Do whatever you want.
|
|
371
|
+
|
|
372
|
+
---
|
|
373
|
+
|
|
374
|
+
<p align="center">
|
|
375
|
+
<sub>Built with β and stubbornness by <a href="https://github.com/ixchio">@ixchio</a></sub><br>
|
|
376
|
+
<sub>If TAS saved you money, consider giving it a β</sub>
|
|
377
|
+
</p>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nightowne/tas-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Telegram as Storage - Automated encrypted cloud backup. Free, encrypted, scriptable. Mount as folder or use with cron/Docker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -46,11 +46,13 @@
|
|
|
46
46
|
"better-sqlite3": "^12.6.2",
|
|
47
47
|
"chalk": "^5.3.0",
|
|
48
48
|
"commander": "^12.1.0",
|
|
49
|
-
"fuse-native": "^2.2.6",
|
|
50
49
|
"inquirer": "^12.2.0",
|
|
51
50
|
"node-telegram-bot-api": "^0.66.0",
|
|
52
51
|
"ora": "^8.1.1"
|
|
53
52
|
},
|
|
53
|
+
"optionalDependencies": {
|
|
54
|
+
"fuse-native": "^2.2.6"
|
|
55
|
+
},
|
|
54
56
|
"engines": {
|
|
55
57
|
"node": ">=18.0.0"
|
|
56
58
|
}
|