Aplicació client en català de Mastodon, per a iOS
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-17 22:15:00 +02:00
Docs Els enllaços universals també obren perfils 2026-08-30 21:19:48 +02:00
Tuts Bloquejats i silenciats: pestanya Servidors per desbloquejar dominis 2026-10-17 22:15:00 +02:00
Tuts.xcodeproj Tuts 2.4 (build 38) 2026-10-16 12:34:09 +02:00
TutsNotificationService Obre la notificació push al compte que li toca 2026-07-30 20:59:10 +02:00
TutsTests Canvi de 'Tut' a 'Tuts' de tot els directoris i arxius del projecte 2026-04-24 20:17:27 +02:00
TutsUITests Canvi de 'Tut' a 'Tuts' de tot els directoris i arxius del projecte 2026-04-24 20:17:27 +02:00
TutsWatch Watch App Esborra el compte: des del menú, al web del servidor (norma 5.1.1(v)) 2026-10-11 12:54:07 +02:00
TutsWatch Watch AppTests Canvi de 'Tut' a 'Tuts' de tot els directoris i arxius del projecte 2026-04-24 20:17:27 +02:00
TutsWatch Watch AppUITests Canvi de 'Tut' a 'Tuts' de tot els directoris i arxius del projecte 2026-04-24 20:17:27 +02:00
.gitignore Treu CLAUDE.md del repositori 2026-08-30 21:24:51 +02:00
LICENSE Add AGPL-3.0 license 2026-04-29 22:57:46 +02:00
README.md Contacte de suport a Quant a Tuts i al README 2026-10-17 16:32:07 +02:00

Tuts

Client de Mastodon per a iOS i Apple Watch, escrit en Swift i SwiftUI. La interfície és en català.

Suport

Per a dubtes, errors o suggeriments:

Captures de pantalla

(pròximament)

Requisits

  • Xcode 26 o superior
  • iOS 26.2 o superior
  • Compte a qualsevol servidor de Mastodon (o compatible amb la seva API)
  • Les col·leccions demanen Mastodon 4.6 o superior; Tuts les amaga als servidors que no en tenen

Instal·lació

  1. Clona el repositori:
    git clone https://codeberg.org/spla/Tuts.git
    
  2. Obre Tuts.xcodeproj amb Xcode
  3. Selecciona el teu dispositiu o simulador
  4. Compila i executa (⌘R)

No cal cap dependència externa ni gestor de paquets.

Funcionalitats

Línia de temps

  • Inici, local i federada
  • Actualització en temps real (streaming): tuts nous, edicions i tuts esborrats
  • Comptador de tuts nous i posició de lectura recordada per compte
  • Forats a la línia de temps per baixar el tros que falta quan has estat temps fora
  • Refresc complet amb un botó
  • Tuts amb text, imatges, vídeos, GIFs i enquestes
  • Previsualització de links (preview card)
  • Tuts llargs truncats amb botó "Llegir més"
  • Cites de tuts (Mastodon 4.5+), respectant el permís de cita de cada tut (Mastodon 4.6+)
  • Històric d'edicions
  • Impuls, favorit, marcador, resposta
  • Bloquejar, silenciar i denunciar usuaris

Notificacions

  • Notificacions agrupades (API v2, Mastodon 4.3+)
  • Notificacions push xifrades, per compte, que obren la notificació al compte que l'ha rebut
  • Tria dels tipus de notificació push
  • Política de notificacions (filtrar qui no segueixes, comptes nous, etc.)
  • Notificacions filtrades: avís a la pestanya i safata per llegir el que la política ha retingut i acceptar-ho o descartar-ho, amb el que s'accepta destacat a la llista
  • Sol·licituds de seguiment: acceptar i rebutjar
  • Notificacions de col·leccions, amb accés directe a la col·lecció
  • Polling automàtic cada 60 segons
  • Badge amb comptador de no llegides
  • Accions ràpides (respondre, impulsar, favorit) des de la llista de notificacions

Publicar

  • Editor de tuts amb emojis personalitzats del servidor
  • Respostes i fils
  • Editar tuts propis
  • Esborranys locals
  • Adjuntar imatges i vídeos
  • Enquestes
  • Visibilitat (públic, no llistat, privat, directe)
  • Content Warning
  • Programar tuts

Cerca

  • Cerca de tuts, comptes i hashtags
  • Tendències (tuts, hashtags i enllaços)

Col·leccions (Mastodon 4.6+)

  • Les teves col·leccions i les col·leccions on surts
  • Crear, editar i esborrar col·leccions (nom, descripció, tema, idioma, visibilitat, contingut sensible)
  • Afegir i treure comptes, fins a 25 per col·lecció, respectant qui accepta sortir-hi
  • Afegir algú a les teves col·leccions des del seu perfil
  • Veure les col·leccions d'altres comptes
  • Treure't d'una col·lecció d'algú altre

