workspace
workspace
¶
Projects, habits and notes for the native Succès workspace.
The phase-two entities use the same local-first operation log as tasks. They stay on the Mac, keep tombstones for later replication, and materialize data that phase one deliberately preserved inside archived Life OS snapshots.
Classes¶
SuccesWorkspaceStore
¶
Bases: SuccesStore
Task store extended with the remaining phase-two workspace entities.
Source code in src/diapason/succes/workspace.py
Methods:¶
create_task_edge
¶
create_task_edge(
project_id: str,
from_task_id: str,
to_task_id: str,
*,
op_id: str | None = None,
) -> dict[str, Any]
Relier deux tâches : « from débloque to ».
Le graphe doit rester sans boucle. Avec un cycle, « que puis-je faire maintenant ? » n'a plus de réponse — chaque tâche attend l'autre — et c'est précisément la question que la forme réseau existe pour poser. On refuse donc l'arête qui fermerait une boucle, en le disant.
Source code in src/diapason/succes/workspace.py
533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 | |
list_project_tasks
¶
Les tâches vivantes d'un projet, sous-tâches comprises.
list_tasks n'a jamais filtré par projet : l'outil vocal aurait
résolu « budget » parmi les quatre-vingt-cinq tâches de toutes les
listes, et relié deux tâches de projets différents.
Source code in src/diapason/succes/workspace.py
branches_de
¶
Les branches d'une tâche : amont, aval, la chaîne entière, ce que la terminer ouvre. Les champs sont ceux du fil (camelCase anglais).
Source code in src/diapason/succes/workspace.py
prochaines_actions
¶
Les faisables maintenant, celles qui libèrent le plus d'abord.
Source code in src/diapason/succes/workspace.py
reset_cycle
¶
Décoche toutes les tâches du projet : un tour recommence.
Explicite, jamais automatique : une régénération déclenchée par une simple lecture serait un GET qui écrit, et l'utilisateur verrait ses coches disparaître sans geste de sa part.
Source code in src/diapason/succes/workspace.py
reorder_projects
¶
Fixe l'ordre manuel des projets : order_index = rang dans ids.
Seuls les projets dont le rang change sont réécrits et journalisés,
pour que le maillage voie le nouvel ordre sans inonder la relève.
Source code in src/diapason/succes/workspace.py
list_habit_logs
¶
Return done=true logs keyed as habitId_YYYY-MM-DD for a date span.
Source code in src/diapason/succes/workspace.py
reorder_notes
¶
Fixe l'ordre manuel des notes citées : order_index = leur rang dans
ids. Seules les notes DONT le rang change sont réécrites et
journalisées — un glisser parmi dix ne doit pas inonder le journal de
relève (§5). Une note absente garde son rang ; un id inconnu est ignoré
en silence (la liste vient du réseau, elle n'est pas de confiance).
Source code in src/diapason/succes/workspace.py
list_note_categories
¶
Les catégories vivantes, dans l'ordre choisi par l'utilisateur.
Une catégorie EXISTE tant qu'une note vivante la porte — il n'y a pas d'état séparé à entretenir, donc pas d'orphelines. La table ne garde que l'ORDRE ; ses lignes mortes sont élaguées au passage, et une catégorie apparue depuis (note importée, synchronisée) se range à la fin, par ordre alphabétique.
Source code in src/diapason/succes/workspace.py
order_note_categories
¶
Mémorise l'ordre des sections — celui du glisser de Carlito.
Source code in src/diapason/succes/workspace.py
rename_note_category
¶
Renomme (ou dissout, si nouveau est vide) une catégorie entière.
Chaque note touchée est journalisée une à une : la synchronisation ne connaît que des notes, pas des catégories.