Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ jobs:
run: cargo install cargo-deb

- name: Build .deb
run: cargo deb -p rss-gui -- --release
run: cargo deb -p rss-gui --no-build

- name: Upload release assets
uses: softprops/action-gh-release@v2
Expand Down
157 changes: 28 additions & 129 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,158 +1,57 @@
# ReadRSS

Un lecteur RSS simple et moderne en Rust, avec rafraîchissement en arrière‑plan et une interface graphique fluide (egui/wgpu).
Lecteur RSS minimal et rapide. Rien d’inutile.

## Ce que vous pouvez faire
## Utiliser

- Ajouter des flux RSS (HTTPS uniquement) et parcourir leurs articles
- Voir la liste agrégée de tous vos flux ou filtrer par flux
- Marquer les articles comme lus / non lus, « tout marquer comme lu »
- Ouvrir les articles dans votre navigateur par défaut (pas de WebView intégré)
- Découvrir des flux recommandés (catégories)
- Personnaliser l’interface (thème, largeur du panneau, aperçus, pagination) via la page Paramètres

## Installation rapide

Prérequis:
- Linux, macOS ou Windows récent
- Rust stable (via rustup)

Commandes:
Prérequis: Rust stable.

```bash
# Installer/activer la toolchain stable
rustup default stable

# Vérifier que tout est prêt
cargo --version

# Lancer l’application
cargo run -p rss-gui
```

Astuce: au premier lancement, un dossier de configuration utilisateur est créé automatiquement.

## Utilisation en 30 secondes

1) Dans le panneau de gauche, saisissez un titre (optionnel) et l’URL d’un flux RSS en HTTPS, puis « Ajouter ».

2) Cliquez sur un flux pour voir ses articles, ou sur « Tous » pour la vue agrégée.

3) Cliquez sur un titre pour voir le détail; utilisez « Ouvrir » pour lire l’article dans votre navigateur.

4) La page « ⚙️ Paramètres » vous permet d’ajuster le thème, l’affichage des aperçus et le nombre d’articles listés.

## Emplacement des données
En 3 actions:
- Ajouter un flux (HTTPS). Panneau gauche → titre (optionnel) + URL → « Ajouter ».
- Lire. Cliquez un article → « Ouvrir » pour le navigateur.
- Régler l’interface. « ⚙️ Paramètres » (thème, aperçus, pagination, largeur panneau).

Les fichiers sont stockés par utilisateur dans:

- Linux: `~/.config/readrss/`
- macOS: `~/Library/Application Support/readrss/`
- Windows: `%APPDATA%/readrss/`

Contenu typique (créé à la demande):
- `config.json` — paramètres de l’app (thème, interface, flux)
- `feeds.json`, `articles_store.json`, `read_store.json`, `seen_store.json` — vos données

Exemple minimal de `config.json` (toutes les clés sont optionnelles, des valeurs par défaut existent):

```json
{
"theme": {
"background_color": [30, 30, 30],
"panel_color": [37, 37, 38],
"accent_color": [0, 122, 204],
"text_color": [204, 204, 204],
"secondary_text_color": [150, 150, 150],
"border_color": [60, 60, 60]
},
"feeds": {
"update_interval_minutes": 30,
"max_articles_per_feed": 100,
"request_timeout_seconds": 10,
"retry_attempts": 3
},
"ui": {
"font_size": 14.0,
"left_panel_width": 300.0,
"show_article_preview": true,
"articles_per_page": 20
}
}
```

La page « Paramètres » modifie et sauvegarde automatiquement ce fichier.

## Remarques plateforme (Linux)

- Emojis: installez une police dédiée si besoin (ex: Noto Color Emoji)

```bash
sudo apt update && sudo apt install -y fonts-noto-color-emoji
```

- Graphique: `wgpu` sélectionne automatiquement Vulkan/GL. Si votre environnement est minimal, installez les bibliothèques X11/Wayland usuelles.

## Structure du projet

- `rss-core`: bibliothèque cœur (polling, parsing, stockage, API)
- `rss-gui`: application graphique (egui/eframe) qui consomme `rss-core`

## Packaging

- Build release (binaire):
## Installer

Build local:
```bash
./scripts/build_release.sh
```

- Paquet .deb (nécessite cargo-deb):

Paquet Debian (si vous préférez):
```bash
./scripts/build_deb.sh
# Le .deb est produit dans target/debian/
```

Note: le .deb installe le binaire sous `/usr/bin/readrss` et le README dans `/usr/share/doc/readrss/`.

## CI

Un workflow GitHub Actions exécute:
- Clippy avec `-D warnings`
- La suite de tests
- `cargo audit` en respectant `.cargo/audit.toml` (ignorance contrôlée de l’avertissement « paste » transitif via wgpu)
Releases GitHub: binaires Linux (.tar.gz + .deb) et Windows (.zip).

### Release automatisée
## Données & config

- Publier une nouvelle version:

```bash
git tag v0.1.0
git push origin v0.1.0
```

La CI crée/alimente la Release et attache automatiquement:
- Linux: `rss-gui-linux-x86_64.tar.gz` et le `.deb` généré
- Windows: `rss-gui-windows-x86_64.zip`

## Sécurité et limites réseau
Emplacement par utilisateur:
- Linux: `~/.config/readrss/`
- macOS: `~/Library/Application Support/readrss/`
- Windows: `%APPDATA%/readrss/`

- Seules les URLs HTTPS sont autorisées (hors loopback en dev/tests)
- Timeout par requête configurable (par défaut 15 s)
- Taille maximale d’un flux: 10 MiB
- Retries avec backoff exponentiel (base 500 ms)
Fichiers clés:
- `config.json` (géré par la page Paramètres)
- `feeds.json`, `articles_store.json`, `read_store.json`, `seen_store.json`

## FAQ rapide
## Sécurité

- Pourquoi HTTPS obligatoire pour ajouter un flux ?
> Pour la sécurité. Les URLs HTTP sont refusées par l’UI.
- Ajout de flux: HTTPS obligatoire (loopback autorisé en dev/tests)
- Timeout requêtes, retries avec backoff, taille max flux 10 MiB

- Où sont les aperçus des articles ?
> Ils sont affichés en texte brut (converti depuis HTML). Désactivez‑les dans « Paramètres » si vous préférez une liste plus compacte.
## Plateforme (Linux)

- Comment lire les articles avec leur mise en page ?
> Cliquez sur « Ouvrir »: l’URL s’ouvre dans votre navigateur par défaut.
Emoji manquants ?
```bash
sudo apt install -y fonts-noto-color-emoji
```

## Licence

MIT — voir le champ `license` dans `Cargo.toml`.
MIT
4 changes: 2 additions & 2 deletions scripts/build_deb.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ if ! command -v cargo-deb >/dev/null 2>&1; then
cargo install cargo-deb
fi

echo "[Build] cargo deb -p rss-gui -- --release"
cargo deb -p rss-gui -- --release
echo "[Build] cargo deb -p rss-gui"
cargo deb -p rss-gui

TARGET_DIR=${CARGO_TARGET_DIR:-}
if [[ -z "${TARGET_DIR}" && -f .cargo/config.toml ]]; then
Expand Down