Journal des modifications

Chaque changement notable apporté à XDragMover, release par release.

3.4.0 2026-07-13

Ajouté

  • Localisation en allemand, russe et français. L'interface de XDragMover (réglages, barre des menus, alertes) suit désormais la langue du système via un String Catalog ; toute autre langue revient à l'anglais.

Corrigé

  • La suppression d'un motif dans l'onglet « Fenêtres exclues » des réglages pouvait faire planter l'application lorsqu'il ne s'agissait pas du dernier de la liste — un index de tableau obsolète resté accroché au champ de texte d'une autre ligne encore visible. Reproduit en direct et corrigé.

3.3.1 2026-07-13

Modifié

  • Identifiant de bundle changé du placeholder com.example.XDragMover vers de.xdragmover (de.xdragmover.tests pour la cible de test) — la forme DNS inversée du propre domaine du projet, xdragmover.de. Quiconque a une version précédente installée devra réaccorder une fois l'accès Accessibilité, car macOS lie cette autorisation à l'identifiant de bundle.

Corrigé

  • make dmg échouait à signer le conteneur .dmg sur le GitLab Runner (« The following argument was not expected: --timestamp ») parce que son PATH non interactif résolvait un binaire différent et sans rapport nommé codesign avant le vrai binaire d'Apple — appelle désormais explicitement /usr/bin/codesign, contournant entièrement la résolution du PATH.

3.3.0 2026-07-13

Ajouté

  • Un clic central sur l'icône du Dock d'une application ouvre une nouvelle fenêtre/instance de celle-ci (US-16). Désactivé par défaut ; à activer dans Réglages → Gestes → « Clic central sur l'icône du Dock pour une nouvelle instance ».

Modifié

  • Icône de l'application restaurée (Dock/Finder/bundle .app), avec un nouveau design (assets/logo.png) à la place de celle retirée en 3.1.0 pour des raisons de marque déposée.
  • Les builds de release sont désormais signés avec une identité payante « Developer ID Application » et notarisés+agrafés (stapled), si bien qu'une machine n'ayant jamais exécuté cette application ne voit plus l'avertissement « développeur non identifié » de Gatekeeper — voir la section « Notarization » de DEVELOPMENT.md.

Corrigé

  • Un clic central sur l'icône du Dock du Finder alors que le Finder était déjà lancé (c'est-à-dire pratiquement toujours) échouait purement et simplement avec « L'application « Finder.app » n'a pas pu être ouverte. » au lieu d'ouvrir une nouvelle fenêtre (US-16). Un clic central sur l'icône du Dock d'une application déjà lancée appuie désormais directement sur l'élément de menu « New Window » de cette application via l'API Accessibilité lorsqu'elle en possède un (couvre le Finder et la plupart des applications basées sur des fenêtres, par ex. iTerm2), plutôt que de forcer une nouvelle instance ; les applications sans un tel élément de menu (par ex. les applications basées sur des documents comme TextEdit) ouvrent toujours une nouvelle instance comme auparavant.
  • Un clic central sur l'icône du Dock d'iTerm2 lançait tout un nouveau processus lourd (son propre démon shell/session) par clic au lieu d'une simple nouvelle fenêtre dans l'application déjà ouverte (US-16) ; corrigé par le même appui sur l'élément de menu « New Window » décrit ci-dessus.
  • Un clic central sur une icône du Dock pouvait laisser le menu contextuel de l'icône du Dock ouvert à l'écran à côté de la nouvelle fenêtre/instance (US-16) ; le clic central est désormais consommé lorsque cette fonctionnalité agit dessus.

3.2.0 2026-07-11

Ajouté

  • Vérificateur de mise à jour optionnel (Réglages → Général → « Rechercher des mises à jour », désactivé par défaut). Une fois activé, vérifie le dépôt de release public à la recherche d'une nouvelle version 5 minutes après le lancement puis une fois par jour ; si une version est trouvée, affiche une boîte de dialogue avec un bouton « Télécharger » pointant directement vers le nouveau .dmg.

3.1.0 2026-07-09

