Skip to content

Add FastShared CLI for agents#29

Merged
MatheusKindrazki merged 13 commits into
mainfrom
codex/fix-upload-progress-bundle
Apr 25, 2026
Merged

Add FastShared CLI for agents#29
MatheusKindrazki merged 13 commits into
mainfrom
codex/fix-upload-progress-bundle

Conversation

@MatheusKindrazki
Copy link
Copy Markdown
Owner

@MatheusKindrazki MatheusKindrazki commented Apr 25, 2026

Summary

  • Adds ultra-short FastShared retention support and updates Apple versioning.
  • Adds the Node 20+ fastshared CLI for agent and shell uploads, including file/stdin/folder ZIP flows, device registration, release packing, installer script, docs, Makefile targets, and CLI CI.
  • Updates the landing page with an Agents + CLI section showing install, stdout-only URL output, stderr logging, folder ZIP staging, and common agent handoff commands.
  • Merges origin/main into the branch and resolves the PR conflicts in MacMenuBarView.swift and backend/src/routes/redirect.ts.

Validation

  • cd backend && npm run typecheck
  • cd backend && npm test -- devices.test.ts
  • make cli-build
  • bash -n web/public/install.sh
  • cd web && pnpm build
  • git diff --check
  • conflict resolution: cd backend && pnpm run typecheck
  • conflict resolution: cd backend && pnpm test -- bundle-redirect.test.ts devices.test.ts
  • conflict resolution: cd apple/Packages/FastSharedCore && swift test
  • conflict resolution: cd apple && xcodegen generate && xcodebuild -project FastShared.xcodeproj -scheme FastSharedApp -destination 'platform=macOS' CODE_SIGNING_ALLOWED=NO build

Notes

  • Draft until CI completes and the release asset flow is confirmed on GitHub Releases.
  • Existing local Apple/backend working-tree edits were left unstaged in the main workspace and are not part of the conflict-resolution worktree.

Summary by CodeRabbit

Notas de Lançamento

  • Novas Funcionalidades

    • Ferramenta CLI para fazer upload de arquivos diretamente da linha de comando
    • Nova opção de retenção de 60 segundos (mais curta que a anterior)
  • Correções

    • Melhor manipulação de links expirados durante uploads
    • Validação de expiração ao completar uploads
  • Documentação

    • Documentação completa da CLI adicionada
    • Guias de produto atualizados

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 25, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d5886664-d825-44fd-836b-7fdedf57f27c

📥 Commits

Reviewing files that changed from the base of the PR and between 3cfc7fc and c016d12.

⛔ Files ignored due to path filters (1)
  • cli/pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (58)
  • .github/workflows/cli.yml
  • Makefile
  • README.md
  • apple/Config/Shared.xcconfig
  • apple/FastSharedApp/Scenes/HistoryView.swift
  • apple/FastSharedApp/Scenes/LibraryView.swift
  • apple/FastSharedApp/Scenes/SettingsView.swift
  • apple/FastSharedShareExt/ShareRootView.swift
  • apple/Packages/FastSharedCore/Sources/FastSharedCore/LiveActivity/BundleUploadAttributes.swift
  • apple/Packages/FastSharedCore/Sources/FastSharedCore/LiveActivity/FastSharedActivityAttributes.swift
  • apple/Packages/FastSharedCore/Sources/FastSharedCore/Models/RetentionPolicy.swift
  • apple/Packages/FastSharedCore/Sources/FastSharedCore/Subscription/GatedRetentionPicker.swift
  • apple/Packages/FastSharedCore/Tests/FastSharedCoreTests/RetentionPolicyTests.swift
  • apple/fastlane/Deliverfile
  • apple/fastlane/metadata/en-US/description.txt
  • backend/src/db/schema.ts
  • backend/src/lib/retention.ts
  • backend/src/middleware/rateLimitFreeTier.ts
  • backend/src/routes/devices.ts
  • backend/src/routes/redirect.ts
  • backend/src/routes/uploads.ts
  • backend/src/services/shareLinks.ts
  • backend/test/devices.test.ts
  • backend/test/rateLimitFreeTier.test.ts
  • backend/test/redirect.test.ts
  • backend/test/uploads.test.ts
  • cli/README.md
  • cli/package.json
  • cli/scripts/pack-release.mjs
  • cli/src/api.ts
  • cli/src/cli.ts
  • cli/src/config.ts
  • cli/src/index.ts
  • cli/src/options.ts
  • cli/src/stage.ts
  • cli/test/cli.integration.test.ts
  • cli/test/config.test.ts
  • cli/test/options.test.ts
  • cli/test/stage.test.ts
  • cli/tsconfig.json
  • cli/vitest.config.ts
  • docs/architecture/apple-client.md
  • docs/architecture/backend.md
  • docs/architecture/data-model.md
  • docs/architecture/system-design.md
  • docs/architecture/upload-flow.md
  • docs/plan/implementation-checklist.md
  • docs/plan/mvp-roadmap.md
  • docs/plan/pro-feature-B-apple.md
  • docs/product/cli.md
  • docs/product/overview.md
  • web/public/install.sh
  • web/src/components/AgentCliSurface.astro
  • web/src/components/FAQ.astro
  • web/src/components/Hero.astro
  • web/src/components/Nav.astro
  • web/src/pages/index.astro
  • web/src/styles/global.css

