riftdrive 0.0.0-stage → 0.2.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/LICENSE +21 -0
- package/README.md +106 -2
- package/dist/riftdrive.cjs +39416 -0
- package/package.json +51 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OnaitsirC-MiromA
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,107 @@
|
|
|
1
|
-
#
|
|
1
|
+
# RiftDrive
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Copie pastas de um Google Drive para outro.** Cole o link ou navegue até a pasta (Compartilhados comigo, Com estrela, busca pelo nome), escolha onde vai parar, e o RiftDrive leva — de preferência **dentro do próprio Google**, sem que um único byte passe pela sua máquina.
|
|
4
|
+
|
|
5
|
+
Dois caminhos, sempre explícitos:
|
|
6
|
+
|
|
7
|
+
| | Quando | Como |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| **pelo rift** | a pasta está compartilhada com a sua conta (ou é um link público) | cópia servidor-a-servidor no Google. Instantânea por arquivo, não usa sua internet, pode fechar o app no meio |
|
|
10
|
+
| **pela sua máquina** | origem e destino são contas diferentes, e a de destino não enxerga a origem | baixa de uma conta e sobe na outra, em blocos, com retomada. Mais lento; precisa do app aberto |
|
|
11
|
+
|
|
12
|
+
O app diz qual caminho vai usar antes de começar — e, quando é pela máquina, entrega um pedido pronto para o dono compartilhar a pasta com você, o que transforma a cópia em "pelo rift".
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Como rodar
|
|
17
|
+
|
|
18
|
+
**Cole uma linha no terminal. É a instalação inteira.**
|
|
19
|
+
|
|
20
|
+
Se você tem Node 22.5 ou maior:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx riftdrive
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Se não tem — e não quer instalar nada antes:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# macOS e Linux
|
|
30
|
+
curl -fsSL https://raw.githubusercontent.com/OnaitsirC-MiromA/riftdrive/main/install.sh | sh
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```powershell
|
|
34
|
+
# Windows (PowerShell)
|
|
35
|
+
irm https://raw.githubusercontent.com/OnaitsirC-MiromA/riftdrive/main/install.ps1 | iex
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
O navegador abre sozinho em `http://localhost:7799`. Sem clonar repositório, sem extrair ZIP, sem compilar nada. O instalador baixa um executável com o Node embutido (~110 MB) e confere a soma SHA-256 antes de pôr qualquer coisa no seu PATH.
|
|
39
|
+
|
|
40
|
+
Para parar, `Ctrl+C`. Se a porta 7799 estiver ocupada, o app sobe na seguinte e diz qual. Para atualizar, `npx riftdrive@latest` ou o instalador de novo — seus dados moram fora da pasta do programa e não são tocados.
|
|
41
|
+
|
|
42
|
+
## Primeira vez: seu acesso ao Google
|
|
43
|
+
|
|
44
|
+
O RiftDrive não tem servidor nem conta própria. Ele fala com o Google **em seu nome**, com uma credencial (um "OAuth client") que só você tem — e por isso o Google pede que cada pessoa crie a sua. É uma vez só, uns 8 minutos, e o app guia cada passo com o link certo:
|
|
45
|
+
|
|
46
|
+
1. criar um projeto no Google Cloud;
|
|
47
|
+
2. ativar a Google Drive API;
|
|
48
|
+
3. tela de consentimento: tipo **Externo** e **publicar em produção** — este é o passo que todo mundo pula. Em "Teste", o Google desconecta a conta a cada 7 dias; em "Produção" a conexão dura, ao custo de um aviso de "app não verificado" na primeira autorização, que é esperado;
|
|
49
|
+
4. criar a credencial: ID do cliente OAuth, tipo **App para computador**;
|
|
50
|
+
5. colar o ID e o segredo no RiftDrive e entrar com o Google.
|
|
51
|
+
|
|
52
|
+
Pode conectar mais de uma conta — é assim que a cópia entre contas (antiga → nova) funciona.
|
|
53
|
+
|
|
54
|
+
## Cota diária
|
|
55
|
+
|
|
56
|
+
O Google limita quanto cada conta pode receber por dia (na prática, ~750 GB). Em **Configurações → Cota diária** você escolhe:
|
|
57
|
+
|
|
58
|
+
- **Limitar a N GB por dia, renovando às HH:00** (padrão: 600 GB às 04:00). Quando a cota acaba, as cópias pausam e retomam sozinhas na renovação. Nunca bate no teto do Google.
|
|
59
|
+
- **Sem limite.** Copia até o Google cortar; quando cortar, o RiftDrive pausa, avisa e tenta de novo a cada hora.
|
|
60
|
+
|
|
61
|
+
## O que fica de fora — e por quê
|
|
62
|
+
|
|
63
|
+
Nada some em silêncio. Cada arquivo que não entra aparece na lista do job com o motivo:
|
|
64
|
+
|
|
65
|
+
- **Bloqueado pelo dono** — o dono desativou cópia/download. Nenhuma ferramenta contorna isso; o RiftDrive pula e avisa quantos foram.
|
|
66
|
+
- **Documento nativo do Google** (Docs, Sheets, Slides) **entre contas diferentes** — precisaria de conversão. Pelo rift, eles copiam normalmente.
|
|
67
|
+
- **Sumiu da origem** — foi removido no meio da cópia.
|
|
68
|
+
- **Aguardando** — atingiu a cota de download que o Google impõe a arquivos muito compartilhados; volta sozinho em até 24 h.
|
|
69
|
+
|
|
70
|
+
Mesclar numa pasta que já existe nunca apaga nada: o que é igual é pulado, o que mudou ganha a versão nova e a antiga é renomeada para "(versão anterior)".
|
|
71
|
+
|
|
72
|
+
## Verificar novidades
|
|
73
|
+
|
|
74
|
+
Toda cópia concluída fica registrada. Em **Configurações → Cópias registradas**, "Verificar novidades" compara a origem com o destino e deixa baixar só as pastas que ganharam arquivos novos ou atualizados.
|
|
75
|
+
|
|
76
|
+
## Onde ficam os dados
|
|
77
|
+
|
|
78
|
+
Um único banco SQLite (jobs, inventário, tokens, cota), fora da pasta do programa:
|
|
79
|
+
|
|
80
|
+
| Sistema | Pasta |
|
|
81
|
+
|---|---|
|
|
82
|
+
| macOS | `~/Library/Application Support/RiftDrive` |
|
|
83
|
+
| Windows | `%APPDATA%\RiftDrive` |
|
|
84
|
+
| Linux | `$XDG_DATA_HOME/riftdrive` (ou `~/.local/share/riftdrive`) |
|
|
85
|
+
|
|
86
|
+
`RIFTDRIVE_DATA_DIR` sobrescreve. Outras variáveis: `PORT` (7799), `BIND` (127.0.0.1), `OPEN_BROWSER` (`0` para não abrir).
|
|
87
|
+
|
|
88
|
+
## Privacidade
|
|
89
|
+
|
|
90
|
+
Os tokens do Google ficam só no banco local, com permissão restrita ao seu usuário. Não há servidor do RiftDrive, telemetria nem conta. O segredo do OAuth client sai do app apenas para o Google, na troca de tokens. O servidor local escuta só em `127.0.0.1` e recusa pedidos vindos de outras origens (proteção contra páginas maliciosas abertas no mesmo navegador).
|
|
91
|
+
|
|
92
|
+
## Desenvolvimento
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm install
|
|
96
|
+
npm run dev # Vite (5173, proxy /api → 7799) + servidor com reload
|
|
97
|
+
npm test # suíte do servidor (Vitest, sem rede: Google Drive em memória)
|
|
98
|
+
npm run build # web → bundled.ts → typecheck → dist/riftdrive.cjs
|
|
99
|
+
npm run build:binario # executável único para esta máquina (SEA)
|
|
100
|
+
npm run repo # audita as referências ao repositório nos instaladores e no README
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Arquitetura e decisões: `docs/superpowers/specs/2026-10-05-riftdrive-design.md`. Produto e voz: `PRODUCT.md`. Sistema visual: `DESIGN.md`.
|
|
104
|
+
|
|
105
|
+
## Licença
|
|
106
|
+
|
|
107
|
+
MIT.
|