Smos Logo Smos

A comprehensive self-management system


The changelog for all releases of all of the Smos tools and libraries



  • smos: Fixed that the convRepinged and convRespondedButStillWaiting convenience functions that duplicate an entry would also duplicate their logbook.
  • Fixed that tests would fail after 2021-07-01.



  • smos-query: The entry and report reports now support multiple output formats: json, pretty-json, and yaml. This should allow for simpler integrations.

  • smos-scheduler: The next command to see when items will be activated next.


  • smos: Timestamps can now be deleted using the timestampsDelete and timestampsRemove actions.
  • smos-notify: smos-notify will no longer send a notification about timestamps that don't have a time component.
  • nixos-module.nix: The config attribute will now override other attributes.
  • smos-server: The server no longer migrates files periodically, but rather gives the administrator a button to do that instead.


  • smos-server: Removed the backup file migration looper. It went against the idea of backups.


  • smos-server: Now supports logging, and some logging has already been added as well.
  • smos: The convCopyContentsToClipboard action to copy the selected entry's contents to the system clipboard. This fixes issue 205. Thank you @distefam!
  • smos-web-server: An account overview page, including a button to delete your account.
  • smos-calendar-import: The rendered smos entries now all contain the description of the event as contents, instead of only the top-level event.
  • smos-notify: You can now put the magic string SMOS_NO_NOTIFY into event descriptions to have smos-notify ignore the event entirely.
  • smos-sync-client: Now sends the username of the user and the hostname of the device that makes the requests in the Referer header of every request. This information is only used for logging.
  • smos-web-server: Now requires a WEB_URL to be configured and sends it over in the Referer header of every request to the API.
  • smos: Fixed that the file browser filter was shown in an empty file browser as well.
  • smos-query: Added a header to each of the columns in the waiting report.
  • smos and smos-query: Made the filepaths not as prominent, visually.
  • smos and smos-query: Made report formatting more consistent
  • smos: No longer shows the .smos extension for every stuck project in the stuck projects report.
  • smos and smos-query: Allow thresholds for the waiting, stuck and work reports to be configured as more general time strings.
  • smos and smos-query: Added the waiting_threshold to allow for a custom per-entry waiting threshold.
  • smos: Fixed that the filter bar wasn't shown in the interactive work report. This fixes issue 206. Thank you @vidocco!
  • smos-server: Made the backup interval configurable
  • smos-github: Fixed that only pull requests would be listed but not issues.


  • smos-query: You can now configure colours more specifically: The 8 standard terminal colours and 24bit colours.
  • smos and smos-query: More strings are now recognised as durations: 5sec, 6 min, 7 hours, etc... This fixes Issue 104. See PR 195 for more details. Thank you @ketzacoatl!
  • smos-sync-client: Now sends the User-Agent header with smos-sync-client-<version>.
  • smos-web-server: Now sends the User-Agent header with smos-web-server-<version>.
  • smos-sync-client: Retry authenticating (once) if authentication fails. This should prevent users from having to remove the .cache/smos/sync-session.dat cache file when authentication fails because in the way authentication works.
  • smos-sync-client: More descriptive error messages if login fails.
  • smos-sync-client: Use the logger for warnings, so you can now ignore them by setting the log level higher than LevelWarn.
  • smos-client: A bit of a nicer error message when something goes wrong during the client's api-version check.
  • smos-sync-client: Use a separate lock file from the database file itself to lock the database. This prevents a SQLITE_BUSY infinite retry problem. See Issue 202 and PR 203. Thank you @jhbertra!
  • smos-query: Fixed that smos-query was not taking into account certain configurations for the work, waiting and stuck reports. This fixes Issue 201. Thank you @vidocco!
  • smos-query: Ripped out the functionality where you could configure smos-query in haskell. This functionality was complex and has already caused multiple bugs. It turns out that there is no need for this functionality because you can configure everything in smos-query with the different ways of option parsing. This is unlike smos where configuring it in Haskell is actually useful because you can define your own actions to key-bind. This change does not affect users that don't use smos-query as a library.


  • smos: A keybinding to open the url property in smos: <space>ou by default.
  • smos-server: Now performs auto-backups and backup garbage-collection beyond a maximum number of backups or backup size
  • smos-server: Now performs automatic smos file format migration for the smos files and smos backup files it stores
  • smos-server: Admin endpoint for the admin panel
  • smos-web-server: Admin panel with basic user information
  • smos-github: There is now a new column that suggests you to have another look at the issue/pr because there has been a recent enough update.
  • smos-github: Done entries are no longer mentioned in the list report.
  • smos-github: Show the state of the entries in the list report as well.
  • smos-query: Always show "no todo state" as (none) instead of the empty string.
  • smos-web-server: The footer icons now no longer overlap with the terminals.
  • smos-notify: Include the time that the notification is about in the notification as well.
  • smos: Fixed the way undo works in timestamps.
  • smos: Fixed the way undo works in tags.
  • smos: Fixed the way undo works in property names and property values.


  • smos-data: Updated the data format to include a data format version. This way, we can change change the data format in the future and not get crashes. The previous version was already forward-compatible with this change so you should not notice this change unless you wrote custom tooling to work with smos files. The newest data-format version is version 1.0.0.

  • smos: The components of an entry are now drawn in the following order:

    1. timestamps
    2. properties
    3. contents
    4. logbook
    5. history

    where they used to be drawn in this order:

    1. contents
    2. timestamps
    3. properties
    4. history
    5. logbook
  • smos-web-server: The web server now calls the API server during startup. This way the web server checks for both liveness of the API server and version compatibility.

  • smos-sync-client: The sync client now checks compatibility with the server's API version.

  • smos-client-gen: This package was empty


  • smos-query: The 'timestamp' projection. You can now use timestamp:DEADLINE as a column in your reports.
  • smos: Interactive agenda report with filter bar
  • smos: Filter bar for the interactive waiting report
  • smos: You can now exit any report using Esc, even when no file had been selected beforehand. Thank you @ketzacoatl!
  • smos: Interactive stuck projects report
  • smos: Filter bar for the built-in file browser
  • smos: The forestToggleCollapseEntryProperties action, bound to zp by default.
  • All commands: Autocompletion for the --config-file and --workflow-dir options.
  • smos: The propertiesEditProperty_goal action, bound to pg by default.
  • smos: Non-colour-based indicators of selection, for screens without colour or colour-blind users.
  • smos-query: All reports are now bicoloured by default. This can be configured via the configuration file.
  • smos-web-server: A fancy home page instead of just a login button.
  • smos-data: Allow spaces and parens in property values. Note that this means that smos files created in this new version of smos are potentially not backward compatible.
  • smos-scheduler: Explicitly setting a header's state to null now leaves the generated state as null instead of setting it to TODO. Thank you @prikhi!
  • smos-query: Moved the work report warnings to above the deadlines so that they are more in line with the order in which you should read the report.
  • smos-query and smos-report: Moved all the static configuration of the work report out of smos-query into smos-report so that smos can access it for the interactive work report.
  • smos: Hide properties of done entries on startup.
  • smos: The waiting report is now drawn with the configured threshold, instead of always with threshold 7.


  • smos: The browserSelectFirst and browserSelectLast actions, which are activated by gg and G respectively by default.
  • smos: The convArchiveFile function, activated by <space>fa by default. You can use it to archive a file while looking at the file.
  • Nixos module tests for home-manager configurations. The home manager module is now an official deliverable.
  • smos-archive: The timestamp appended to the filename during archiving now includes the local time of day instead of only the day.
  • smos: The contents of an entry are now aligned with its state and header instead of with its list indicator.
  • smos: Fixed a grammatical error in the description of the entrySelectTagsFromBack action.
  • smos: Fixed incorrect logic with respect to displaying an ellipsis when parts of an entry were collapsed and selected.
  • smos: Drastically reduced the idle CPU/memory usage by turning off idle GC.
  • smos: Changed the lister character - to a space for a cleaner UI.
  • smos-query: Fixed that check violations would not show up in the work report if the user had not configured any contexts.
  • Converted all test suites to using Sydtest and fixed three sources of flakiness as a result.


  • smos: You can now use Word-based movements in headers and contents. cursor/#12 Thank you @chiroptical!
  • smos-shell: A new package, to run smos commands in the browser without allowing full shell access.
  • smos: It is now possible to hide timestamps. Timestamps of done entries are hidden by default.
  • smos-query: It is now possible to run the work report without any context.
  • smos-query: The work report now also shows overdue waiting entries.
  • smos-calendar-import: The importer no longer fails on malformed URIs.
  • smos-calendar-import: The importer no longer fails on all other sources if any of them fails to parse.
  • smos-calendar-import: The importer now has a failing exit code if one of the sources failed to parse.
  • smos-web-server: The web server now sanitises output from the smos instance to make extra-sure that no non-UTF8 text gets to the client.
  • smos: When pressing ? twice, the help screen now gets closed instead of ending up in a strange empty help screen state.
  • smos-query: The stuck report now also takes timestamps of not-done entries into account.
  • smos-query: The stuck report now takes a --threshold argument.
  • smos-query: The work report now shows overdue stuck projects as well.
  • smos-query: The work report now requires you to configure a timewindow property if you make use of the time filter feature.
  • smos-query: The 'smart' mode for the work command has been removed. It is now the default.


  • Static builds for all executables
  • smos-query: Make AllTime the default period and OneBlock the default block for the agenda command instead of 'Today'. See the Note [Agenda command defaults] in the code for more info. The default block now also changes per period. For year-based periods the default block will by month, for month-based periods the block will be by week, for week-based persiods the default block will be by day.
  • smos-query: The agenda report now shows the "Now" line in the right place at night. #164. Thank you @jecaro!
  • smos: When selecting a timestamp, smos now correctly selects the value instead of the name. #170 Thank you @jecaro!
  • smos-asciinema: This package has been entirely removed and split out to a separate project


  • smos: The first version of the Smos TUI
  • smos-query: The first version of the Smos Query tool
  • smos-single: The first version of the Smos Single tool for creating single-task projects from the command-line
  • smos-archive: The first version of the Smos Arching tool for archiving Smos files
  • smos-asciinema: The first version of the Smos Asciinema tool for recording ascii casts of smos demonstrations
  • smos-calendar-import: The first version of the Smos Calendar Import tool for importing calendars into your smos files
  • smos-convert-org: The first version of the Smos Org-mode conversion tool for converting org-mode files to smos files
  • smos-scheduler: The first version of the Smos Scheduler tool for automatically scheduling recurring projects
  • smos-server: The first version of the Smos API Server
  • smos-sync-client: The first version of the Smos Sync Client for synchronising smos files accross multiple devices
  • smos-web-server: The first version of the Smos Web Server