- Implemented multi-selection for notes with Ctrl+click, long-press, and keyboard shortcuts (Ctrl+A, Escape) - Added Gemini API integration with environment configuration and routes - Enhanced code block UI with improved copy feedback animation and visual polish - Added sort order toggle (asc/desc) for note lists with persistent state
3.0 KiB
3.0 KiB
titre, auteur, creation_date, modification_date, tags, status, publish, favoris, template, task, archive, draft, private, color, description
| titre | auteur | creation_date | modification_date | tags | status | publish | favoris | template | task | archive | draft | private | color | description | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| test-new-file | Bruno Charest | 2025-10-19T12:15:21-04:00 | 2025-11-02T16:41:10-04:00 | en-cours | false | true | false | false | false | false | false | #22C55E | Page personnelle de Bruno, un espace de travail où sont compilées notes et démonstrations Markdown variées. |
Page de Bruno
Section 1
Sous-section 1.1
Section 2
Sous-section 2.1
Sous-section 2.2
Sous-section 2.3
tableau:
| Colonne 1 | Colonne 2 | Colonne 3 |
|---|---|---|
| Cellule 1 | Cellule 2 | Cellule 3 |
| Cellule 4 | Cellule 5 | Cellule 6 |
Liens
Liste
- item 1
- item 2
- item 3
Liste à puces
- item 1
- item 2
- item 3
Liste à numérotation
- item 1
- item 2
- item 3
Bloc de code
console.log('hello world');
Bloc de citation
citation
Bloc de citation avec plusieurs lignes
citation avec plusieurs lignes
Bloc de citation avec plusieurs lignes et bloc de code
citation avec plusieurs lignes
"""Exemple de script Python illustrant l'usage des dataclasses."""
from dataclasses import dataclass, field
from datetime import datetime, timedelta
from typing import Iterable
@dataclass
class Task:
"""Représente une tâche planifiée avec une durée estimée."""
name: str
estimated_minutes: int
created_at: datetime = field(default_factory=datetime.now)
completed: bool = False
def remaining_minutes(self) -> int:
"""Calcule le temps restant estimé."""
return 0 if self.completed else self.estimated_minutes
def mark_done(self) -> None:
"""Marque la tâche comme terminée."""
self.completed = True
def summarize(tasks: Iterable[Task]) -> str:
"""Retourne un résumé textuel de la charge de travail."""
task_list = list(tasks)
total = sum(task.estimated_minutes for task in task_list)
remaining = sum(task.remaining_minutes() for task in task_list)
done = total - remaining
return (
f"Tâches: {len(task_list)}\n"
f"Terminé: {done} min\n"
f"Restant: {remaining} min\n"
f"Charge totale: {total} min"
)
def main() -> None:
"""Point d'entrée du script avec quelques exemples."""
tasks = [
Task("Préparer la réunion", estimated_minutes=45),
Task("Répondre aux emails", estimated_minutes=20),
Task("Prototyper l'interface", estimated_minutes=90),
]
# Marquer une tâche comme terminée pour illustrer la logique.
tasks[1].mark_done()
print("Résumé du jour:")
print(summarize(tasks))
# Afficher l'échéance approximative si toutes les tâches sont démarrées maintenant.
deadline = datetime.now() + timedelta(minutes=sum(task.remaining_minutes() for task in tasks))
print(f"Heure de fin estimée: {deadline:%H:%M}")
if __name__ == "__main__":
main()