Perfil

  • Vista del propi perfil amb tuts, respostes i impulsos
  • Editar perfil
  • Perfils d'altres usuaris
  • Seguidors i seguits
  • Llistes de comptes (qui ha marcat com a favorit, qui ha impulsat)

Altres

  • Multi-compte (canvi ràpid entre comptes)
  • Esborrar el compte des de l'app: obre la pàgina d'esborrat del servidor i, un cop fet, treu el compte de Tuts, del dispositiu i de l'Apple Watch
  • Enllaços universals: els enllaços a tuts i perfils s'obren dins de Tuts
  • Llistes personalitzades
  • Seguir etiquetes i etiquetes destacades al perfil
  • Anuncis del servidor
  • Marcadors
  • Filtres de contingut
  • Bloquejar i silenciar
  • Informació del servidor
  • Denunciar tuts
  • Traduir tuts
  • Lightbox d'imatges amb gest de pinça
  • Reproductor de vídeo i GIFs integrat
  • Emojis personalitzats del servidor
  • Aparença: tema clar, fosc o del sistema, color d'accent, mida del text i contrast (baix, per defecte, OLED amb negre pur i alt)
  • Avís amb l'hora de desbloqueig quan el servidor aplica el límit de peticions

Apple Watch

  • Línia de temps
  • Notificacions
  • Publicar tuts curts

Arquitectura

  • Patró: MVVM amb SwiftUI
  • Xarxa: ClientAPI — crida directa a la API REST de Mastodon
  • Autenticació: OAuth 2.0 via ASWebAuthenticationSession, token guardat al Keychain
  • Caché: SwiftData per a la línia de temps local
  • Watch: WatchConnectivity per a la comunicació iPhone ↔ Watch

Estructura del projecte

Tuts/
├── App/                        # Punt d'entrada (TutsApp.swift)
├── Components/                 # Components reutilitzables (CellaToot, etc.)
├── Funcionalitats/
│   ├── Announcements/          # Anuncis del servidor
│   ├── Autenticacio/           # Login, registre, OAuth
│   ├── Bookmarks/              # Marcadors
│   ├── Cerca/                  # Cerca, tendències i etiquetes
│   ├── Colleccions/            # Col·leccions de comptes
│   ├── Favorits/               # Favorits
│   ├── Filtres/                # Filtres, bloquejar, silenciar
│   ├── Llistes/                # Llistes personalitzades
│   ├── Notificacions/          # Notificacions
│   ├── Perfil/                 # Perfil d'usuari
│   ├── Publicar/               # Editor de tuts, esborranys i programats
│   ├── Servidor/               # Info del servidor
│   └── Timeline/               # Línia de temps i detall de tut
├── Models/                     # Models de dades (Status, Account, etc.)
└── Sistema/
    ├── Disseny/                # LiquidGlass, targetes i tema
    ├── Emmagatzematge/         # Keychain, caché, esborranys
    └── Xarxa/                  # ClientAPI
TutsNotificationService/        # Extensió que desxifra les notificacions push
TutsWatch Watch App/            # App de l'Apple Watch

API de Mastodon

Implementa els endpoints principals de l'API REST de Mastodon:

  • GET /api/v1/timelines/* — línies de temps
  • GET /api/v1/streaming (WebSocket) — temps real
  • GET/POST /api/v1/markers — posició de lectura
  • GET/POST /api/v1/statuses/* — tuts, favorits, impulsos, quotes
  • GET /api/v2/notifications — notificacions agrupades
  • GET/PATCH /api/v2/notifications/policy — política de notificacions
  • GET/POST /api/v1/notifications/requests/* — notificacions filtrades
  • POST/PUT/DELETE /api/v1/push/subscription — notificacions push
  • GET/POST /api/v1/follow_requests/* — sol·licituds de seguiment
  • GET /api/v1/accounts/* — perfils i relacions
  • GET /api/v2/search — cerca
  • POST /api/v1/apps + OAuth 2.0 — autenticació
  • GET /api/v1/lists/* — llistes
  • GET/POST/PATCH/DELETE /api/v1/collections/* — col·leccions
  • GET/POST /api/v1/scheduled_statuses — tuts programats
  • GET/POST /api/v1/tags/* i /api/v1/featured_tags — etiquetes
  • GET /api/v1/announcements — anuncis del servidor
  • GET /api/v1/bookmarks — marcadors
  • GET /api/v1/filters/* — filtres
  • GET /api/v1/trends/* — tendències

Privacitat

Política de privacitat

Llicència

AGPL-3.0

Autor

spla