Modifié

  • Retrait temporaire de l'icône personnalisée de l'application ajoutée en 3.0.0 (son design intégrait la silhouette du logo Apple, un possible problème de marque déposée) ; l'application revient désormais à l'icône par défaut générée par macOS en attendant qu'un nouveau design soit prêt.

3.0.0 2026-07-09

Ajouté

  • Fenêtres exclues (réglages) : une liste de motifs regex comparés au nom d'une application — toute application de la liste ne peut jamais être déplacée ni redimensionnée. Les entrées sont normalement ajoutées via « Ajouter depuis les fenêtres ouvertes… », un sélecteur listant les applications actuellement ouvertes qui génère un motif de correspondance exacte (par ex. ^Calculator$) pour celle choisie ; chaque motif reste ensuite modifiable en texte brut (« Ajouter un motif » ajoute une ligne vide), les regex invalides s'affichent en rouge sans rien bloquer.
  • Console de débogage : un bouton « Verrouillage du défilement ». Désactivé (par défaut, persistant) garde la console défilée jusqu'à la ligne la plus récente à chaque nouvelle entrée, comme auparavant. Activé permet de faire défiler librement l'historique sans être ramené en bas à chaque nouvelle ligne de journal.
  • « Le focus suit la souris » affiche désormais un avertissement unique (« Le focus suit la souris est expérimental… », avec une case « Ne plus afficher ») la première fois qu'il est activé dans les réglages, expliquant qu'il repose sur un mécanisme macOS non documenté et peut se comporter de manière imprévisible dans certaines applications. Le README le mentionne désormais aussi explicitement plutôt que de le sous-entendre seulement. L'onglet « Le focus suit la souris » affiche en outre cet avertissement en permanence (pas seulement une fois), donc visible à chaque ouverture de cet onglet, pas seulement à la première utilisation.

Modifié

  • Projet renommé : KDEMoverSizerMacOSXDragMover. Affecte le slug/remote du projet GitLab, le projet/les cibles/le schéma Xcode, les deux identifiants de bundle (désormais com.example.XDragMover/...Tests), ainsi que chaque référence dans le code source/la documentation/les scripts. Comme pour le renommage précédent (2.0.0), le changement d'identifiant de bundle signifie que les installations existantes perdent leurs réglages persistés (nouveau domaine UserDefaults) et doivent réaccorder une fois l'autorisation Accessibilité après la mise à jour. Changement cassant pour les installations existantes, d'où un saut de version majeure lors de la release.
  • Icône de l'application remplacée par un nouveau design combinant la silhouette arc-en-ciel du logo Apple, le « X » de X.Org (depuis assets/X.Org_Logo.png) et la croix de flèches de déplacement, régénérée dans toutes les tailles mac idiom (16–1024 px).
  • Fenêtre des réglages réorganisée en onglets (Général, Gestes, Fenêtres exclues, Le focus suit la souris, À propos) via un contrôle segmenté, au lieu d'une longue liste défilante empilant verticalement chaque section.
  • « À propos de XDragMover » (barre des menus) ouvre désormais l'onglet À propos de la fenêtre des réglages (dernier onglet) au lieu d'une alerte modale séparée — le bouton « Afficher la console de débogage » a déménagé avec lui. Cliquer sur « À propos » alors que les réglages sont déjà ouverts sur un autre onglet bascule vers À propos, plutôt que de rester sur l'onglet affiché à ce moment-là.
  • Licence : ajout de LICENSE (GPLv3) et LICENSING.md expliquant l'arrangement de double licence qui garde possible une future publication sur l'Apple App Store ; Ralf Hartmann crédité comme auteur dans le README et la chaîne de copyright de l'application.