Walkthrough

Este PR introduz um novo cliente CLI (interface de linha de comando) para FastShared, adiciona suporte para uma política de retenção de 60 segundos em todas as plataformas, aprimora a manipulação de expiração de upload no backend, e expande a documentação e website para promover o novo recurso de CLI.

Changes

Cohort / File(s) Summary
Implementação da CLI
cli/package.json, cli/tsconfig.json, cli/vitest.config.ts, cli/README.md, cli/scripts/pack-release.mjs
Novo pacote CLI com configuração TypeScript, Vitest, e script de empacotamento para distribuição.
Código-fonte da CLI
cli/src/index.ts, cli/src/api.ts, cli/src/cli.ts, cli/src/config.ts, cli/src/options.ts, cli/src/stage.ts
Implementação completa do CLI com registro de dispositivo, upload de arquivos, gerenciamento de configuração, parsing de argumentos, e staging de inputs (suporta arquivos únicos, múltiplos, stdin e compactação em zip).
Testes da CLI
cli/test/cli.integration.test.ts, cli/test/config.test.ts, cli/test/options.test.ts, cli/test/stage.test.ts
Suite de testes abrangente cobrindo fluxo de integração completo, persistência de configuração, parsing de argumentos e staging de arquivos.
Política de Retenção: Backend
backend/src/db/schema.ts, backend/src/lib/retention.ts, backend/src/middleware/rateLimitFreeTier.ts
Suporte ao novo oneMinute (60s) na enum de políticas de retenção, mapeamento de TTL, e cálculo de limite de free-tier.
Política de Retenção: Apple
apple/Packages/FastSharedCore/Sources/FastSharedCore/Models/RetentionPolicy.swift, apple/Packages/FastSharedCore/Sources/FastSharedCore/LiveActivity/..., apple/FastSharedApp/Scenes/..., apple/FastSharedShareExt/ShareRootView.swift
Suporte ao novo oneMinute na enum RetentionPolicy, com rótulos curtos ("60s") e nomes de exibição ("60 seconds") em ActivityAttributes, Views de Histórico/Biblioteca/Configurações, e Share Extension.
Testes de Retenção
apple/Packages/FastSharedCore/Tests/FastSharedCoreTests/RetentionPolicyTests.ts
Validação de que oneMinute é incluído nas políticas shareáveis com TTL de 60 segundos e nome de exibição correto.
Roteamento e Expiração do Backend
backend/src/routes/redirect.ts, backend/src/routes/uploads.ts, backend/src/services/shareLinks.ts
Reordenamento lógico para verificar expiração antes do status pendente; adição de validação de expiração no endpoint de conclusão de upload (409 complete_too_late quando expiresAt <= now()); suporte ao oneMinute e clamping em free-tier.
Testes do Backend: Dispositivos e Retenção
backend/test/devices.test.ts, backend/test/rateLimitFreeTier.test.ts, backend/test/redirect.test.ts, backend/test/uploads.test.ts
Novos testes para registro de dispositivo CLI, validação de oneMinute em free-tier, precedência de expiração sobre pending, e rejeição de conclusão tardia.
Registro de Dispositivo CLI
backend/src/routes/devices.ts
Aceitação de 'cli' como valor válido de plataforma no schema de validação.
Infraestrutura de CI/CD
.github/workflows/cli.yml, Makefile
Novo workflow GitHub Actions para testes/build do CLI em mudanças no cli/**; novos targets Makefile cli-test e cli-build; atualização de clean para remover artefatos do CLI.
Versão e Configuração
apple/Config/Shared.xcconfig, apple/fastlane/Deliverfile
Bump de versão de 1.0.0 para 1.0.1.
Metadados da Loja de Apps
apple/fastlane/metadata/en-US/description.txt, README.md
Atualização de "60s" como opção mínima de duração de link; documentação de utilização do CLI para uploads.
Documentação da Arquitetura
docs/architecture/apple-client.md, docs/architecture/backend.md, docs/architecture/data-model.md, docs/architecture/system-design.md, docs/architecture/upload-flow.md
Suporte ao oneMinute em pickers de política; remoção de período de carência de 60s na validação complete_too_late (agora expiresAt <= now()).
Documentação de Planejamento
docs/plan/implementation-checklist.md, docs/plan/mvp-roadmap.md, docs/plan/pro-feature-B-apple.md
Atualização de checklist e roadmap para refletir 5 presets de retenção (incluindo oneMinute); ajuste de condição de expiração no endpoint de conclusão.
Documentação do Produto
docs/product/cli.md, docs/product/overview.md
Nova documentação de CLI detalhando instalação, uso, autenticação, opções de TTL/retenção, stdin, saída JSON e variáveis de ambiente; atualização de presets de retenção em overview.
Website: Instalação do CLI
web/public/install.sh
Script Bash para download, validação e instalação da CLI a partir de releases do GitHub em diretório por-usuário.
Website: Componentes
web/src/components/AgentCliSurface.astro, web/src/components/FAQ.astro, web/src/components/Hero.astro, web/src/components/Nav.astro, web/src/pages/index.astro, web/src/styles/global.css
Nova seção "Agents + CLI" com exemplos de terminal, links de instalação, recipes, e estilo responsivo; atualização de Hero eyebrow e Nav primária com link CLI; novo item FAQ sobre uso em agentes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Possibly related PRs

  • PR #28: Ambas as PRs modificam lógica de redirecionamento e manipulação de links pendentes (backend/src/routes/redirect.ts e backend/src/services/shareLinks.ts), alterando como o estado pendente é verificado e priorizado em relação à expiração.
  • PR #18: Ambas as PRs tocam backend/src/middleware/rateLimitFreeTier.ts e backend/src/routes/uploads.ts, modificando manipulação de retenção, TTL e comportamento de free-tier.
  • PR #17: Ambas as PRs modificam componentes de website sobrepostos (web/src/components/Hero.astro, web/src/components/Nav.astro, web/src/components/FAQ.astro, e web/src/styles/global.css), alterando UI e navegação primária.

Poem

🐰 Um CLI nasce com graça, sessenta segundos de retenção,
Arquivos voam rápido para a nuvem com perfeição,
Website e Apple dançam em uníssono agora,
Testes cobrem cada detalhe, a qualidade floresce cada hora! 🌳✨

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/fix-upload-progress-bundle

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@MatheusKindrazki MatheusKindrazki marked this pull request as ready for review April 25, 2026 19:58
@MatheusKindrazki MatheusKindrazki merged commit af766f0 into main Apr 25, 2026
5 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant