7 points par GN⁺ 2023-12-23 | 1 commentaires | Partager sur WhatsApp
  • Heynote est un scratchpad de type tampon de texte persistant qui centralise les textes temporaires, réponses d’API, notes de réunion et listes de tâches qui se dispersent pendant le développement
  • L’unité de travail est le bloc : on crée un nouveau bloc avec ⌘-Enter, et ⌘-A permet de sélectionner rapidement uniquement le contenu du bloc courant
  • En s’appuyant sur le langage défini pour chaque bloc, comme JavaScript, JSON ou Markdown, l’outil applique la coloration syntaxique et le formatage automatique
  • Les blocs Math gèrent les variables, fonctions, conversions d’unités et même les conversions de devises, pour enchaîner de petits calculs dans leur contexte
  • Avec plusieurs tampons de notes, l’organisation par répertoires, la correspondance avec des fichiers, les images inline et les annotations, l’application vise à réunir l’espace de travail temporaire des développeurs dans une seule app

Scratchpad basé sur des blocs

  • La structure de base de Heynote est un grand tampon de texte persistant divisé en plusieurs blocs
  • Un nouveau bloc se crée avec ⌘-Enter, et si l’on appuie sur ⌘-A dans un bloc, cela sélectionne uniquement le contenu du bloc courant au lieu du document entier
  • Il convient bien pour coller rapidement des éléments qu’il est difficile de conserver temporairement ailleurs
    • un brouillon de message Slack qu’on ne veut pas envoyer par erreur
    • la réponse JSON d’une API en cours d’utilisation
    • des notes de réunion
    • une liste de tâches quotidienne

Fonctions de blocs pour le code et la documentation

  • Chaque bloc peut avoir son propre paramétrage de langage, comme JavaScript, JSON ou Markdown
  • Selon ce paramétrage, la coloration syntaxique est appliquée, et le formatage automatique par bloc est également pris en charge
  • Plusieurs langages de programmation sont pris en charge, ce qui permet de manipuler dans un même tampon des extraits de code et des notes de documentation

Bloc Math pour un usage calculatrice

  • Le bloc Math peut être utilisé comme un scratchpad de calculatrice pour des calculs simples
  • Il prend en charge les variables, fonctions et conversions d’unités, y compris les conversions de devises
  • Il est adapté aux calculs rapides « sur un coin de table » sans quitter le flux de prise de notes

Plusieurs tampons et organisation des fichiers

  • En plus du tampon Scratch par défaut, on peut créer autant de tampons de notes que souhaité
  • Les principaux raccourcis pour travailler avec les tampons sont les suivants
    • ⌘-N : créer un nouveau tampon
    • ⌘-S : déplacer le bloc courant vers un nouveau tampon
    • ⌘-P : basculer rapidement entre les tampons
  • Les tampons peuvent être organisés en répertoires, et chaque tampon correspond à un fichier sur le disque

Images et annotations

  • Heynote prend en charge les images inline
  • On peut coller une image depuis le presse-papiers ou glisser-déposer un fichier image dans un tampon
  • Dans l’éditeur, il est possible de sélectionner et redimensionner les images, ainsi que de les remettre rapidement dans le presse-papiers système
  • Un outil de dessin léger intégré permet d’ajouter des annotations à main levée sur les images
  • Une image annotée peut être mise à jour dans le presse-papiers comme nouvelle version en un clic ou via une touche, puis collée ailleurs

Téléchargement

  • La dernière version stable est la 2.9.0
  • Les téléchargements pris en charge sont disponibles pour Mac Universal, Mac Arm, Mac Intel, Windows, AppImage et Snap
  • Une version bêta, 2.9.1-beta, est également proposée
  • L’ensemble des versions est disponible sur All releases

1 commentaires

 
GN⁺ 2023-12-23
Avis sur Hacker News
  • Vraiment excellent. Ça correspond presque exactement à ce que j’attendais d’un scratch pad.
    Si je peux ajouter une demande de fonctionnalité, j’aimerais qu’il prenne en charge un flux « inversé » où les nouveaux blocs sont ajoutés en haut de la page plutôt qu’en bas. Un scratch pad s’ouvre toujours en haut, et avec le temps les anciens blocs « coulent » vers le bas, de sorte que le contenu le plus pertinent reste en haut
    Ça correspond mieux à ma façon de penser. Cela dit, comme d’autres l’ont dit dans ce fil, je suis aussi d’avis qu’il faut ignorer la plupart de ces demandes de fonctionnalités et préserver la simplicité actuelle. Y compris la mienne

    • Ravi que ça te plaise :)
      Je vois l’idée du mode « inversé ». Je me demande s’il suffirait de pouvoir configurer C-Enter pour insérer un nouveau bloc avant le bloc courant, et de faire en sorte que Heynote place le curseur au démarrage au début du buffer plutôt qu’à la fin comme aujourd’hui
    • J’aime bien cette approche aussi. Mais si tous les blocs sous le curseur se déplacent à chaque fois qu’on crée une nouvelle ligne, ça risque d’être distrayant
      L’UX idéale serait d’ajouter un nouveau buffer en haut, tout en gardant assez de padding pour remplir la fenêtre afin qu’on ne voie pas les anciens blocs bouger pendant la saisie
      Je n’ai pas encore téléchargé l’app, mais c’est peut-être déjà proche de ce fonctionnement. En tout cas, ça a l’air bien et j’ai hâte d’essayer
    • Cette fonctionnalité supplémentaire serait très utile. J’utilise déjà mes documents Markdown comme ça pour l’ordre de prise de notes
    • J’ai créé une app de notes similaire. Les notes sont ajoutées en haut, et lorsqu’on les modifie, elles sont « remontées » tout en haut : https://thinktype.app/
    • Avec cette fonctionnalité, ce serait aussi très pratique pour faire un journal quotidien
  • Je paierais probablement si les conditions suivantes étaient réunies : raccourcis vi, affichage de l’emplacement du fichier pour pouvoir le déplacer ou le synchroniser/sauvegarder entre plusieurs appareils, et tri inversé
    Vraiment, vraiment bien

  • Ça a l’air très sympa. J’aime l’idée des blocs, donc je vais le télécharger pour l’essayer
    Comme souvent, il y a beaucoup de discussions sur Electron, donc au cas où tu ne l’aurais pas encore regardé, je voulais juste mentionner Tauri. C’est un outil proche d’Electron, basé sur Rust, qui utilise les webviews système au lieu de Chromium, ce qui réduit pas mal la taille du bundle et l’usage mémoire
    D’après le code, il ne semble pas y avoir énormément de code spécifique à Electron, donc si tu veux toucher à Rust, le remplacement n’est peut-être pas si difficile. L’app de montage vidéo que je développais avait commencé sur Electron avant de passer à Tauri en cours de route, et ça s’est plutôt bien passé
    Ce n’est pas une demande, tu peux totalement l’ignorer

    • J’ai étudié Tauri au début du projet. J’ai choisi Electron pour sa maturité et sa grande base d’utilisateurs
      Après avoir utilisé d’autres outils cross-platform pour mobile, j’avais des attentes très basses, mais en pratique travailler avec Electron a été très agréable et je ne regrette pas ce choix. Presque aucun bug, un gros écosystème, et c’était facile d’automatiser les builds multi-plateformes ainsi que les mises à jour automatiques
    • Ce qui me déçoit avec Tauri, c’est qu’il utilise WebKitGtk2 sur Linux. C’est assez médiocre côté performances, et le support fonctionnel est plus limité que WebKit sur macOS ou Webview2 sur Windows
    • J’ai lu que la partie Rust était pénible à utiliser. Je serais curieux de savoir si tu as trouvé Tauri productif
  • J’aime vraiment beaucoup. C’est simple et solidement réalisé. J’avais envie de construire quelque chose de similaire depuis un moment, donc je finirai peut-être par forker ça pour bricoler un peu
    En ce moment, dans Obsidian, je crée une nouvelle note chaque jour et je la découpe en « blocs » avec des séparateurs Markdown (---), mais ça, c’est bien plus propre
    La force de cette approche, c’est qu’elle rend la capture extrêmement facile. Il suffit de créer un nouveau bloc et d’écrire immédiatement, sans se demander où le ranger ni comment l’intégrer à une structure existante. Quand on commence à se poser ce genre de questions, on finit souvent par perdre l’idée avant même d’avoir trouvé où la mettre
    L’inconvénient, évidemment, c’est de retrouver les choses ensuite. Ce serait bien de pouvoir ajouter des tags ou des titres aux blocs, puis de rechercher par tags ou par titres. Plus ambitieux encore, ce serait génial d’expérimenter avec des LLM et des embeddings pour étiqueter, résumer, classer et regrouper automatiquement les blocs
    Il y a beaucoup de directions possibles, mais je suis aussi d’accord avec ceux qui disent qu’il ne faut pas ajouter trop de fonctionnalités au point de perdre la simplicité qui fait l’attrait de départ. Et je me demande aussi comment les performances sont gérées quand le buffer devient très gros

    • Ce n’est pas open source. Le projet utilise Commons Clause, qui limite très fortement ce qu’on peut faire. Le nom prête à confusion
    • Les performances sont en grande partie gérées par CodeMirror(https://codemirror.net/), l’éditeur sur lequel Heynote est construit. Il semble assez bien gérer des buffers de grande taille
      Cela dit, j’ai remarqué quelques petits problèmes de performances avec de très gros blocs dans certains modes de langage
    • J’utilise Obsidian pour des notes de programmation, des journaux de résolution de problèmes, de la réflexion « sur papier », de l’écriture et de la validation d’hypothèses. C’est très puissant et les performances sont plutôt bonnes. N’hésitez pas à me poser n’importe quelle question
  • Je viens de le télécharger et de l’installer, et c’est vraiment impressionnant. J’aime bien le concept de bloc mathématique, mais il m’a fallu quelques secondes pour comprendre comment convertir un nouveau bloc en bloc mathématique
    La mention ⌘ + L Change block language en haut ne m’a pas fait penser immédiatement à « changer le type de bloc ». Une légère reformulation comme ⌘ + L Change block language (Math, Markdown, etc.) serait utile
    À part ça, je trouve que c’est un excellent projet qui répond exactement à un vrai besoin

    • Bonne suggestion, je vais changer ça
  • J’adore. C’est exactement ce qu’il me fallait. Jusqu’ici, j’utilisais pour ça un groupe WhatsApp où j’étais seul
    Côté demandes de fonctionnalités : un paquet Arch, l’inclusion des résultats mathématiques dans buffer.txt et dans ce qui est copié après Ctrl+a, la modification de la police et du thème de couleurs, la prise en charge des images et médias dans les blocs Markdown, des horodatages de bloc, le rechargement de fichier, et une éventuelle version mobile
    Pour les couleurs en particulier, j’aimerais garder une palette minimale comme maintenant, mais avec quelques couleurs configurables plutôt qu’un CSS personnalisé. Pour le collage d’images, ce serait bien d’avoir un comportement comme le Markdown de VS Code : avec Ctrl+v, l’image est insérée et sauvegardée dans un fichier. Un aperçu Markdown serait sympa aussi, mais je comprends si c’est considéré hors périmètre
    Pour les horodatages, ce serait particulièrement pratique si createdAt et updatedAt étaient enregistrés sur la ligne avec le symbole infini dans buffer.txt, car on pourrait les extraire facilement avec grep et cut. Tu as dit plus bas que le rechargement de fichier était en cours pour permettre des sauvegardes via Git ou autre, et ça aussi, j’ai hâte de voir

    • Ajouter le résultat du calcul à la ligne copiée depuis un bloc math semble possible, et j’aime bien l’idée aussi
      Je suis d’accord que ce serait bien que le résultat apparaisse aussi dans buffer.txt, mais ça me semble plus difficile à cause de détails d’implémentation
      Pour la configuration de la police et du thème de couleurs, pour l’instant je penche plutôt vers une réduction du nombre d’éléments configurables, donc il est peu probable que je l’ajoute
      Les horodatages de bloc sont sur la liste des choses à faire, tout comme le rechargement de fichier. Le mobile sera probablement compliqué
    • J’ai vu plus bas qu’il est prévu d’ajouter une PWA et une version avec stockage local. Dans ce cas, la demande mobile peut être ignorée ; à la place, ce serait bien d’avoir un bouton de téléchargement sur mobile pour pouvoir synchroniser avec le desktop via Git ou Drive, par exemple
    • Puisque c’est fait avec Electron, permettre d’ajouter du CSS à la page HTML permettrait d’implémenter les polices et couleurs
      Et dans ce cas, certaines notes pourraient même utiliser un CSS plus sophistiqué
  • C’est vraiment, vraiment bien. L’app a très vite gagné une place permanente dans mon Dock
    J’ai une demande pour laquelle je paierais volontiers. Ce serait génial de pouvoir exécuter des blocs de code et produire leur sortie. J’ouvre souvent la console du navigateur pour tester du JS, et pouvoir le faire juste à côté de mes autres notes serait excellent

  • Ça fait beaucoup penser à org-mode de https://orgmode.org/. Je me demande s’il est prévu d’ajouter des fonctionnalités de type org, comme l’évaluation de blocs de code
    Personnellement, je ne pense pas quitter org-mode, mais ce serait bien d’avoir au moins une application unique à recommander aux personnes rebutées par Emacs

    • Je n’ai jamais regardé orgmode, donc je ne sais pas quelles fonctionnalités il propose. À part pour les blocs math, il n’est pas prévu d’ajouter l’évaluation de blocs de code, car cela augmenterait trop la complexité
  • Excellent. Pour ce type d’usage, je revenais toujours à TextEdit, mais maintenant je vais essayer Heynote et voir ce que ça donne
    Ça fait plaisir de voir ce genre de chose sur HN, comme au bon vieux temps. Je me demande s’il est prévu de prendre en charge les raccourcis vi

    • C’est cool, mais sans raccourcis vi, ça me semble peu pratique pour moi
      Du coup, je me demande si je pourrais obtenir quelque chose de similaire avec un plugin Vim, ou même le faire moi-même. Si c’était dans le terminal, il y aurait aussi l’avantage de pouvoir le laisser dans une session tmux persistante et y accéder à distance
    • Moi aussi, je suis d’accord. Ce serait bien d’avoir des raccourcis vi/vim
  • J’aimerais aussi avoir des retours :)
    Dépôt GitHub de Heynote : https://github.com/heyman/heynote

    • Bonne application. J’ai toujours gardé un scratchpad pour ce genre d’usage, mais sans jamais trouver de solution vraiment satisfaisante. Soulver est bien, mais trop orienté maths, et les onglets VS Code sont corrects, mais la gestion de plusieurs buffers selon les langages est pénible. J’aime bien l’ensemble des fonctionnalités proposées ici
      J’ai quelques retours pour améliorer ou clarifier certains points. Je n’ai trouvé le raccourci pour changer de langage qu’après avoir survolé l’élément de barre d’état avec la souris ; il devrait y avoir une entrée de menu qui affiche le raccourci
      Le basculement clair/sombre et la vérification des mises à jour ne sont pas des éléments qu’on trouve d’habitude dans la barre d’état d’autres applications ; il vaudrait mieux les mettre dans les réglages. L’application devrait aussi suivre par défaut le mode clair/sombre du système, avec éventuellement une option de surcharge par application
      S’il n’y a pas assez de choses à mettre dans la barre d’état, on pourrait même la supprimer complètement. En l’état, on a l’impression qu’elle regroupe un peu de tout juste pour justifier sa présence
      L’identité visuelle verte est correcte, mais elle donne une personnalité assez marquée à l’application. Ça vaut peut-être le coup de se demander si l’app doit avoir une personnalité aussi forte. Une palette plus neutre, mieux adaptée à macOS, ou plusieurs couleurs d’accentuation dont une option neutre, pourraient être envisagées
      427 MB, c’est énorme. Heureusement, sur les petits documents, l’application ne consomme pas tant de mémoire, mais le bundle est vraiment trop gros pour ce que c’est. Je me demande pourquoi ffmpeg est inclus, si GLES est réellement nécessaire, et si le framework Electron de base dépasse vraiment les 300 MB
      Il y a une option de keymap, mais après avoir effacé le contenu initial, j’ai perdu la keymap elle-même. Ce serait bien d’avoir une aide intégrée dans l’application ou au moins une page de documentation reliée depuis le menu d’aide
      Pouvoir changer de police serait aussi appréciable. Je ne comprends pas non plus le modèle de sauvegarde. Je me demande où les données sont stockées, si c’est contrôlable, si une sauvegarde est nécessaire, ou à quelle fréquence la persistance se fait. J’aimerais aussi savoir s’il est possible de placer ça dans un stockage cloud pour synchroniser entre appareils, et si c’est déjà le cas, si on peut le désactiver
      Personnellement, je n’aime pas trop quand une icône d’application contient le nom de l’app. La plupart des apps ne le font pas, donc je proposerais une icône plus discrète
    • Une petite suggestion : ce serait bien d’avoir un raccourci pour insérer la date/l’heure actuelles
      Ou alors une option qui garde la trace de l’heure de création du bloc et l’affiche discrètement quelque part dans l’interface de chaque bloc. Quand on recherche de vieilles notes comme ça, la date est très utile
    • Je me demande s’il est possible d’utiliser une police à chasse variable. Ce n’est pas clair sur le site web, et pour moi c’est indispensable
    • Je me demande s’il y a une chance d’avoir un build arm64 pour Linux. Je peux bien sûr le compiler moi-même, mais ce serait mieux de ne pas avoir à le faire
    • J’aime beaucoup. L’idée est bonne et l’exécution est soignée. Mon installation macOS arm fait moins de 100 MB
      J’ai vu que quelqu’un demandait des onglets, mais moi, j’aimerais plutôt pouvoir ouvrir plusieurs fenêtres