Corrigé

  • Le bouton « Verrouillage du défilement » de la console de débogage avait la même apparence (fond gris neutre) qu'il soit activé ou non, seul le minuscule glyphe de cadenas changeait — facile à manquer, donc il paraissait inactif même engagé. Il se remplit désormais de la couleur d'accent quand il est verrouillé, comme le font les autres boutons bascule de barre d'outils macOS pour indiquer un état actif/enfoncé.
  • Fenêtre des réglages : le premier élément (« Démarrer à l'ouverture de session ») et les boutons Annuler/OK avaient fini par se retrouver collés aux bords supérieur/inférieur de la fenêtre à mesure que des sections s'ajoutaient, car tout partageait une seule pile à hauteur fixe, non défilante. Les sections des réglages défilent désormais indépendamment dans la fenêtre, avec Annuler/OK épinglés dans un pied de page toujours entièrement rembourré sous un séparateur — les deux extrémités conservent leur espacement prévu, quelle que soit la quantité de contenu au-dessus.
  • Le curseur de délai pour le focus qui suit la souris était difficile à positionner précisément — son pas de 10 ms tassait 95 positions discrètes dans un contrôle de glissement étroit, facile à dépasser. Ajout d'un Stepper à côté pour un ajustement exact par clic ou maintien de ±10 ms ; le curseur reste disponible pour un positionnement grossier rapide.
  • Le déplacement/redimensionnement (et le focus qui suit la souris) restaient silencieusement cassés pendant toute une session si l'autorisation Accessibilité n'était pas encore accordée au moment exact du lancement — une situation de compétition courante avec l'invite système, et garantie après tout changement d'identifiant de bundle (par ex. le renommage ci-dessus), puisque cela exige toujours de réaccorder l'accès depuis zéro. Les event taps ne tentaient de démarrer qu'une seule fois, au lancement ; un accès accordé quelques instants plus tard n'était jamais remarqué, même si l'indicateur de statut de la fenêtre de débogage affichait correctement « accordé ». AccessibilityPermissionManager signale désormais les changements de confiance (onTrustedChange), et l'application retente alors de démarrer chaque tap activé — accorder l'accès à tout moment fait désormais fonctionner immédiatement le déplacement/redimensionnement/focus qui suit la souris, sans relancement nécessaire.

2.2.0 2026-07-06

Ajouté

  • « Quitter » demande désormais une confirmation (« Quitter KDEMoverSizerMacOS ? » / « Le déplacement de fenêtre, le redimensionnement et le focus qui suit la souris cesseront de fonctionner jusqu'à ce que vous la relanciez. » avec des boutons Quitter/Annuler) au lieu de se terminer immédiatement — cliquer accidentellement sur Quitter ou son raccourci ⌘Q ne tue plus silencieusement le déplacement/redimensionnement de fenêtre sans possibilité d'annuler.

2.1.0 2026-07-06

Ajouté

  • Véritable icône d'application (Dock/Finder/bundle .app) : un KDEMoverSizerMacOS/Assets.xcassets/AppIcon.appiconset intégré au projet Xcode via ASSETCATALOG_COMPILER_APPICON_NAME, généré dans toutes les tailles mac idiom requises (16–1024 px) à partir de assets/KDE_Window-Sizer-for-macOS_256px.png. Auparavant l'application n'avait aucune icône personnalisée. L'icône de l'élément de statut de la barre des menus (un SF Symbol) reste inchangée.

2.0.0 2026-07-06

Modifié

  • Projet renommé : KDESizeMoverMacKDEMoverSizerMacOS. Affecte le slug/remote du projet GitLab, le projet/les cibles/le schéma Xcode, les deux identifiants de bundle, ainsi que chaque référence dans le code source/la documentation/les scripts. Le changement d'identifiant de bundle signifie que les installations existantes perdent leurs réglages persistés (nouveau domaine UserDefaults) et doivent réaccorder une fois l'autorisation Accessibilité après la mise à jour — un coût ponctuel du renommage, pas une régression. Changement cassant pour les installations existantes, d'où le saut de version majeure.

1.1.1 2026-07-06

Corrigé

  • Les fenêtres Réglages et Journal de débogage ne passaient pas de manière fiable au premier plan réel — en tant qu'application uniquement barre des menus (.accessory), KDEMoverSizerMacOS n'est jamais l'application active, donc makeKeyAndOrderFront seul pouvait laisser l'une ou l'autre fenêtre derrière une autre application réellement active. Les deux appellent désormais d'abord NSApp.activate(ignoringOtherApps: true), comme le correctif déjà nécessaire pour la boîte de dialogue À propos pour la même raison.
  • L'icône du Dock apparaît désormais exactement lorsque la fenêtre Réglages ou Journal de débogage est ouverte (en plus de toujours s'afficher au lancement avec --debug), au lieu de ne jamais apparaître hors du mode --debug. Cela signifie aussi que cliquer sur l'icône du Dock pendant qu'elle est affichée ramène les Réglages au premier plan, de la même manière que relancer l'application le fait déjà.

1.1.0 2026-07-06

Ajouté

  • Véritable fenêtre de réglages (US-8) : « Démarrer à l'ouverture de session », l'activation/désactivation du focus qui suit la souris (US-4) et son délai (US-5 partiel) sont désormais tous modifiables depuis une vraie boîte de dialogue de réglages plutôt que seulement via des valeurs par défaut dans le code. Persisté avec UserDefaults (survit à la désinstallation de l'application) et versionné pour de futures migrations.
  • Bouton « Afficher la console de débogage » dans la boîte de dialogue À propos, permettant d'ouvrir la fenêtre du journal de débogage sans lancer avec --debug.
  • Atténuation pour les applications (confirmé : Firefox) qui se remettent elles-mêmes au premier plan après que le focus qui suit la souris leur donne l'entrée — voir USER_STORIES.md et la section « Optional: yabai-assisted window-order correction » de DEVELOPMENT.md.
  • BACKLOG.md et US-9 (changeur de fenêtres) ajoutés à USER_STORIES.md.
  • Interrupteurs de réglages indépendants pour le déplacement de fenêtre (US-1) et le redimensionnement de fenêtre (US-2), afin que chaque geste puisse être désactivé séparément.
  • Touche de modification déplacement/redimensionnement configurable (GestureModifier) : toute combinaison de Command/Option/Control/Shift, Shift seule exclue, remplaçant le auparavant codé en dur. La valeur par défaut reste Command.
  • Boutons OK/Annuler dans la fenêtre des réglages : OK la ferme en conservant les modifications ; Annuler rétablit chaque réglage (y compris « Démarrer à l'ouverture de session ») à son état au moment de l'ouverture de la boîte de dialogue.
  • Nouveaux réglages par défaut : le focus qui suit la souris est désormais désactivé par défaut (était activé) ; le déplacement et le redimensionnement restent activés par défaut.
  • DEVELOPMENT.md : une politique « Changing existing tests », et un nouveau TEST_CHANGELOG.md suivant spécifiquement les modifications des tests existants (séparé de ce fichier, qui ne couvre que le comportement visible par l'utilisateur).
  • Relancer l'application alors qu'elle est déjà en cours d'exécution (par ex. double-cliquer à nouveau dessus dans le Finder/Launchpad) affiche désormais la fenêtre des réglages au lieu de ne rien faire (US-10).
  • « Masquer de la barre des menus » (US-11) : un élément de menu et une case à cocher correspondante dans les réglages qui masquent entièrement l'élément de statut ; relancer l'application (US-10) est le moyen de faire revenir les réglages et de le désactiver à nouveau.
  • USER_STORIES.md : documentation d'une nouvelle US-12, pas encore implémentée — une liste d'exclusion par application pour le focus qui suit la souris.

Corrigé

  • Basculer « Démarrer à l'ouverture de session » depuis l'élément de la barre des menus ne laissait plus la case à cocher de la boîte de dialogue des réglages obsolète — la fenêtre des réglages est désormais recréée à neuf à chaque ouverture au lieu d'être mise en cache pour toute la session de l'application.
  • Le contenu de la fenêtre des réglages avait dépassé sa taille fixe, coupant les rangées du haut (« Démarrer à l'ouverture de session ») et du bas (OK/Annuler) au ras des bords de la fenêtre. Son cadre est désormais dimensionné généreusement selon la hauteur minimale réellement mesurée du contenu.

1.0.1 2026-07-05

Ajouté

  • US-3 : le focus suit la souris, étape 1 — la fenêtre sous la souris reçoit une véritable entrée clavier/souris après 150 ms d'immobilité, sans être remontée au-dessus des autres fenêtres. Implémenté via un mécanisme WindowServer privé/non documenté porté depuis le gestionnaire de fenêtres yabai, car l'attribut public AXFocused seul ne redirige pas l'entrée entre applications ; revient à AXFocused si ce mécanisme venait à être indisponible.

Corrigé

  • Le focus qui suit la souris ne ciblait pas de manière fiable la bonne fenêtre lorsque son application avait déjà plusieurs fenêtres ouvertes — restauration de la gestion du changement de fenêtre au sein d'une même application de yabai, perdue lors du portage initial.
  • Latence d'activation du focus qui suit la souris réduite de jusqu'à 350 ms à moins de 200 ms (délai d'immobilité de 150 ms + intervalle de sondage de 20 ms, tous deux réduits depuis 300 ms/50 ms).
  • Correction de notes obsolètes dans USER_STORIES.md (la liste des éléments de la barre des menus omettait « À propos » ; la lacune « ne se suspend pas quand un menu est ouvert » ne mentionnait pas US-3).

1.0.0 2026-07-05

Ajouté

  • Élément de menu « À propos » : une alerte modale avec le nom de l'application, la version, le build et le copyright — pas le panneau « À propos » standard partagé d'AppKit, qui d'après les tests ne passe pas de manière fiable au premier plan pour une application uniquement barre des menus (.accessory).

Corrigé

  • Info.plist lit désormais CFBundleShortVersionString/CFBundleVersion depuis les réglages de build au lieu de valeurs codées en dur et obsolètes.

0.1.8 2026-07-05

Aucun changement fonctionnel (juste un changement de version).

0.1.7 2026-07-05

Ajouté

  • US-1 : déplacer n'importe quelle fenêtre avec +glisser (clic gauche).
  • US-2 : redimensionner n'importe quelle fenêtre avec +glisser (clic droit), ancré au coin le plus proche.
  • Élément de statut de la barre des menus (Démarrer à l'ouverture de session, Quitter) et icône du Dock cachée hors du mode --debug.
  • Journalisation de débogage des événements de début/fin de déplacement/redimensionnement (et, pour le redimensionnement, quel coin a été saisi).
  • Les cibles make install, make uninstall et make dmg.

Corrigé

  • Signature Xcode : sélection d'une véritable équipe Apple Development pour la signature automatique.
  • L'application quittait de manière inattendue en basculant « Démarrer à l'ouverture de session ».
  • L'application quittait de manière inattendue en interagissant avec le menu déroulant de l'élément de la barre des menus (hors mode débogage).
  • Réactivité du redimensionnement : appels redondants à l'API Accessibilité ignorés et mises à jour du glissement regroupées sur la boucle d'exécution principale.
  • make dmg : le volume monté était invisible dans le Finder (d'abord à cause de -nobrowse, puis à cause d'un -mountpoint personnalisé hors de /Volumes/).

0.1.6 2026-07-05

Corrigé

  • Signature de code du package : un certificat auto-signé ne satisfait pas les vérifications d'autorisation Accessibilité de TCC ; passage à une signature basée sur l'équipe (Team).

0.1.5 2026-07-05

Aucun changement fonctionnel (juste un changement de version).

0.1.4 2026-07-05

Ajouté

  • CI : construit un package à chaque push vers dev, versionné avec le SHA du commit.

Documentation

  • Documentation de la translocation d'application (App Translocation) comme cause d'invites d'autorisation répétées.

0.1.3 2026-07-05

Corrigé

  • Les packages publiés redemandaient l'accès Accessibilité à chaque installation.

0.1.2 2026-07-05

Corrigé

  • make package/make release échouait à la construction à cause d'un problème de nettoyage du répertoire temporaire.

0.1.1 2026-07-05

Ajouté

  • Squelette initial du projet : demande d'autorisation Accessibilité, fenêtre de débogage, détection de la fenêtre sous la souris, tests unitaires.
  • Makefile (build/test/clean/all).
  • Workflow de branches git main/dev/feature/bugfix avec un processus de release scripté (make release).
  • Pipeline GitLab CI (test au push vers dev, release au push vers main).
  • make run et l'option --debug.

Corrigé

  • Nouvelle demande d'autorisation Accessibilité à chaque reconstruction/exécution.
  • Effets de bord au démarrage (invite d'autorisation, event taps) se produisant lorsque l'application est hébergée par XCTest.

← Retour à l'accueil